Spaces:
Runtime error
Runtime error
File size: 1,165 Bytes
8df6da4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import { dbg_assert } from "../log.js";
/** @constructor */
export var Connector = function(pair)
{
this.listeners = {};
this.pair = pair;
pair.addEventListener("message", function(e)
{
var data = e.data;
var listeners = this.listeners[data[0]];
for(var i = 0; i < listeners.length; i++)
{
var listener = listeners[i];
listener.fn.call(listener.this_value, data[1]);
}
}.bind(this), false);
};
Connector.prototype.register = function(name, fn, this_value)
{
var listeners = this.listeners[name];
if(listeners === undefined)
{
listeners = this.listeners[name] = [];
}
listeners.push({
fn: fn,
this_value: this_value,
});
};
/**
* Send ("emit") a message
*
* @param {string} name
* @param {*=} value
* @param {*=} transfer_list
*/
Connector.prototype.send = function(name, value, transfer_list)
{
dbg_assert(arguments.length >= 1);
if(!this.pair)
{
return;
}
this.pair.postMessage([name, value], transfer_list);
};
export var init = function(worker)
{
return new Connector(worker);
};
|