This commit is contained in:
wltsmrz
2013-08-06 04:20:05 +09:00
parent ab5d64ff12
commit eac195ec18

View File

@@ -40,16 +40,17 @@ var sjcl = require('../../../build/sjcl');
Keys for opts: Keys for opts:
trusted : truthy, if remote is trusted
trace trace
maxListeners max_listeners : Set maxListeners for remote; prevents EventEmitter warnings
trusted : truthy, if remote is trusted
max_fee : Maximum acceptable transaction fee
fee_cushion : Extra fee multiplier to account for async fee changes. fee_cushion : Extra fee multiplier to account for async fee changes.
servers : Array of server objects with the following form servers : Array of server objects with the following form
{ {
host: <string>, host: <string>
port: <number>, , port: <number>
secure: <boolean> , secure: <boolean>
} }
Events: Events:
@@ -167,7 +168,7 @@ function Remote(opts, trace) {
}); });
// This is used to remove Node EventEmitter warnings // This is used to remove Node EventEmitter warnings
var maxListeners = opts.maxListeners || 0; var maxListeners = opts.maxListeners || opts.max_listeners || 0;
this._servers.concat(this).forEach(function(emitter) { this._servers.concat(this).forEach(function(emitter) {
emitter.setMaxListeners(maxListeners); emitter.setMaxListeners(maxListeners);
}); });
@@ -646,11 +647,10 @@ Remote.prototype.request_ledger_entry = function (type, callback) {
if (node) { if (node) {
// Emulate fetch of ledger entry. // Emulate fetch of ledger entry.
// console.log('request_ledger_entry: emulating'); // console.log('request_ledger_entry: emulating');
request.emit('success', {
// YYY Missing lots of fields. // YYY Missing lots of fields.
request.emit('success', {
node : node node : node
}); });
bDefault = false; bDefault = false;
} else { // Was not cached. } else { // Was not cached.
// XXX Only allow with trusted mode. Must sync response with advance. // XXX Only allow with trusted mode. Must sync response with advance.
@@ -798,13 +798,21 @@ Remote.prototype.request_account_tx = function (obj, callback) {
request.message.account = obj.account; request.message.account = obj.account;
if (typeof obj.ledger_index_min !== 'undefined') {request.message.ledger_index_min = obj.ledger_index_min;} var props = [
if (typeof obj.ledger_index_max !== 'undefined') {request.message.ledger_index_max = obj.ledger_index_max;} 'ledger_index_min'
if (typeof obj.binary !== 'undefined') {request.message.binary = obj.binary;} , 'ledger_index_max'
if (typeof obj.count !== 'undefined') {request.message.count = obj.count;} , 'binary'
if (typeof obj.descending !== 'undefined') {request.message.descending = obj.descending;} , 'count'
if (typeof obj.offset !== 'undefined') {request.message.offset = obj.offset;} , 'descending'
if (typeof obj.limit !== 'undefined') {request.message.limit = obj.limit;} , 'offset'
, 'limit'
];
props.forEach(function(prop) {
if (obj.hasOwnProperty(prop)) {
request.message[prop] = obj[prop];
}
});
request.callback(callback); request.callback(callback);
@@ -854,6 +862,7 @@ Remote.prototype.request_sign = function (secret, tx_json, callback) {
request.message.secret = secret; request.message.secret = secret;
request.message.tx_json = tx_json; request.message.tx_json = tx_json;
request.callback(callback); request.callback(callback);
return request; return request;
@@ -925,7 +934,6 @@ Remote.prototype._server_prepare_subscribe = function (callback) {
request.callback(callback); request.callback(callback);
// XXX Could give error events, maybe even time out. // XXX Could give error events, maybe even time out.
return request; return request;
@@ -951,9 +959,9 @@ Remote.prototype.ledger_accept = function (callback) {
Remote.prototype.request_account_balance = function (account, current, callback) { Remote.prototype.request_account_balance = function (account, current, callback) {
var request = this.request_ledger_entry('account_root'); var request = this.request_ledger_entry('account_root');
request.account_root(account) request.account_root(account);
.ledger_choose(current) request.ledger_choose(current);
.on('success', function (message) { request.once('success', function (message) {
// If the caller also waits for 'success', they might run before this. // If the caller also waits for 'success', they might run before this.
request.emit('account_balance', Amount.from_json(message.node.Balance)); request.emit('account_balance', Amount.from_json(message.node.Balance));
}); });
@@ -967,9 +975,9 @@ Remote.prototype.request_account_balance = function (account, current, callback)
Remote.prototype.request_account_flags = function (account, current, callback) { Remote.prototype.request_account_flags = function (account, current, callback) {
var request = this.request_ledger_entry('account_root'); var request = this.request_ledger_entry('account_root');
request.account_root(account) request.account_root(account);
.ledger_choose(current) request.ledger_choose(current);
.on('success', function (message) { request.on('success', function (message) {
// If the caller also waits for 'success', they might run before this. // If the caller also waits for 'success', they might run before this.
request.emit('account_flags', message.node.Flags); request.emit('account_flags', message.node.Flags);
}); });
@@ -983,9 +991,9 @@ Remote.prototype.request_account_flags = function (account, current, callback) {
Remote.prototype.request_owner_count = function (account, current, callback) { Remote.prototype.request_owner_count = function (account, current, callback) {
var request = this.request_ledger_entry('account_root'); var request = this.request_ledger_entry('account_root');
request.account_root(account) request.account_root(account);
.ledger_choose(current) request.ledger_choose(current);
.on('success', function (message) { request.on('success', function (message) {
// If the caller also waits for 'success', they might run before this. // If the caller also waits for 'success', they might run before this.
request.emit('owner_count', message.node.OwnerCount); request.emit('owner_count', message.node.OwnerCount);
}); });
@@ -1097,10 +1105,11 @@ Remote.prototype.account_seq_cache = function (account, current, callback) {
if (!request) { if (!request) {
// console.log('starting: %s', account); // console.log('starting: %s', account);
request = self.request_ledger_entry('account_root') request = self.request_ledger_entry('account_root');
.account_root(account) request.account_root(account);
.ledger_choose(current) request.ledger_choose(current);
.on('success', function (message) {
request.once('success', function (message) {
delete account_info.caching_seq_request; delete account_info.caching_seq_request;
var seq = message.node.Sequence; var seq = message.node.Sequence;
@@ -1109,8 +1118,9 @@ Remote.prototype.account_seq_cache = function (account, current, callback) {
// console.log('caching: %s %d', account, seq); // console.log('caching: %s %d', account, seq);
// If the caller also waits for 'success', they might run before this. // If the caller also waits for 'success', they might run before this.
request.emit('success_account_seq_cache', message); request.emit('success_account_seq_cache', message);
}) });
.on('error', function (message) {
request.once('error', function (message) {
// console.log('error: %s', account); // console.log('error: %s', account);
delete account_info.caching_seq_request; delete account_info.caching_seq_request;
@@ -1221,11 +1231,11 @@ Remote.prototype.request_path_find_create = function (src_account, dst_account,
request.message.source_currencies = src_currencies.map(function (ci) { request.message.source_currencies = src_currencies.map(function (ci) {
var ci_new = {}; var ci_new = {};
if ('issuer' in ci) { if (ci.hasOwnProperty('issuer')) {
ci_new.issuer = UInt160.json_rewrite(ci.issuer); ci_new.issuer = UInt160.json_rewrite(ci.issuer);
} }
if ('currency' in ci) { if (ci.hasOwnProperty('currency')) {
ci_new.currency = Currency.json_rewrite(ci.currency); ci_new.currency = Currency.json_rewrite(ci.currency);
} }
@@ -1239,11 +1249,8 @@ Remote.prototype.request_path_find_create = function (src_account, dst_account,
}; };
Remote.prototype.request_path_find_close = function () { Remote.prototype.request_path_find_close = function () {
var self = this;
var request = new Request(this, 'path_find'); var request = new Request(this, 'path_find');
request.message.subcommand = 'close'; request.message.subcommand = 'close';
return request; return request;
}; };