From 7100b4be8dca1096c2619cc41b38c9d4ebc8f4c5 Mon Sep 17 00:00:00 2001 From: wltsmrz Date: Thu, 18 Sep 2014 01:41:23 -0700 Subject: [PATCH] Emit server with subscription events --- src/js/ripple/remote.js | 42 ++++++++++++++++++++++------------------- src/js/ripple/server.js | 2 +- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/js/ripple/remote.js b/src/js/ripple/remote.js index 176061d8..0f49b88f 100644 --- a/src/js/ripple/remote.js +++ b/src/js/ripple/remote.js @@ -615,16 +615,16 @@ Remote.prototype._handleMessage = function(message, server) { switch (message.type) { case 'ledgerClosed': - this._handleLedgerClosed(message); + this._handleLedgerClosed(message, server); break; case 'serverStatus': - this._handleServerStatus(message); + this._handleServerStatus(message, server); break; case 'transaction': - this._handleTransaction(message); + this._handleTransaction(message, server); break; case 'path_find': - this._handlePathFind(message); + this._handlePathFind(message, server); break; default: if (this.trace) { @@ -640,7 +640,7 @@ Remote.prototype._handleMessage = function(message, server) { * @param {Object} message */ -Remote.prototype._handleLedgerClosed = function(message) { +Remote.prototype._handleLedgerClosed = function(message, server) { var self = this; // XXX If not trusted, need to verify we consider ledger closed. @@ -659,11 +659,11 @@ Remote.prototype._handleLedgerClosed = function(message) { this._ledger_current_index = message.ledger_index + 1; if (this.isConnected()) { - this.emit('ledger_closed', message); + this.emit('ledger_closed', message, server); } else { this.once('connect', function() { // Delay until server is 'online' - self.emit('ledger_closed', message); + self.emit('ledger_closed', message, server); }); } } @@ -675,8 +675,8 @@ Remote.prototype._handleLedgerClosed = function(message) { * @param {Object} message */ -Remote.prototype._handleServerStatus = function(message) { - this.emit('server_status', message); +Remote.prototype._handleServerStatus = function(message, server) { + this.emit('server_status', message, server); }; /** @@ -685,7 +685,7 @@ Remote.prototype._handleServerStatus = function(message) { * @param {Object} message */ -Remote.prototype._handleTransaction = function(message) { +Remote.prototype._handleTransaction = function(message, server) { var self = this; // XXX If not trusted, need proof. @@ -732,8 +732,8 @@ Remote.prototype._handleTransaction = function(message) { }); } - this.emit('transaction', message); - this.emit('transaction_all', message); + this.emit('transaction', message, server); + this.emit('transaction_all', message, server); }; /** @@ -742,7 +742,7 @@ Remote.prototype._handleTransaction = function(message) { * @param {Object} message */ -Remote.prototype._handlePathFind = function(message) { +Remote.prototype._handlePathFind = function(message, server) { var self = this; // Pass the event to the currently open PathFind object @@ -750,7 +750,7 @@ Remote.prototype._handlePathFind = function(message) { this._cur_path_find.notify_update(message); } - this.emit('path_find_all', message); + this.emit('path_find_all', message, server); }; /** @@ -1524,10 +1524,14 @@ Remote.prototype.requestSubmit = function(callback) { * @api private */ -Remote.prototype._serverPrepareSubscribe = function(callback) { +Remote.prototype._serverPrepareSubscribe = function(server, callback) { var self = this; var feeds = [ 'ledger', 'server' ]; + if (typeof server === 'function') { + callback = server; + } + if (this._transaction_subs) { feeds.push('transactions'); } @@ -1548,7 +1552,7 @@ Remote.prototype._serverPrepareSubscribe = function(callback) { self.emit('random', utils.hexToArray(message.random)); } - self._handleLedgerClosed(message); + self._handleLedgerClosed(message, server); self.emit('subscribed'); }; @@ -2202,7 +2206,7 @@ Remote.prototype.createTransaction = function(type, options) { */ Remote.prototype.feeTx = function(units) { - var server = this._getServer(); + var server = this.getServer(); if (!server) { throw new Error('No connected servers'); @@ -2221,7 +2225,7 @@ Remote.prototype.feeTx = function(units) { */ Remote.prototype.feeTxUnit = function() { - var server = this._getServer(); + var server = this.getServer(); if (!server) { throw new Error('No connected servers'); @@ -2240,7 +2244,7 @@ Remote.prototype.feeTxUnit = function() { */ Remote.prototype.reserve = function(owner_count) { - var server = this._getServer(); + var server = this.getServer(); if (!server) { throw new Error('No connected servers'); diff --git a/src/js/ripple/server.js b/src/js/ripple/server.js index e11fc9c6..b80f0da9 100644 --- a/src/js/ripple/server.js +++ b/src/js/ripple/server.js @@ -409,7 +409,7 @@ Server.prototype.connect = function() { if (ws === self._ws) { self.emit('socket_open'); // Subscribe to events - self._request(self._remote._serverPrepareSubscribe()); + self._request(self._remote._serverPrepareSubscribe(self)); } };