jam/test/test-forkA.js

62 lines
1.1 KiB
JavaScript

// Fork, migration, remote signalling
// Requires test-forkB, too.
Aios.Sig.options.debug.send=true;
port(DIR.IP('http://localhost:6666'))
start();
function ag (options) {
this.child=null;
this.master=null;
this.act = {
init : function () {
this.master=true;
log('Starting.');
sleep(3000);
},
replicate : function () {
log('Replicating...');
this.child=fork();
},
migrate : function () {
var nodes = link(DIR.IP('%'));
log('Migrating to '+nodes[0]);
if (nodes.length) moveto(DIR.NODE(nodes[0]));
},
killing : function () {
log('Killing child...');
kill(this.child);
},
wait : function () {
log('Waiting ...');
if (this.child) sleep(3000); else sleep(1000);
},
end : function () {
log('Terminating.');
kill();
}
}
this.trans = {
init : replicate,
replicate : function () { return this.child?wait:migrate },
migrate : wait,
killing : end,
wait : function () { return this.child?killing:wait },
}
this.next=init;
}
compile(ag);
create('ag',{ },2);