52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								// Simple jamsh test demonstrating lifetime resource control and negotiation
							 | 
						||
| 
								 | 
							
								// with capabilities
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Ports for node negotiation
							 | 
						||
| 
								 | 
							
								var port = Port.unique()
							 | 
						||
| 
								 | 
							
								var rand = Port.unique();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function hello(cap) {
							 | 
						||
| 
								 | 
							
								  this.cap=cap;
							 | 
						||
| 
								 | 
							
								  this.act = {
							 | 
						||
| 
								 | 
							
								    init: function () { 
							 | 
						||
| 
								 | 
							
								      log('START'); 
							 | 
						||
| 
								 | 
							
								      // negotiate more lifetime (default is 2000)
							 | 
						||
| 
								 | 
							
								      log(negotiate('LIFE',10000,this.cap))
							 | 
						||
| 
								 | 
							
								      // if negotiation was successful, we can sleep in peace, else..
							 | 
						||
| 
								 | 
							
								      sleep(5000) 
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    stop: function () { log('STOP'); kill() }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.trans = {
							 | 
						||
| 
								 | 
							
								    init:"stop"
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.on = {
							 | 
						||
| 
								 | 
							
								    error: function (e,arg) { log('Error: '+e) },
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  this.next="init"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								var security = {}
							 | 
						||
| 
								 | 
							
								security[Port.toString(port)]=Port.toString(rand);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// default platform settings
							 | 
						||
| 
								 | 
							
								config({
							 | 
						||
| 
								 | 
							
								  IDLETIME:1000,
							 | 
						||
| 
								 | 
							
								  LIFETIME:2000,
							 | 
						||
| 
								 | 
							
								  // remember the private ports for node negotiation
							 | 
						||
| 
								 | 
							
								  security :security,
							 | 
						||
| 
								 | 
							
								  verbose:3,
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								compile(hello,{verbose:1})
							 | 
						||
| 
								 | 
							
								start()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Capability for lifetime negotation of the agent
							 | 
						||
| 
								 | 
							
								var cap  = Capability(port,Private.encode(0,Rights.NEG_LIFE,rand))
							 | 
						||
| 
								 | 
							
								print(Capability.toString(cap))
							 | 
						||
| 
								 | 
							
								var id1=create(hello,cap)
							 | 
						||
| 
								 | 
							
								var id2=create(hello)
							 | 
						||
| 
								 | 
							
								later(500,function () {
							 | 
						||
| 
								 | 
							
								  print(info('agent',id1).resources)
							 | 
						||
| 
								 | 
							
								  print(info('agent',id2).resources)
							 | 
						||
| 
								 | 
							
								})
							 |