UNPKG

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

85 lines (67 loc) 3.18 kB
Modules.set('server', function() { // imports var Component = Modules.get('Component'); var u = Modules.get('utils'); var port = Modules.get('port'); var DedicatedServer = Modules.get('DedicatedServer'); var backboneController = Modules.get('controllers.backboneController'); var appComponentsInfos = Modules.get('collections.appComponentsInfos'); var debug = Modules.get('debug'); var server = new (Component.extend({ // singleton initialize: function() { this.dedicatedServers = []; // this might be sparse! }, start: function() { // setup incoming messages listening and handling this.listenTo(port, 'client:connect', function() { var clientIndex = this.connect(); port.sendMessage('connected', {clientIndex: clientIndex}); }); this.listenTo(port, 'client:disconnect', function(message) { // disconnect client var details = message.data; this.disconnect(details.clientIndex); }); // setup outgoing messages this.listenTo(backboneController, 'backboneDetected', function(Backbone) { port.sendMessage('backboneDetected'); }); u.each(appComponentsInfos, u.bind(function(appComponentsInfo) { // messages about app component attribute changes this.listenTo(appComponentsInfo, 'change', function(appComponentInfo) { u.each(appComponentInfo.changed, function(attributeValue, attributeName) { port.sendMessage(appComponentsInfo.category+':'+appComponentInfo.index+':change', { attributeName: attributeName }); // (we send only the attribute name for serialization and performance reasons) //debug.log('Attribute ' + attributeName + ' of a ' + appComponentInfo.category + ' has changed: ', attributeValue); }, this); }); }, this)); }, // return the client / dedicated server index connect: function() { var index = this.dedicatedServers.length; var dedicatedServer = new DedicatedServer(index); this.dedicatedServers.push(dedicatedServer); // transform the dedicated server notifications into outgoing messages this.listenTo(dedicatedServer, 'send', function(name, data) { name = 'dedicatedServer:'+index+':' + name; port.sendMessage(name, data); }); return index; }, getDedicatedServer: function(index) { return this.dedicatedServers[index]; }, disconnect: function(index) { var dedicatedServer = this.dedicatedServers[index]; if (dedicatedServer) { this.stopListening(dedicatedServer); dedicatedServer.remove(); delete this.dedicatedServers[index]; } } }))(); return server; });