From c5d13900ca34a656657762fd1dc5b5a65bcbaf6e Mon Sep 17 00:00:00 2001 From: sbosse Date: Mon, 21 Jul 2025 23:13:47 +0200 Subject: [PATCH] Mon 21 Jul 22:43:21 CEST 2025 --- js/test/agent.js | 103 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 js/test/agent.js diff --git a/js/test/agent.js b/js/test/agent.js new file mode 100644 index 0000000..6775f16 --- /dev/null +++ b/js/test/agent.js @@ -0,0 +1,103 @@ +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 ac = function (param1,param2) { + //var self=this; + // Data State + this.delta={x:0,y:2}; + this.radius=1; + this.param1=param1; + this.param2=param2; + this.x=0; + this.list=[]; + + this.inbound = function(nextdir) { + log(this.delta.y); + switch (nextdir) { + case DIR.NORTH: return this.delta.y<=this.radius; + case DIR.SOUTH: return this.delta.y>=-this.radius; + case DIR.WEST: return this.delta.x>=-this.radius; + case DIR.EAST: return this.delta.x<=this.radius; + } + return false; + }; + + // Activities + this.init = function () { + var res; + this.x=this.param1; + log('init '+this.inbound(DIR.NORTH)); + out(['worker',this.param1*5]); + inp(['worker',any],function (t) {this.x=t[1];}); + }; + this.end = function () { + log('finalize'); + }; + this.act1 = function () { + log('act1'); + log(this.x) + this.x=this.x+1; + this.list.push(this.x); + L( + function () {log (' in loop init'); this.x=5;}, + function () {log (' in loop cond'); return this.x < 7}, + function () {log (' in loop next'); this.x++;}, + [ + function() {log('in loop '+this.x)} + ] + ); + }; + this.act2 = function () { + log('act2'); + log(this.x) + this.x=this.x-5; + trans.add('act2',function(){ return (this.x>10)?'act4':'act3';}); + }; + this.act3 = function () { + log('act3'); + //while (1) {}; + this.x=0; + for(var i=0;i<10000000;i++) {this.x++}; + //this.x=this.param2; + }; + + + this.on = { + error: function (e) { + log('Caught exception '+e); + }, + exit : function () { + log('Terminating.'); + } + }; + // Transition network + this.trans = { + init: function () { + return 'act1'; + }, + act1: function () { + if (this.x>1) return 'act2'; + }, + act2: function () { + if (this.param1==1) return 'act3'; + }, + act4: function () { + return 'end'; + }, + end: function () { + + } + } + // Control State + this.next='init'; +} +var world = Aios.World.World([]); +var node = Aios.Node.Node({id:'myfirstnode'}); +world.add(node); + +var agent1 = Aios.Code.create(ac,[1,1]); +console.log(agent1); +Aios.schedule(agent1);