UNPKG

@robotlegsjs/core

Version:

An architecture-based IoC framework for JavaScript/TypeScript

94 lines 3.82 kB
"use strict"; // ------------------------------------------------------------------------------ // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. // // NOTICE: You are permitted to use, modify, and distribute this file // in accordance with the terms of the license agreement accompanying it. // ------------------------------------------------------------------------------ Object.defineProperty(exports, "__esModule", { value: true }); exports.MessageDispatcher = void 0; var MessageRunner_1 = require("./MessageRunner"); var safelyCallBack_1 = require("./safelyCallBack"); /** * Message Dispatcher implementation. */ var MessageDispatcher = /** @class */ (function () { function MessageDispatcher() { /*============================================================================*/ /* Private Properties */ /*============================================================================*/ this._handlers = new Map(); } /*============================================================================*/ /* Public Functions */ /*============================================================================*/ /** * Registers a message handler with a MessageDispatcher. * * @param message The interesting message * @param handler The handler function */ MessageDispatcher.prototype.addMessageHandler = function (message, handler) { var messageHandlers = this._handlers.get(message); if (messageHandlers) { if (messageHandlers.indexOf(handler) === -1) { messageHandlers.push(handler); } } else { this._handlers.set(message, [handler]); } }; /** * Checks whether the MessageDispatcher has any handlers registered for a specific message. * * @param message The interesting message * @return A value of true if a handler of the specified message is registered; false otherwise. */ MessageDispatcher.prototype.hasMessageHandler = function (message) { return this._handlers.has(message); }; /** * Removes a message handler from a MessageDispatcher * * @param message The interesting message * @param handler The handler function */ MessageDispatcher.prototype.removeMessageHandler = function (message, handler) { var messageHandlers = this._handlers.get(message); var index = messageHandlers ? messageHandlers.indexOf(handler) : -1; if (index !== -1) { messageHandlers.splice(index, 1); if (messageHandlers.length === 0) { this._handlers.delete(message); } } }; /** * Dispatches a message into the message flow. * * @param message The interesting message * @param callback The completion callback function * @param reverse Should handlers be called in reverse order */ MessageDispatcher.prototype.dispatchMessage = function (message, callback, reverse) { if (callback === void 0) { callback = null; } if (reverse === void 0) { reverse = false; } var handlers = this._handlers.get(message); if (handlers) { handlers = handlers.concat(); if (!reverse) { handlers.reverse(); } new MessageRunner_1.MessageRunner(message, handlers, callback).run(); } else { if (callback) { safelyCallBack_1.safelyCallBack(callback); } } }; return MessageDispatcher; }()); exports.MessageDispatcher = MessageDispatcher; //# sourceMappingURL=MessageDispatcher.js.map