46 lines
1.0 KiB
JavaScript
46 lines
1.0 KiB
JavaScript
var weak = require('weak');
|
|
var proto = require('../');
|
|
|
|
var s = (function () {
|
|
var cons = {
|
|
x : function (f, g) {
|
|
setTimeout(function () { f(5) }, 200);
|
|
setTimeout(function () { g(6) }, 400);
|
|
},
|
|
y : 555
|
|
};
|
|
return proto(cons, {
|
|
wrap : function (cb, id) {
|
|
return weak(cb, function () {
|
|
console.log('s.cull(' + id + ')')
|
|
s.cull(id);
|
|
});
|
|
},
|
|
unwrap : function (ref, id) {
|
|
var cb = weak.get(ref);
|
|
return cb || function () {};
|
|
}
|
|
});
|
|
})();
|
|
|
|
var c = proto();
|
|
|
|
s.on('request', c.handle.bind(c));
|
|
c.on('request', s.handle.bind(s));
|
|
|
|
c.on('remote', function (remote) {
|
|
function f (x) { console.log('f(' + x + ')') }
|
|
function g (x) { console.log('g(' + x + ')') }
|
|
remote.x(f, g);
|
|
});
|
|
|
|
s.start();
|
|
c.start();
|
|
|
|
setTimeout(function () {
|
|
// switch on the garbage disposal to full blast:
|
|
var xs = [];
|
|
for (var i = 0; i < 1000 * 1000; i++) xs.push(function () {});
|
|
xs = [];
|
|
}, 1000);
|