UNPKG

@barchart/common-node-js

Version:

Common classes, utilities, and functions for building Node.js servers

58 lines (41 loc) 1.25 kB
const log4js = require('log4js'); const Event = require('@barchart/common-js/messaging/Event'); const Publisher = require('./Publisher'); module.exports = (() => { 'use strict'; const logger = log4js.getLogger('common-node/messaging/publishers/LocalPublisher'); class LocalPublisher extends Publisher { constructor(suppressExpressions) { super(suppressExpressions); this._subscriptions = {}; } _publish(messageType, payload) { if (this._subscriptions.hasOwnProperty(messageType)) { this._subscriptions[messageType].fire(payload); } } _subscribe(messageType, handler) { if (!this._subscriptions.hasOwnProperty(messageType)) { this._subscriptions[messageType] = new Event(this); } return this._subscriptions[messageType].register(getEventHandlerForSubscription(handler)); } _onDispose() { Object.keys(this._subscriptions).forEach((key) => { const event = this._subscriptions[key]; event.dispose(); }); this._subscriptions = null; logger.debug('Local publisher disposed'); } toString() { return '[LocalPublisher]'; } } function getEventHandlerForSubscription(handler) { return (data, ignored) => { handler(data); }; } return LocalPublisher; })();