UNPKG

redis-smq-common

Version:

RedisSMQ Common Library provides many components that are mainly used by RedisSMQ and RedisSMQ Monitor.

74 lines 2.15 kB
import { EventEmitter } from '../event/index.js'; import { EventBusNotConnectedError } from './errors/index.js'; export class EventBus extends EventEmitter { connected = false; constructor() { super(); this.connected = true; } emit(event, ...args) { if (!this.connected) { this.eventEmitter.emit('error', new EventBusNotConnectedError()); return false; } return super.emit(event, ...args); } on(event, listener) { if (event === 'error') { super.on('error', listener); return this; } if (!this.connected) { this.eventEmitter.emit('error', new EventBusNotConnectedError()); return this; } super.on(event, listener); return this; } once(event, listener) { if (event === 'error') { super.once('error', listener); return this; } if (!this.connected) { this.eventEmitter.emit('error', new EventBusNotConnectedError()); return this; } super.once(event, listener); return this; } removeAllListeners(event) { if (event === 'error') { super.removeAllListeners('error'); return this; } if (!this.connected) { this.eventEmitter.emit('error', new EventBusNotConnectedError()); return this; } super.removeAllListeners(event); return this; } removeListener(event, listener) { if (event === 'error') { super.removeListener('error', listener); return this; } if (!this.connected) { this.eventEmitter.emit('error', new EventBusNotConnectedError()); return this; } super.removeListener(event, listener); return this; } shutdown(cb) { if (this.connected) this.connected = false; cb(); } static createInstance(cb) { const instance = new EventBus(); cb(null, instance); } } //# sourceMappingURL=event-bus.js.map