diff --git a/libs/stats.js b/libs/stats.js index 9977256..5c31ccb 100644 --- a/libs/stats.js +++ b/libs/stats.js @@ -14,13 +14,6 @@ module.exports = function(logger, portalConfig, poolConfigs){ var redisClients = []; - /*var algoMultipliers = { - 'x11': Math.pow(2, 16), - 'scrypt': Math.pow(2, 16), - 'scrypt-jane': Math.pow(2,16), - 'sha256': Math.pow(2, 32) - };*/ - var canDoStats = true; Object.keys(poolConfigs).forEach(function(coin){ @@ -55,7 +48,6 @@ module.exports = function(logger, portalConfig, poolConfigs){ this.stats = {}; this.statsString = ''; - this.getGlobalStats = function(callback){ var allCoinStats = {}; @@ -76,6 +68,7 @@ module.exports = function(logger, portalConfig, poolConfigs){ var commandsPerCoin = redisComamndTemplates.length; + client.coins.map(function(coin){ redisComamndTemplates.map(function(t){ var clonedTemplates = t.slice(0); @@ -84,6 +77,7 @@ module.exports = function(logger, portalConfig, poolConfigs){ }); }); + client.client.multi(redisCommands).exec(function(err, replies){ if (err){ console.log('error with getting hashrate stats ' + JSON.stringify(err)); @@ -121,6 +115,7 @@ module.exports = function(logger, portalConfig, poolConfigs){ workers: 0, hashrate: 0 }, + algos: {}, pools: allCoinStats }; @@ -143,8 +138,27 @@ module.exports = function(logger, portalConfig, poolConfigs){ coinStats.hashrate = hashratePre / 1e3 | 0; portalStats.global.hashrate += coinStats.hashrate; portalStats.global.workers += Object.keys(coinStats.workers).length; + + /* algorithm specific global stats */ + var algo = coinStats.algorithm; + if (!portalStats.algos.hasOwnProperty(algo)){ + portalStats.algos[algo] = { + workers: 0, + hashrate: 0, + hashrateString: null + }; + } + portalStats.algos[algo].hashrate += coinStats.hashrate; + portalStats.algos[algo].workers += Object.keys(coinStats.workers).length; + delete coinStats.hashrates; delete coinStats.shares; + coinStats.hashrateString = _this.getReadableHashRateString(coinStats.hashrate); + }); + + Object.keys(portalStats.algos).forEach(function(algo){ + var algoStats = portalStats.algos[algo]; + algoStats.hashrateString = _this.getReadableHashRateString(algoStats.hashrate); }); _this.stats = portalStats; @@ -153,5 +167,16 @@ module.exports = function(logger, portalConfig, poolConfigs){ }); }; + + this.getReadableHashRateString = function(hashrate){ + var i = -1; + var byteUnits = [ ' KH', ' MH', ' GH', ' TH', ' PH' ]; + do { + hashrate = hashrate / 1024; + i++; + } while (hashrate > 1024); + return hashrate.toFixed(2) + byteUnits[i]; + }; + };