From f2fdfed7e928710f11c8c05cb6a1b3f8b4cfad1c Mon Sep 17 00:00:00 2001 From: Braydon Fuller Date: Wed, 29 Jul 2015 13:36:23 -0400 Subject: [PATCH] Add bus to subcribe to events. --- lib/bus.js | 43 +++++++++++++++++++++++++++++++++++++++++++ lib/node.js | 5 +++++ package.json | 10 +++++----- 3 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 lib/bus.js diff --git a/lib/bus.js b/lib/bus.js new file mode 100644 index 00000000..bb554f1f --- /dev/null +++ b/lib/bus.js @@ -0,0 +1,43 @@ +'use strict'; + +var events = require('events'); +var util = require('util'); + +function Bus(params) { + events.EventEmitter.call(this); + this.db = params.db; +} + +util.inherits(Bus, events.EventEmitter); + +Bus.prototype.subscribe = function(name) { + for (var i = 0; i < this.db.modules; i++) { + var module = this.db.modules[i]; + var events = module.getEvents(); + for (var j = 0; i < events.length; j++) { + var eventName = events[0]; + var subscribeHandler = events[2]; + var params = arguments.slice(1); + if (name === eventName) { + subscribeHandler.apply(events[1], params); + } + } + } +}; + +Bus.prototype.unsubscribe = function(name) { + for (var i = 0; i < this.db.modules; i++) { + var module = this.db.modules[i]; + var events = module.getEvents(); + for (var j = 0; i < events.length; j++) { + var eventName = events[0]; + var unsubscribeHandler = events[3]; + var params = arguments.slice(1); + if (name === eventName) { + unsubscribeHandler.apply(events[1], params); + } + } + } +}; + +module.exports = Bus; diff --git a/lib/node.js b/lib/node.js index 2e219783..00a929bd 100644 --- a/lib/node.js +++ b/lib/node.js @@ -16,6 +16,7 @@ var _ = bitcore.deps._; var $ = bitcore.util.preconditions; var genesis = require('./genesis.json'); var daemon = require('./daemon'); +var Bus = require('./bus'); function Node(config) { BaseNode.call(this, config); @@ -24,6 +25,10 @@ function Node(config) { util.inherits(Node, BaseNode); +Node.prototype.openBus = function() { + return new Bus({db: this.db}); +}; + Node.prototype._loadConfiguration = function(config) { var self = this; this._loadBitcoinConf(config); diff --git a/package.json b/package.json index 1183d515..f6e78ee4 100644 --- a/package.json +++ b/package.json @@ -38,14 +38,14 @@ "bitcoind" ], "dependencies": { + "async": "1.3.0", "bindings": "^1.2.1", - "mkdirp": "0.5.0", - "nan": "1.3.0", - "tiny": "0.0.10", "chainlib": "^0.1.1", "errno": "^0.1.2", - "async": "1.3.0", - "memdown": "^1.0.0" + "memdown": "^1.0.0", + "mkdirp": "0.5.0", + "nan": "1.3.0", + "tiny": "0.0.10" }, "devDependencies": { "benchmark": "1.0.0",