add barebones NetworkMonitor

This commit is contained in:
Manuel Araoz 2015-02-24 19:22:28 -03:00
parent f5472c815b
commit 71a3227771
4 changed files with 55 additions and 10 deletions

View File

@ -4,7 +4,7 @@ var path = require('path');
var fs = require('fs');
var mkdirp = require('mkdirp');
var rootPath = path.normalize(__dirname + '/..'),
var rootPath = path.normalize(__dirname),
env,
db,
port,

View File

@ -1,5 +1,5 @@
var winston = require('winston');
var config = require('../config/config');
var config = require('../config');
var logger = new winston.Logger({
transports: [
@ -10,4 +10,4 @@ var logger = new winston.Logger({
});
logger.transports.console.level = config.loggerLevel;
module.exports.logger = logger;
module.exports = logger;

View File

@ -2,20 +2,55 @@
var bitcore = require('bitcore');
var Networks = bitcore.Networks;
var p2p = require('bitcore-p2p');
var Promise = require('bluebird');
var $ = bitcore.util.preconditions;
var _ = bitcore.deps._;
var EventEmitter = require('events').EventEmitter;
var util = require('util');
var EventBus = require('./eventbus');
var Peer = p2p.Peer;
var Messages = p2p.Messages;
var logger = require('./logger');
var p2p = require('bitcore-p2p');
function NetworkMonitor(eventBus) {
function NetworkMonitor(eventBus, opts) {
$.checkArgument(eventBus instanceof EventBus);
this.bus = eventBus;
opts = opts || {};
opts.network = opts.network || Networks.defaultNetwork;
opts.host = opts.host || 'localhost';
opts.port = opts.port || Networks.defaultNetwork.port;
var peer = new Peer(opts.host, opts.port, opts.network);
this.peer = peer;
this.setupPeer(peer);
}
util.inherits(NetworkMonitor, EventEmitter);
NetworkMonitor.prototype.setupPeer = function(peer) {
var self = this;
peer.on('ready', function() {
logger.info('NetworkMonitor: connected to the bitcoin network.');
});
peer.on('inv', function(m) {
// TODO only ask for data if tx or block is unknown
peer.sendMessage(new Messages.GetData(m.inventory));
});
peer.on('tx', function(m) {
self.bus.process(m.transaction);
});
peer.on('block', function(m) {
self.bus.process(m.block);
});
};
NetworkMonitor.prototype.start = function() {
this.peer.connect();
};
module.exports = NetworkMonitor;

View File

@ -3,6 +3,7 @@
var chai = require('chai');
var should = chai.should();
var sinon = require('sinon');
var bitcore = require('bitcore');
var NetworkMonitor = require('../lib/networkmonitor');
var EventBus = require('../lib/eventbus');
@ -10,13 +11,22 @@ var util = require('util');
var Promise = require('bluebird');
Promise.longStackTraces();
var bus = sinon.createStubInstance(EventBus);
var bus = new EventBus(); //sinon.createStubInstance(EventBus);
describe('NetworkMonitor', function() {
describe.only('NetworkMonitor', function() {
it.only('instantiate', function() {
this.timeout(10000);
it('instantiate', function() {
var nm = new NetworkMonitor(bus);
should.exist(nm);
});
it('start', function(cb) {
var nm = new NetworkMonitor(bus);
bus.register(bitcore.Transaction, function(tx) {
console.log('new tx: ', tx.id);
});
nm.start();
});
});