refactoring
This commit is contained in:
parent
f7f0765434
commit
592cd23500
217
lib/node.js
217
lib/node.js
@ -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) )
|
||||||
|
{
|
||||||
|
block.difficulty = web3.toDecimal( block.difficulty );
|
||||||
|
block.totalDifficulty = web3.toDecimal( block.totalDifficulty );
|
||||||
|
|
||||||
if (result !== undefined)
|
return block;
|
||||||
{
|
|
||||||
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;
|
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,6 +415,7 @@ Node.prototype.getStats = function(forced)
|
|||||||
},
|
},
|
||||||
hashrate: function (callback)
|
hashrate: function (callback)
|
||||||
{
|
{
|
||||||
|
if(self.stats.mining) {
|
||||||
async.nextTick(function () {
|
async.nextTick(function () {
|
||||||
var hashrate;
|
var hashrate;
|
||||||
|
|
||||||
@ -427,6 +429,10 @@ Node.prototype.getStats = function(forced)
|
|||||||
|
|
||||||
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();
|
||||||
|
@ -9,7 +9,8 @@ var signs = [
|
|||||||
'xx>',
|
'xx>',
|
||||||
'===',
|
'===',
|
||||||
'>>>',
|
'>>>',
|
||||||
'xxx'
|
'xxx',
|
||||||
|
'=H='
|
||||||
];
|
];
|
||||||
|
|
||||||
var types = [
|
var types = [
|
||||||
|
Loading…
Reference in New Issue
Block a user