UNPKG

redis-smq

Version:

A high-performance, reliable, and scalable message queue for Node.js.

42 lines 1.45 kB
import { EventBus } from './event-bus.js'; import { InternalEventBus } from './internal-event-bus.js'; import { eventRoutingPolicies } from './event-routing-policies.js'; import { EEventTarget } from './types/event-bus.js'; export class EventMultiplexer { static instance = null; eventBus; internalBus; constructor() { this.eventBus = EventBus.getInstance(); this.internalBus = InternalEventBus.getInstance(); } static getInstance() { if (!EventMultiplexer.instance) { EventMultiplexer.instance = new EventMultiplexer(); } return EventMultiplexer.instance; } static publish(event, ...args) { const instance = EventMultiplexer.getInstance(); instance.publish(event, ...args); } static shutdown(cb) { EventMultiplexer.instance = null; cb(); } getTargetFor(event) { return eventRoutingPolicies[event] ?? EEventTarget.USER; } publish(event, ...args) { const target = this.getTargetFor(event); if (this.eventBus && (target === EEventTarget.USER || target === EEventTarget.BOTH)) { if (this.eventBus.isRunning()) this.eventBus.emit(event, ...args); } if (target === EEventTarget.SYSTEM || target === EEventTarget.BOTH) { this.internalBus.emit(event, ...args); } } } //# sourceMappingURL=event-multiplexer.js.map