jam/test/test-singlestep1.js

73 lines
1.4 KiB
JavaScript
Raw Normal View History

2024-08-27 00:15:58 +02:00
// Remote single stepping using RPC (worker)
// jamsh test-singlestep1.js -- 9001
// 9002 9003 ...
var N = 1000, C= 10000, verbose=0;
function ac(options) {
this.options=options;
this.sensor=null;
this.loops=options.loops;
this.act = {
start: function () {
log('Starting .. '+this.options.msg)
},
percept: function () {
rd.try(0,['SENSOR',_],function (t) {
if (t) this.sensor=t[1];
})
},
action : function () {
if (this.options.verbose || (this.loops%1000)==0) log(this.loops,this.sensor);
},
stop: function () {
log('Terminating ..')
kill()
}
}
this.trans = {
start:"percept",
percept: function () {
if (this.sensor!=null) return "action";
else return "stop";
},
action: function () {
return (this.loops--)==0?"stop":"percept";
},
}
this.next="start";
}
var sensor = 0;
provider(function (pat) {
switch (pat[0]) {
case 'SENSOR':
return [pat[0],sensor];
break;
}
});
var agents=[];
for(var i=0;i<N;i++) {
var ag = create(ac,{
loops:C,
msg:'with pace '+i,
verbose:0
},2);
agents.push(ag);
}
Rpc.getreq('udp://localhost:'+(args[0]||9000),function (req,src) {
switch (req.command) {
case 'step':
if (verbose) log('Step')
step(1,true);
return {status:'Ok'}
break;
case 'sensor':
sensor = req.value;
break;
}
},{verbose:1})
start0();