From b28332596bfdb91a0414317f18d1a6c651e1d649 Mon Sep 17 00:00:00 2001 From: cubedro Date: Tue, 26 May 2015 21:45:33 +0300 Subject: [PATCH] changed web3 to async --- lib/node.js | 157 ++++++++++------------------------------------------ 1 file changed, 30 insertions(+), 127 deletions(-) diff --git a/lib/node.js b/lib/node.js index f1f7516..d3fc007 100644 --- a/lib/node.js +++ b/lib/node.js @@ -89,6 +89,7 @@ function Node () this._lastStats = JSON.stringify(this.stats); this._lastFetch = 0; + this._startBlockFetch = 0; this._tries = 0; this._down = 0; @@ -364,26 +365,37 @@ Node.prototype.formatBlock = function (block) Node.prototype.getStatsBlock = function () { + var self = this; + if(this._socket) this._lastStats = JSON.stringify(this.stats); if(this._web3) { - var start = _.now(); - var block = this.getBlock(); + this._startBlockFetch = _.now(); + web3.eth.getBlock('latest', false, function(error, result) { + self.sendStatsBlock(error, result); + }); + } +} - if( block ) +Node.prototype.sendStatsBlock = function (error, block) +{ + if( !error ) + { + if( _.isUndefined(this.stats.block.number) || (!_.isUndefined(block.number) && this.stats.block.number != block.number) ) { - this.stats.block = block; - console.success("==>", "Got block:", chalk.reset.cyan(block.number), 'in', chalk.reset.cyan(_.now() - start, 'ms')); + this.stats.block = this.formatBlock(block); + console.success("==>", "Got block:", chalk.reset.cyan(block.number), 'in', chalk.reset.cyan(_.now() - this._startBlockFetch, 'ms')); this.sendUpdate(); } - else - { - console.error("xx>", "getStatsBlock couldn't fetch block..."); - console.log(block); - } + console.warn("==>", "Got same block:", chalk.reset.cyan(block.number), 'in', chalk.reset.cyan(_.now() - this._startBlockFetch, 'ms')); + } + else + { + console.error("xx>", "getStatsBlock couldn't fetch block..."); + console.error("xx>", error); } } @@ -410,106 +422,24 @@ Node.prototype.getStats = function(forced) }, peers: function (callback) { - async.nextTick(function () { - var peers = null; - var error = null; - - try { - peers = web3.toDecimal(web3.net.peerCount); - } - catch (err) { - console.error('xx>', 'PeerCount failed: ', err); - error = err; - } - - callback(error, peers); - }); + web3.net.getPeerCount(callback); }, pending: function (callback) { - async.nextTick(function () { - try { - web3.eth.getBlockTransactionCount('pending', callback); - } - catch (err) { - console.error('xx>', 'Pending failed: ', err); - callback(err, null); - } - }); + web3.eth.getBlockTransactionCount('pending', callback); }, mining: function (callback) { - async.nextTick(function () { - var mining = null; - var error = null; - - try { - mining = web3.eth.mining; - } - catch (err) { - console.error('xx>', 'Mining failed: ', err); - error = err; - } - - callback(error, mining); - }); + web3.eth.getMining(callback); }, hashrate: function (callback) { - if(self.stats.mining) { - async.nextTick(function () { - var hashrate = null; - var error = null; - - try { - hashrate = web3.eth.hashrate; - } - catch (err) { - console.error('xx>', 'Hashrate failed: ', err); - error = err; - } - - callback(error, hashrate); - }); - } - else { - callback(null, 0); - } + web3.eth.getHashrate(callback); }, gasPrice: function (callback) { - async.nextTick(function () { - var gasPrice = null; - var error = null; - - try { - gasPrice = web3.toBigNumber(web3.eth.gasPrice).toString(10); - } - catch (err) { - console.error('xx>', 'gasPrice failed: ', err); - error = err; - } - - callback(error, gasPrice); - }); - }, - // minerName: function (callback) - // { - // async.nextTick(function () { - // var minerName = null; - // var error = null; - - // try { - // minerName = self.getMinerName(self.stats.block.miner); - // } - // catch (err) { - // console.error('xx>', 'minerName failed: ', err); - // error = err; - // } - - // callback(error, minerName); - // }); - // } + web3.eth.getGasPrice(callback); + } }, function (err, results) { @@ -531,11 +461,11 @@ Node.prototype.getStats = function(forced) if(results.peers !== null) { self.stats.active = true; - self.stats.peers = results.peers; + self.stats.peers = web3.toDecimal(results.peers); self.stats.pending = results.pending; self.stats.mining = results.mining; self.stats.hashrate = results.hashrate; - self.stats.gasPrice = results.gasPrice; + self.stats.gasPrice = web3.toBigNumber(results.gasPrice).toString(10); } else { self.setInactive(); @@ -599,33 +529,6 @@ Node.prototype.getHistory = function (range) }); } -Node.prototype.getMinerName = function(miner) -{ - var result = _.find(this._knownMiners, { miner: miner }); - - if (result !== undefined) - { - return result.name; - } - else - { - if (this._Registrar !== null) - { - var name = this._Registrar.name(miner); - - if(name.length > 0) - { - this._knownMiners.push({ miner: miner, name: name }); - return name; - } - } - - this._knownMiners.push({ miner: miner, name: false }); - } - - return false; -} - Node.prototype.updateBlock = function() { this.getStatsBlock();