44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
|
'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;
|