redis-smq
Version:
A high-performance, reliable, and scalable message queue for Node.js.
45 lines • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventMultiplexer = void 0;
const event_bus_js_1 = require("./event-bus.js");
const internal_event_bus_js_1 = require("./internal-event-bus.js");
const event_routing_policies_js_1 = require("./event-routing-policies.js");
const event_bus_js_2 = require("./types/event-bus.js");
class EventMultiplexer {
constructor() {
this.eventBus = event_bus_js_1.EventBus.getInstance();
this.internalBus = internal_event_bus_js_1.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) {
var _a;
return (_a = event_routing_policies_js_1.eventRoutingPolicies[event]) !== null && _a !== void 0 ? _a : event_bus_js_2.EEventTarget.USER;
}
publish(event, ...args) {
const target = this.getTargetFor(event);
if (this.eventBus &&
(target === event_bus_js_2.EEventTarget.USER || target === event_bus_js_2.EEventTarget.BOTH)) {
if (this.eventBus.isRunning())
this.eventBus.emit(event, ...args);
}
if (target === event_bus_js_2.EEventTarget.SYSTEM || target === event_bus_js_2.EEventTarget.BOTH) {
this.internalBus.emit(event, ...args);
}
}
}
exports.EventMultiplexer = EventMultiplexer;
EventMultiplexer.instance = null;
//# sourceMappingURL=event-multiplexer.js.map