refactoring

This commit is contained in:
cubedro 2015-05-05 09:04:27 +03:00
parent f7f0765434
commit 592cd23500
2 changed files with 120 additions and 120 deletions

View File

@ -129,7 +129,7 @@ Node.prototype.checkWeb3Connection = function()
{ {
var self = this; var self = this;
if(!this._web3) if (!this._web3)
{ {
try { try {
var tmp = web3.version.client; var tmp = web3.version.client;
@ -145,11 +145,11 @@ Node.prototype.checkWeb3Connection = function()
return true; return true;
} }
} }
catch(err) catch (err)
{ {
console.error('Web3 connection attempt', chalk.cyan('#' + this._called++), 'failed'); console.error('Web3 connection attempt', chalk.cyan('#' + this._called++), 'failed');
process.nextTick( function() process.nextTick(function ()
{ {
self.checkWeb3Connection(); self.checkWeb3Connection();
}); });
@ -196,7 +196,7 @@ Node.prototype.setupSockets = function()
}) })
.on('history', function (data) .on('history', function (data)
{ {
console.info('wsc', 'Getting history'); console.info('his', 'Got history request');
var reqHistory = self.getHistory( data ); var reqHistory = self.getHistory( data );
@ -242,20 +242,6 @@ Node.prototype.emit = function(message, payload)
} }
} }
Node.prototype.setInactive = function()
{
this.stats.active = false;
this.stats.peers = 0;
this.stats.pending = 0;
this.stats.mining = false;
this.stats.hashrate = 0;
this.stats.gasPrice = 0;
this.stats.miner = false;
this._down++;
return this;
}
Node.prototype.getInfo = function() Node.prototype.getInfo = function()
{ {
console.info('==>', 'Getting info'); console.info('==>', 'Getting info');
@ -280,6 +266,25 @@ Node.prototype.getInfo = function()
return false; return false;
} }
Node.prototype.setInactive = function()
{
this.stats.active = false;
this.stats.peers = 0;
this.stats.pending = 0;
this.stats.mining = false;
this.stats.hashrate = 0;
this.stats.gasPrice = 0;
this.stats.minerName = false;
this._down++;
return this;
}
Node.prototype.setUptime = function()
{
this.stats.uptime = ((this._tries - this._down) / this._tries) * 100;
}
Node.prototype.getBlock = function(number) Node.prototype.getBlock = function(number)
{ {
var block = { var block = {
@ -294,13 +299,7 @@ Node.prototype.getBlock = function(number)
number = "latest"; number = "latest";
try { try {
block = web3.eth.getBlock(number, true); block = this.formatBlock( web3.eth.getBlock(number, true) );
if( block.hash != '?' && !_.isUndefined(block.difficulty) && !_.isUndefined(block.totalDifficulty) )
{
block.difficulty = web3.toDecimal( block.difficulty );
block.totalDifficulty = web3.toDecimal( block.totalDifficulty );
}
} }
catch (err) { catch (err) {
console.error('getBlock(' + chalk.reset.cyan(number) + '):', err); console.error('getBlock(' + chalk.reset.cyan(number) + '):', err);
@ -311,36 +310,42 @@ Node.prototype.getBlock = function(number)
return block; return block;
} }
Node.prototype.getMinerName = function(miner) Node.prototype.formatBlock = function (block)
{ {
var result = _.find(this._knownMiners, { miner: miner }); if( !_.isUndefined(block) && !_.isUndefined(block.number) && block.number >= 0 && !_.isUndefined(block.difficulty) && !_.isUndefined(block.totalDifficulty) )
if (result !== undefined)
{ {
return result.name; block.difficulty = web3.toDecimal( block.difficulty );
} block.totalDifficulty = web3.toDecimal( block.totalDifficulty );
else
{
if (this._Registrar !== null)
{
var name = this._Registrar.name(miner);
if(name.length > 0) return block;
{
this._knownMiners.push({ miner: miner, name: name });
return name;
}
}
this._knownMiners.push({ miner: miner, name: false });
} }
return false; return false;
} }
Node.prototype.uptime = function() Node.prototype.getStatsBlock = function ()
{ {
this.stats.uptime = ((this._tries - this._down) / this._tries) * 100; if(this._socket)
this._lastStats = JSON.stringify(this.stats);
if(this._web3)
{
var start = _.now();
var block = this.getBlock();
if( block )
{
this.stats.block = block;
console.success("==>", "Got block:", chalk.reset.cyan(block.number), 'in', chalk.reset.cyan(_.now() - start, 'ms'));
this.sendUpdate();
}
else
{
console.error("xx>", "getStatsBlock couldn't fetch block...");
console.log(block);
}
}
} }
Node.prototype.getStats = function(forced) Node.prototype.getStats = function(forced)
@ -383,17 +388,13 @@ Node.prototype.getStats = function(forced)
pending: function (callback) pending: function (callback)
{ {
async.nextTick(function () { async.nextTick(function () {
var pending;
try { try {
pending = web3.eth.getBlockTransactionCount('pending'); web3.eth.getBlockTransactionCount('pending', callback);
} }
catch (err) { catch (err) {
console.error('xx>', 'Pending failed: ', err); console.error('xx>', 'Pending failed: ', err);
callback(err, null); callback(err, null);
} }
callback(null, pending);
}); });
}, },
mining: function (callback) mining: function (callback)
@ -414,19 +415,24 @@ Node.prototype.getStats = function(forced)
}, },
hashrate: function (callback) hashrate: function (callback)
{ {
async.nextTick(function () { if(self.stats.mining) {
var hashrate; async.nextTick(function () {
var hashrate;
try { try {
hashrate = web3.eth.hashrate; hashrate = web3.eth.hashrate;
} }
catch (err) { catch (err) {
console.error('xx>', 'Hashrate failed: ', err); console.error('xx>', 'Hashrate failed: ', err);
callback(err, null); callback(err, null);
} }
callback(null, hashrate); callback(null, hashrate);
}); });
}
else {
callback(null, 0);
}
}, },
gasPrice: function (callback) gasPrice: function (callback)
{ {
@ -444,22 +450,22 @@ Node.prototype.getStats = function(forced)
callback(null, gasPrice); callback(null, gasPrice);
}); });
}, },
minerName: function (callback) // minerName: function (callback)
{ // {
async.nextTick(function () { // async.nextTick(function () {
var minerName; // var minerName;
try { // try {
minerName = self.getMinerName(self.stats.block.miner); // minerName = self.getMinerName(self.stats.block.miner);
} // }
catch (err) { // catch (err) {
console.error('xx>', 'minerName failed: ', err); // console.error('xx>', 'minerName failed: ', err);
callback(err, null); // callback(err, null);
} // }
callback(null, minerName); // callback(null, minerName);
}); // });
} // }
}, },
function (err, results) function (err, results)
{ {
@ -476,7 +482,6 @@ Node.prototype.getStats = function(forced)
results.end = _.now(); results.end = _.now();
results.diff = results.end - results.start; results.diff = results.end - results.start;
// console.log('==> Got getStats results: ', results);
console.success('==>', 'Got getStats results in', chalk.reset.cyan(results.diff, 'ms')); console.success('==>', 'Got getStats results in', chalk.reset.cyan(results.diff, 'ms'));
if(results.peers !== null) if(results.peers !== null)
@ -492,38 +497,13 @@ Node.prototype.getStats = function(forced)
self.setInactive(); self.setInactive();
} }
self.uptime(); self.setUptime();
self.sendUpdate(); self.sendUpdate();
}); });
} }
} }
Node.prototype.getStatsBlock = function ()
{
if(this._socket)
this._lastStats = JSON.stringify(this.stats);
if(this._web3)
{
var start = _.now();
var block = this.getBlock();
var end = _.now();
if( !_.isUndefined(block) && !_.isUndefined(block.number) && !_.isUndefined(block.hash) && block.hash !== '?' )
{
console.success("==>", "Got block:", chalk.reset.cyan(block.number), 'in', chalk.reset.cyan(end - start, 'ms'));
this.stats.block = block;
}
else
{
console.error("xx>", "eth", "getStatsBlock: couldn't fetch block...");
}
}
this.sendUpdate();
}
Node.prototype.getHistory = function (range) Node.prototype.getHistory = function (range)
{ {
var history = []; var history = [];
@ -531,25 +511,17 @@ Node.prototype.getHistory = function (range)
console.time('=H=', 'his', 'Got history in'); console.time('=H=', 'his', 'Got history in');
if( _.isUndefined(range) || range === null) if ( _.isUndefined(range) || range === null)
{ interv = _.range(this.stats.block.number - 1, MAX_HISTORY_UPDATE);
interv = {
min: this.stats.block.number - MAX_HISTORY_UPDATE,
max: this.stats.block.number - 1
};
}
if( !_.isUndefined(range.list) ) if (!_.isUndefined(range.list))
{ interv = range.list;
interv = {
min: 0,
max: range.list.length - 1
};
}
for (var i = interv.min; i <= interv.max; i++) console.info('his', 'Getting history from', chalk.reset.cyan(interv[0]), 'to', chalk.reset.cyan(interv[interv.length - 1]));
for (var i = 0; i < interv.length; i++)
{ {
var block = this.getBlock(( !_.isUndefined(range.list) ? range.list[i] : i)); var block = this.getBlock( interv[i] );
if( block !== null && !_.isUndefined(block.number) ) if( block !== null && !_.isUndefined(block.number) )
{ {
@ -562,6 +534,33 @@ Node.prototype.getHistory = function (range)
return history.reverse(); return history.reverse();
} }
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() Node.prototype.updateBlock = function()
{ {
this.getStatsBlock(); this.getStatsBlock();

View File

@ -9,7 +9,8 @@ var signs = [
'xx>', 'xx>',
'===', '===',
'>>>', '>>>',
'xxx' 'xxx',
'=H='
]; ];
var types = [ var types = [