add barebones NetworkMonitor
This commit is contained in:
parent
f5472c815b
commit
71a3227771
@ -4,7 +4,7 @@ var path = require('path');
|
|||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var mkdirp = require('mkdirp');
|
var mkdirp = require('mkdirp');
|
||||||
|
|
||||||
var rootPath = path.normalize(__dirname + '/..'),
|
var rootPath = path.normalize(__dirname),
|
||||||
env,
|
env,
|
||||||
db,
|
db,
|
||||||
port,
|
port,
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
var winston = require('winston');
|
var winston = require('winston');
|
||||||
var config = require('../config/config');
|
var config = require('../config');
|
||||||
|
|
||||||
var logger = new winston.Logger({
|
var logger = new winston.Logger({
|
||||||
transports: [
|
transports: [
|
||||||
@ -10,4 +10,4 @@ var logger = new winston.Logger({
|
|||||||
});
|
});
|
||||||
logger.transports.console.level = config.loggerLevel;
|
logger.transports.console.level = config.loggerLevel;
|
||||||
|
|
||||||
module.exports.logger = logger;
|
module.exports = logger;
|
||||||
|
|||||||
@ -2,20 +2,55 @@
|
|||||||
|
|
||||||
|
|
||||||
var bitcore = require('bitcore');
|
var bitcore = require('bitcore');
|
||||||
|
var Networks = bitcore.Networks;
|
||||||
|
var p2p = require('bitcore-p2p');
|
||||||
var Promise = require('bluebird');
|
var Promise = require('bluebird');
|
||||||
var $ = bitcore.util.preconditions;
|
var $ = bitcore.util.preconditions;
|
||||||
var _ = bitcore.deps._;
|
var _ = bitcore.deps._;
|
||||||
var EventEmitter = require('events').EventEmitter;
|
var EventEmitter = require('events').EventEmitter;
|
||||||
var util = require('util');
|
var util = require('util');
|
||||||
var EventBus = require('./eventbus');
|
var EventBus = require('./eventbus');
|
||||||
|
var Peer = p2p.Peer;
|
||||||
|
var Messages = p2p.Messages;
|
||||||
|
var logger = require('./logger');
|
||||||
|
|
||||||
|
function NetworkMonitor(eventBus, opts) {
|
||||||
var p2p = require('bitcore-p2p');
|
|
||||||
|
|
||||||
function NetworkMonitor(eventBus) {
|
|
||||||
$.checkArgument(eventBus instanceof EventBus);
|
$.checkArgument(eventBus instanceof EventBus);
|
||||||
this.bus = 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);
|
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;
|
module.exports = NetworkMonitor;
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
var chai = require('chai');
|
var chai = require('chai');
|
||||||
var should = chai.should();
|
var should = chai.should();
|
||||||
var sinon = require('sinon');
|
var sinon = require('sinon');
|
||||||
|
var bitcore = require('bitcore');
|
||||||
|
|
||||||
var NetworkMonitor = require('../lib/networkmonitor');
|
var NetworkMonitor = require('../lib/networkmonitor');
|
||||||
var EventBus = require('../lib/eventbus');
|
var EventBus = require('../lib/eventbus');
|
||||||
@ -10,13 +11,22 @@ var util = require('util');
|
|||||||
var Promise = require('bluebird');
|
var Promise = require('bluebird');
|
||||||
Promise.longStackTraces();
|
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);
|
var nm = new NetworkMonitor(bus);
|
||||||
should.exist(nm);
|
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();
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user