nope-js-node
Version:
NoPE Runtime for Nodejs. For Browser-Support please use nope-browser
75 lines (74 loc) • 2.77 kB
JavaScript
;
/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2021-03-22 19:03:15
* @modify date 2022-01-10 15:56:50
* @desc [description]
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventCommunicationInterface = void 0;
const events_1 = require("events");
const idMethods_1 = require("../../helpers/idMethods");
const index_browser_1 = require("../../logger/index.browser");
const nopeObservable_1 = require("../../observables/nopeObservable");
/**
* A Basic Mirror, used to share the events in a Mirror Style.
* This Layer should not be used directly. this should only
* be extended.
*
* @export
* @class EventMirror
* @implements {ICommunicationMirror}
*/
class EventCommunicationInterface {
/**
* Function which will be used to subscribe Data
*
* @param {(symbol | ValidEventTypesOfMirror)} event The Event to listen to
* @param {(...args: any[]) => void} listener The "Listener" (A Callback, which will be called)
* @memberof EventMirror
*/
async on(eventname, cb) {
var _a;
this._emitter.on(eventname, cb);
if (eventname !== "statusChanged" && ((_a = this._logger) === null || _a === void 0 ? void 0 : _a.enabledFor(index_browser_1.DEBUG))) {
this._emitter.on(eventname, (...args) => {
this._logger.debug("received", "'" + eventname + "'", ...args);
});
}
}
/**
* Function, which will be used to emit data
*
* @param {ValidEventTypesOfMirror} event the name fo the event to emit something
* @param {*} data the data to emit
* @memberof EventMirror
*/
async emit(eventname, data) {
this._emitter.emit(eventname, data);
}
async dispose() {
var _a;
// Disposes the Emitter.
(_a = this._emitter) === null || _a === void 0 ? void 0 : _a.removeAllListeners();
}
/**
* Creates an instance of EventMirror.
* @param {IEmitter} [_emitter=new EventEmitter() as any] The Type of Emitter to use.
* @param {ILogger} [_logger] a Logger
* @memberof EventMirror
*/
constructor(_emitter = new events_1.EventEmitter(), _logger, receivesOwnMessages = true) {
this._emitter = _emitter;
this._logger = _logger;
this.receivesOwnMessages = receivesOwnMessages;
this.connected = new nopeObservable_1.NopeObservable();
this.connected.setContent(true);
this.id = (0, idMethods_1.generateId)();
}
detailListeners(type, listeners) {
throw new Error("Method not implemented.");
}
}
exports.EventCommunicationInterface = EventCommunicationInterface;