From 2b5aefd7b48fc76340d734bbe8a07319a062984d Mon Sep 17 00:00:00 2001 From: Matthew Little Date: Mon, 13 Jan 2014 17:39:04 -0700 Subject: [PATCH] example code for new structure --- example/init.js | 139 +++++++++++++++++------------------------------- 1 file changed, 49 insertions(+), 90 deletions(-) diff --git a/example/init.js b/example/init.js index cad6ce3..ffa2ab9 100644 --- a/example/init.js +++ b/example/init.js @@ -1,90 +1,49 @@ -var net = require('net'); -var fs = require('fs'); -var path = require('path'); -var pool = require('../index.js'); -var ShareManager = require('./shareManager.js').ShareManager; - -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'; - - -var authorizeFN = function (ip, workerName, password, cback) { - // Default implementation just returns true - console.log("Athorize ["+ip+"] "+workerName+":"+password); - cback( - null, // error - true, // authorized? - false, // should disconnect user? - 16 // difficulty - ); -} - -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, authorizeFN ); - var shareManager = new ShareManager(coin.pool); - - coins.push(coin); - }); - - }); -}); - - -if (config.blockNotifyListener.enabled){ - console.log("Block listener is enabled, starting server on port " + config.blockNotifyListener.port); - 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() { - console.log('Block notify listener server started on port ' + config.blockNotifyListener.port) - }); -} \ No newline at end of file +var fs = require('fs'); + +var Stratum = require('../index.js'); //require('node-stratum') + + + +var timeLog = function(text, poolName){ + var desc = poolName ? '[' + poolName + '] ' : ''; + var time = new Date().toISOString(); + console.log(time + ': ' + desc + text); +}; + +var config = JSON.parse(fs.readFileSync("config.json")); + + +var stratum = new Stratum(config); +stratum.on('log', function(logText){ + timeLog(logText); +}); + + + +fs.readdirSync('coins').forEach(function(file){ + + var coinOptions = JSON.parse(fs.readFileSync('coins/' + file, {encoding: 'utf8'})); + + var authorizeFN = function (ip, workerName, password, callback) { + // Default implementation just returns true + timeLog(coinOptions.name, "Authorize ["+ip+"] "+workerName+":"+password); + callback({ + error: null, + authorized: true, + disconnect: false + }); + }; + + + var pool = stratum.createPool(coinOptions, authorizeFN); + pool.on('share', function(isValid, data){ + if (isValid) + timeLog(coinOptions.name, "A new Valid share from " + data.client.workerName + " has arrived! - " + data.headerHex); + else + timeLog(coinOptions.name, "Invalid share form " + data.client.workerName + " ErrorCode: " + data.errorCode + " ErrorDescription: " + data.errorDescription); + }).on('log', function(logText){ + timeLog(coinOptions.name, logText); + }); + +}); +