Changeset View
Changeset View
Standalone View
Standalone View
support/aphlict/server/lib/AphlictAdminServer.js
| Show All 16 Lines | construct: function(server) { | ||||
| server.on('request', JX.bind(this, this._onrequest)); | server.on('request', JX.bind(this, this._onrequest)); | ||||
| this._server = server; | this._server = server; | ||||
| this._clientServers = []; | this._clientServers = []; | ||||
| }, | }, | ||||
| properties: { | properties: { | ||||
| clientServers: null, | clientServers: null, | ||||
| logger: null, | logger: null, | ||||
| peerList: null | |||||
| }, | }, | ||||
| members: { | members: { | ||||
| _messagesIn: null, | _messagesIn: null, | ||||
| _messagesOut: null, | _messagesOut: null, | ||||
| _server: null, | _server: null, | ||||
| _startTime: null, | _startTime: null, | ||||
| ▲ Show 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | _onrequest: function(request, response) { | ||||
| var msg = JSON.parse(body); | var msg = JSON.parse(body); | ||||
| self.log( | self.log( | ||||
| 'Received notification (' + instance + '): ' + | 'Received notification (' + instance + '): ' + | ||||
| JSON.stringify(msg)); | JSON.stringify(msg)); | ||||
| ++self._messagesIn; | ++self._messagesIn; | ||||
| try { | try { | ||||
| self._transmit(instance, msg); | self._transmit(instance, msg, response); | ||||
| response.writeHead(200, {'Content-Type': 'text/plain'}); | |||||
| } catch (err) { | } catch (err) { | ||||
| self.log( | self.log( | ||||
| '<%s> Internal Server Error! %s', | '<%s> Internal Server Error! %s', | ||||
| request.socket.remoteAddress, | request.socket.remoteAddress, | ||||
| err); | err); | ||||
| response.writeHead(500, 'Internal Server Error'); | response.writeHead(500, 'Internal Server Error'); | ||||
| } | } | ||||
| } catch (err) { | } catch (err) { | ||||
| ▲ Show 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | _handleStatusRequest: function(request, response, instance) { | ||||
| response.writeHead(200, {'Content-Type': 'application/json'}); | response.writeHead(200, {'Content-Type': 'application/json'}); | ||||
| response.write(JSON.stringify(server_status)); | response.write(JSON.stringify(server_status)); | ||||
| response.end(); | response.end(); | ||||
| }, | }, | ||||
| /** | /** | ||||
| * Transmits a message to all subscribed listeners. | * Transmits a message to all subscribed listeners. | ||||
| */ | */ | ||||
| _transmit: function(instance, message) { | _transmit: function(instance, message, response) { | ||||
| var peer_list = this.getPeerList(); | |||||
| message = peer_list.addFingerprint(message); | |||||
| if (message) { | |||||
| var lists = this.getListenerLists(instance); | var lists = this.getListenerLists(instance); | ||||
| for (var ii = 0; ii < lists.length; ii++) { | for (var ii = 0; ii < lists.length; ii++) { | ||||
| var list = lists[ii]; | var list = lists[ii]; | ||||
| var listeners = list.getListeners(); | var listeners = list.getListeners(); | ||||
| this._transmitToListeners(list, listeners, message); | this._transmitToListeners(list, listeners, message); | ||||
| } | } | ||||
| peer_list.broadcastMessage(instance, message); | |||||
| } | |||||
| // Respond to the caller with our fingerprint so it can stop sending | |||||
| // us traffic we don't need to know about if it's a peer. In particular, | |||||
| // this stops us from broadcasting messages to ourselves if we appear | |||||
| // in the cluster list. | |||||
| var receipt = { | |||||
| fingerprint: this.getPeerList().getFingerprint() | |||||
| }; | |||||
| response.writeHead(200, {'Content-Type': 'application/json'}); | |||||
| response.write(JSON.stringify(receipt)); | |||||
| }, | }, | ||||
| _transmitToListeners: function(list, listeners, message) { | _transmitToListeners: function(list, listeners, message) { | ||||
| for (var ii = 0; ii < listeners.length; ii++) { | for (var ii = 0; ii < listeners.length; ii++) { | ||||
| var listener = listeners[ii]; | var listener = listeners[ii]; | ||||
| if (!listener.isSubscribedToAny(message.subscribers)) { | if (!listener.isSubscribedToAny(message.subscribers)) { | ||||
| continue; | continue; | ||||
| Show All 22 Lines | |||||