Fixed the code that was checking for new blocks. Removed jobId from the constructor arguments of BlockTemplate and created a setter Instead. Added "start" emit event from "Pool" that is going to be used by the polling block submit handler
87 lines
2.6 KiB
JavaScript
87 lines
2.6 KiB
JavaScript
var net = require('net');
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
|
|
var pool = require('./pool.js');
|
|
|
|
var logRef = console.log;
|
|
console.log = function(s){
|
|
var time = new Date().toISOString();
|
|
logRef(time + ': ' + s);
|
|
};
|
|
|
|
|
|
var config = JSON.parse(fs.readFileSync("config.json"));
|
|
|
|
|
|
function Coin(options){
|
|
this.options = options;
|
|
}
|
|
Coin.prototype = {};
|
|
|
|
var coins = [];
|
|
|
|
var confFolder = 'coins';
|
|
|
|
fs.readdir(confFolder, function(err, files){
|
|
if (err) throw err;
|
|
files.forEach(function(file){
|
|
var filePath = confFolder + '/' + file;
|
|
if (path.extname(filePath) !== '.json') return;
|
|
fs.readFile(filePath, {encoding: 'utf8'}, function(err, data){
|
|
if (err) throw err;
|
|
var coinJson = JSON.parse(data)
|
|
var coin = new Coin(coinJson);
|
|
console.log('Starting pool for ' + coin.options.name);
|
|
coin.pool = new pool(coin);
|
|
coins.push(coin);
|
|
if ( ! config.blockNotifyListener.enabled ) {
|
|
// as soon as the pool is started we start polling
|
|
var pollingTime = typeof(config.blockPollingTime) === 'undefined' ? 5000 : parseInt(config.blockPollingTime, 10);
|
|
coin.pool.on('started', function() {
|
|
var curPool = this;
|
|
console.log("STARTED?");
|
|
setInterval(
|
|
function() {
|
|
curPool.processBlockPolling();
|
|
},
|
|
pollingTime
|
|
);
|
|
});
|
|
}
|
|
});
|
|
|
|
});
|
|
});
|
|
|
|
|
|
if (config.blockNotifyListener.enabled){
|
|
console.log("ENABLED");
|
|
var blockNotifyServer = net.createServer(function(c) {
|
|
console.log('server connected');
|
|
var data = '';
|
|
c.on('data', function(d){
|
|
console.log('got blocknotify data');
|
|
data += d;
|
|
if (data.slice(-1) === '\n'){
|
|
c.end();
|
|
}
|
|
});
|
|
c.on('end', function() {
|
|
console.log(data);
|
|
|
|
var message = JSON.parse(data);
|
|
if (message.password === config.blockNotifyListener.password){
|
|
coins.forEach(function(coin){
|
|
if (coin.options.symbol === message.coin){
|
|
coin.pool.processBlockNotify(message.blockHash);
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
|
|
console.log('server disconnected');
|
|
});
|
|
});
|
|
blockNotifyServer.listen(config.blockNotifyListener.port, function() {});
|
|
}
|