jam/js/test/agent5.js

95 lines
2.0 KiB
JavaScript

global.TOP='/home/sbosse/proj/jam/js';
require(TOP+'/top/module')([process.cwd(),TOP]);
var Io = Require('com/io');
var Aios = Require('jam/aios');
var Nav = Require('com/nav');
Aios.lock();
var ac = function (param1,param2) {
//var self=this;
// Data State
this.param1=param1;
this.param2=param2;
this.x=0;
this.list=[];
// Activities
this.init = function () {
var res;
this.x=-1;
log('init');
};
this.end = function () {
log('finalize');
log(this.x)
kill();
};
this.act1 = function () {
log('act1');
out(['worker',this.param1]);
};
this.act2 = function () {
log('act2');
if (this.param1==1) move(DIR.EAST);
if (this.param1==2) move(DIR.WEST);
};
this.act3 = function () {
log('act3');
inp(['worker',this.param2],function (t) {this.x=t[1];});
};
this.act4 = function () {
log('act4');
this.x++;
};
this.act4 = function () {
//log('act4 '+this.x+' '+this.process.consumed);
log('act4 '+this.x);
this.x++;
};
this.on = {
error : function (e) {
log('Caught exception '+e);
},
exit : function () {
log('Terminating.');
}
};
// Transition network
this.trans = {
init: function () {
return 'act1';
},
act1: function () {
return 'act2';
},
act2: function () {
return 'act3';
},
act3: function () {
return 'act4';
},
act4: function () {
return 'act4';
},
end: function () {
}
}
// Control State
this.next='init';
}
var world = Aios.World.World([],'My World');
var node1 = Aios.Node.Node({id:'N01',position:{x:1,y:1}});
var node2 = Aios.Node.Node({id:'N02',position:{x:2,y:1}});
world.add(node1);
world.add(node2);
world.connect(Aios.DIR.EAST,node1,node2);
var agent1 = Aios.Code.createOn(node1,ac,[1,2]);
var agent2 = Aios.Code.createOn(node2,ac,[2,1]);
Aios.config({iterations:10});
Aios.loop();
console.log(Aios.current.world.print(true))
Nav.Navigator(Aios.current.world);