electron-devtools-vendor
Version:
<div align="center"> <h2>electron-devtools-vendor</h2> <img alt="MIT" src="https://img.shields.io/github/license/BlackHole1/electron-devtools-vendor?color=9cf&style=flat-square"> <img alt="GitHub repo size" src="https://img.shields.io/github/r
60 lines (47 loc) • 1.74 kB
JavaScript
// Server dedicated to a single client
Modules.set('DedicatedServer', function() {
// imports
var Component = Modules.get('Component');
var DedicatedServer = Component.extend({
// setted by the server on registration
index: undefined,
initialize: function(index) {
this.index = index;
this.readers = [];
},
// add the reader and return its index, which can be used to retrieve it.
registerReader: function(reader) {
var readerIndex = this.readers.length;
reader.index = readerIndex;
this.readers.push(reader);
// re-emit the reader notifications by prepending its index in the notification name
this.listenTo(reader, 'send', function(name, data) {
name = 'reader:'+readerIndex+':' + name;
this.send(name, data);
});
return readerIndex;
},
getReader: function(readerIndex) {
return this.readers[readerIndex];
},
unregisterReader: function(readerIndex) {
var reader = this.readers[readerIndex];
if (reader) {
this.stopListening(reader);
reader.remove();
delete this.readers[readerIndex];
}
},
send: function(name, data) {
this.trigger('send', name, data);
},
remove: function() {
for (var i=0, l=this.readers.length; i<l; i++) {
// note: the array might be sparse
this.unregisterReader(i);
}
return this.__super.remove.apply(this, arguments);
}
});
return DedicatedServer;
});