z-nomp/libs/shareProcessor.js

61 lines
1.8 KiB
JavaScript
Raw Normal View History

var redis = require('redis');
module.exports = function(logger, poolConfigs){
2014-03-03 12:51:11 -08:00
2014-03-04 12:24:02 -08:00
var dbConnections = (function(){
var connections = {};
Object.keys(poolConfigs).forEach(function(coin) {
var config = poolConfigs[coin];
if (!config.shareProcessing || !config.shareProcessing.internal || !config.shareProcessing.internal.enabled)
return;
var redisConfig = config.shareProcessing.internal.redis;
function connect(){
var connection = connections[coin] = redis.createClient(redisConfig.port, redisConfig.host);
connection.on('error', function(err){
logger.logError('shareProcessor', 'redis', coin +
' - redis client had an error: ' + JSON.stringify(err))
});
connection.on('end', function(){
logger.logWarning('shareProcessor', 'redis', coin +
' - connection to redis database as been ended');
connect();
});
}
connect();
});
})();
2014-03-03 12:51:11 -08:00
this.handleDifficultyUpdate = function(data){
var coin = data.coin;
var poolConfig = poolConfigs[coin];
};
2014-03-03 12:51:11 -08:00
this.handleShare = function(data){
2014-03-04 12:24:02 -08:00
if ((!data.coin in dbConnections)) return;
if (!data.isValidShare) return;
var connection = dbConnections[data.coin];
var shareData = data.share;
var coin = data.coin;
2014-03-03 12:51:11 -08:00
var poolConfig = poolConfigs[coin];
2014-03-04 12:24:02 -08:00
connection.hincrby([coin + ':' + shareData.height, shareData.worker, shareData.difficulty], function(error, result){
if (error)
logger.logError('shareProcessor', 'redis', 'could not store worker share')
});
2014-03-03 12:51:11 -08:00
};
this.handleBlock = function(data){
//
};
};