Tue 27 Aug 00:13:11 CEST 2024
This commit is contained in:
		
							parent
							
								
									86565d3946
								
							
						
					
					
						commit
						f7fcad9ab0
					
				
							
								
								
									
										108
									
								
								demo/sejam2/simple/node.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								demo/sejam2/simple/node.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,108 @@
 | 
			
		|||
// Sample node agent
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  level 3 agents have access to extended simu object:
 | 
			
		||||
  {changeVisual:function(),
 | 
			
		||||
   chat:{..},
 | 
			
		||||
   clear:function(),
 | 
			
		||||
   createNode:function(),
 | 
			
		||||
   createOn:function(),
 | 
			
		||||
   deleteNode:function(),
 | 
			
		||||
   event:{..},
 | 
			
		||||
   get:function(),
 | 
			
		||||
   getNode:function(),
 | 
			
		||||
   getVisual:function(),
 | 
			
		||||
   getStats:function(),
 | 
			
		||||
   getSteps:function(),
 | 
			
		||||
   load:function(),
 | 
			
		||||
   log:function(),
 | 
			
		||||
   inspect:function(),
 | 
			
		||||
   model:function(),
 | 
			
		||||
   message:function(),
 | 
			
		||||
   move:function(nodeid,dx,dy,dz?),
 | 
			
		||||
   moveTo:function(nodeid,x,y,z?),
 | 
			
		||||
   network:{..},
 | 
			
		||||
   ofJSON:function(),
 | 
			
		||||
   options:{..},
 | 
			
		||||
   parameter:function(),
 | 
			
		||||
   position:function(),
 | 
			
		||||
   print:function(),
 | 
			
		||||
   save:function(),
 | 
			
		||||
   set:function(),
 | 
			
		||||
   start:function(),
 | 
			
		||||
   stat:function(),
 | 
			
		||||
   stop:function(),
 | 
			
		||||
   toJSON:function(),
 | 
			
		||||
   time:function(),
 | 
			
		||||
   utime:function(),
 | 
			
		||||
   csv:{..},
 | 
			
		||||
   db:{..},
 | 
			
		||||
   sql:{..},
 | 
			
		||||
   units:{..},
 | 
			
		||||
   phy:{..},
 | 
			
		||||
   simuPhy:{..}
 | 
			
		||||
} 
 | 
			
		||||
  
 | 
			
		||||
nodeid: node[<nodename>] !!!
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
function (options) {
 | 
			
		||||
  this.location={x:options.x,y:options.y,z:options.z};
 | 
			
		||||
  this.mynode=none;
 | 
			
		||||
  this.sensor=0;
 | 
			
		||||
  this.child=none;
 | 
			
		||||
  this.parameter=options.parameter;
 | 
			
		||||
  
 | 
			
		||||
  this.act = {
 | 
			
		||||
    init: function () {
 | 
			
		||||
      this.mynode=myNode();
 | 
			
		||||
      log('Starting at '+this.location.x+','+this.location.y+' on node '+this.mynode);
 | 
			
		||||
      log('My id is '+me())
 | 
			
		||||
      log('My node id is '+myNode())
 | 
			
		||||
      log('My level is '+myLevel())
 | 
			
		||||
      log(negotiate('?'))
 | 
			
		||||
      log('My secret is '+this.parameter.mysecret)
 | 
			
		||||
      log('My moving direction is'+this.parameter.dir)
 | 
			
		||||
    },
 | 
			
		||||
    percept: function () {
 | 
			
		||||
      // get all connected nodes
 | 
			
		||||
      this.sensor=link(DIR.PATH('*'));
 | 
			
		||||
      log(this.sensor)
 | 
			
		||||
      // here we have pixel units!!!
 | 
			
		||||
      this.location=myPosition()
 | 
			
		||||
      log('My position is '+simu.inspect(this.location))
 | 
			
		||||
      // nodeid: node[<nodename>] !!!
 | 
			
		||||
      simu.moveTo('node['+myNode()+']',this.location.x+10,this.location.y+10)
 | 
			
		||||
    },
 | 
			
		||||
    
 | 
			
		||||
    service : function () {
 | 
			
		||||
      if (random(1,1000)>950) {
 | 
			
		||||
        log('deleteNode '+myNode())
 | 
			
		||||
        simu.deleteNode(myNode()) // nodeid only!
 | 
			
		||||
      }
 | 
			
		||||
      if (random(1,1000)>950 && this.sensor) {
 | 
			
		||||
        var node = random(this.sensor)
 | 
			
		||||
        log('sendto '+node)
 | 
			
		||||
        // send signal to all agents on specified node which are listening to the signal
 | 
			
		||||
        sendto(DIR.NODE(node),'HEYOU',random(1,100))
 | 
			
		||||
      }       
 | 
			
		||||
    },
 | 
			
		||||
    
 | 
			
		||||
    wait: function () {
 | 
			
		||||
      sleep(random(1,200)); // don't call sleep(0), blocks until wakeup!
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  this.trans = {
 | 
			
		||||
    init: percept,
 | 
			
		||||
    percept: service,
 | 
			
		||||
    service: wait,
 | 
			
		||||
    wait: percept
 | 
			
		||||
  }
 | 
			
		||||
  this.on = {
 | 
			
		||||
    HEYOU: function (arg,fromAgent,fromNode) {
 | 
			
		||||
      log('Got HEYOU ('+arg+') from agent '+fromAgent+' on node '+fromNode)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  this.next='init';
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user