redis-smq-common
Version:
RedisSMQ Common Library provides many components that are mainly used by RedisSMQ and RedisSMQ Monitor.
74 lines • 2.15 kB
JavaScript
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