From 874f28a519be11fd2b5242d6f38cef4c723aa61f Mon Sep 17 00:00:00 2001 From: Darren Date: Wed, 21 Nov 2012 12:10:26 +0000 Subject: [PATCH] Modules object now using it's prototype; Typo fixes --- server/kiwi.js | 2 +- server/modules.js | 85 ++++++++++++++++++++++++----------------------- 2 files changed, 45 insertions(+), 42 deletions(-) diff --git a/server/kiwi.js b/server/kiwi.js index 9e716a0..91b204e 100755 --- a/server/kiwi.js +++ b/server/kiwi.js @@ -59,7 +59,7 @@ if ((!global.config.servers) || (global.config.servers.length < 1)) { // Create a plugin interface global.modules = new modules.Publisher(); -// Register as the active imterfac +// Register as the active interface modules.registerPublisher(global.modules); require('../server_modules/example.js'); diff --git a/server/modules.js b/server/modules.js index 3961785..73d4553 100644 --- a/server/modules.js +++ b/server/modules.js @@ -12,7 +12,7 @@ function Publisher (obj) { util.inherits(EventPublisher, events.EventEmitter); return new EventPublisher(); -}; +} // Register an already created Publisher() as the active instance @@ -22,68 +22,71 @@ function registerPublisher (obj) { -function Module (module_name) { - // Holder for all the bound events by this module - var bound_events = {}; +/** + * Module object + * To be created by modules to bind to server events + */ +function Module (module_name) {} - // Handy function to be a little more consistant with EventEmitter - this._events = function () { - return bound_events; - }; +// Holder for all the bound events by this module +Module.prototype._events = {}; - // Keep track of this modules events and bind - this.subscribe = function (event_name, fn) { - bound_events[event_name] = bound_events[event_name] || []; - bound_events[event_name].push(fn); - global.modules.on(event_name, fn); - }; +// Keep track of this modules events and bind +Module.prototype.subscribe = function (event_name, fn) { + this._events[event_name] = this._events[event_name] || []; + this._events[event_name].push(fn); + active_publisher.on(event_name, fn); +}; - // Keep track of this modules events and bind once - this.once = function (event_name, fn) { - bound_events[event_name] = bound_events[event_name] || []; - bound_events[event_name].push(fn); - global.modules.once(event_name, fn); - }; +// Keep track of this modules events and bind once +Module.prototype.once = function (event_name, fn) { + this._events[event_name] = this._events[event_name] || []; + this._events[event_name].push(fn); + + active_publisher.once(event_name, fn); +}; - // Remove any events by this module only - this.unsubscribe = function (event_name, fn) { - var idx; +// Remove any events by this module only +Module.prototype.unsubscribe = function (event_name, fn) { + var idx; - if (typeof event_name === 'undefined') { - // Remove all events - bound_events = []; + if (typeof event_name === 'undefined') { + // Remove all events + this._events = []; - } else if (typeof fn === 'undefined') { - // Remove all of 1 event type - delete bound_events[event_name]; + } else if (typeof fn === 'undefined') { + // Remove all of 1 event type + delete this._events[event_name]; - } else { - // Remove a single event + callback - for (idx in (bound_events[event_name] || [])) { - if (bound_events[event_name][idx] === fn) { - delete bound_events[event_name][idx]; - } + } else { + // Remove a single event + callback + for (idx in (this._events[event_name] || [])) { + if (this._events[event_name][idx] === fn) { + delete this._events[event_name][idx]; } } + } - global.modules.removeListener(event_name, fn); - }; + active_publisher.removeListener(event_name, fn); +}; - // Clean up anything used by this module - this.dispose = function () { - this.unsubscribe(); - }; +// Clean up anything used by this module +Module.prototype.dispose = function () { + this.unsubscribe(); }; + + + module.exports = { // Objects Module: Module, -- 2.25.1