mapbox-gl
Version:
A WebGL interactive maps library
43 lines (35 loc) • 1.18 kB
JavaScript
;
var Actor = require('../actor');
var WebWorkify = require('webworkify');
module.exports = Dispatcher;
function Dispatcher(length, parent) {
this.actors = [];
this.currentActor = 0;
for (var i = 0; i < length; i++) {
var worker = new WebWorkify(require('../../source/worker'));
var actor = new Actor(worker, parent);
actor.name = "Worker " + i;
this.actors.push(actor);
}
}
Dispatcher.prototype = {
broadcast: function(type, data) {
for (var i = 0; i < this.actors.length; i++) {
this.actors[i].send(type, data);
}
},
send: function(type, data, callback, targetID, buffers) {
if (typeof targetID !== 'number' || isNaN(targetID)) {
// Use round robin to send requests to web workers.
targetID = this.currentActor = (this.currentActor + 1) % this.actors.length;
}
this.actors[targetID].send(type, data, callback, buffers);
return targetID;
},
remove: function() {
for (var i = 0; i < this.actors.length; i++) {
this.actors[i].target.terminate();
}
this.actors = [];
}
};