ajsfw
Version:
Ajs Framework
48 lines (47 loc) • 2.18 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var logger = require("ajsfw/dbg/logger");
var utils = require("ajsfw/utils");
var Notifier = (function () {
function Notifier() {
var listeners = [];
for (var _i = 0; _i < arguments.length; _i++) {
listeners[_i] = arguments[_i];
}
logger.log(logger.LogType.Constructor, 0, "ajs.events", this);
this.__listeners = [];
for (var i = 0; i < listeners.length; i++) {
this.__listeners.push(listeners[i]);
}
logger.log(logger.LogType.Exit, 0, "ajs.events", this);
}
Notifier.prototype.subscribe = function (listener) {
logger.log(logger.LogType.Enter, 0, "ajs.events", this);
if (this.__listeners.indexOf(listener) === -1) {
this.__listeners.push(listener);
}
logger.log(logger.LogType.Info, 0, "ajs.events", this, "Registered subscribers: " + this.__listeners.length, this.__listeners);
logger.log(logger.LogType.Exit, 0, "ajs.events", this);
};
Notifier.prototype.unsubscribe = function (listener) {
logger.log(logger.LogType.Enter, 0, "ajs.events", this);
if (this.__listeners.indexOf(listener) !== -1) {
this.__listeners.splice(this.__listeners.indexOf(listener));
}
logger.log(logger.LogType.Info, 0, "ajs.events", this, "Registered subscribers: " + this.__listeners.length, this.__listeners);
logger.log(logger.LogType.Exit, 0, "ajs.events", this);
};
Notifier.prototype.notify = function (sender, data) {
logger.log(logger.LogType.Enter, 0, "ajs.events", this);
logger.log(logger.LogType.Info, 0, "ajs.events", this, "Notifying subscribers. Sender: " + utils.getClassName(sender), sender, data);
for (var i = 0; i < this.__listeners.length; i++) {
var result = this.__listeners[i](sender, data);
if (!result) {
return;
}
}
logger.log(logger.LogType.Exit, 0, "ajs.events", this);
};
return Notifier;
}());
exports.Notifier = Notifier;