82 lines
2.2 KiB
TypeScript
82 lines
2.2 KiB
TypeScript
/**
|
|
* @author Martin Karkowski
|
|
* @email m.karkowski@zema.de
|
|
* @create date 2021-03-01 15:05:09
|
|
* @modify date 2021-03-01 17:20:19
|
|
* @desc [description]
|
|
*/
|
|
import { EventEmitter } from "events";
|
|
import { getNopeLogger } from "../logger/getLogger";
|
|
import { ICommunicationInterface, IExternalEventMsg, IRequestTaskMsg, IResponseTaskMsg } from "../types/nope/nopeCommunication.interface";
|
|
import { EventLayer, IEmitter } from "./eventLayer";
|
|
|
|
const METHODS: Array<keyof ICommunicationInterface> = [
|
|
"onAurevoir",
|
|
"onBonjour",
|
|
"onNewInstanceGeneratorsAvailable",
|
|
"onNewInstancesAvailable",
|
|
"onNewObservablesAvailable",
|
|
"onNewServicesAvailable",
|
|
"onTaskCancelation",
|
|
];
|
|
|
|
export class DebuggedEventLayer extends EventLayer {
|
|
constructor(
|
|
_emitter: IEmitter = new EventEmitter(),
|
|
subscriptionMode: "individual" | "generic" = "individual",
|
|
resultSharing: "individual" | "generic" = "individual",
|
|
_logger = getNopeLogger("debug-layer", "debug")
|
|
) {
|
|
super(_emitter,subscriptionMode,resultSharing,_logger);
|
|
|
|
const _this = this;
|
|
|
|
// We Subscribe to the defined methods, we want to listen.
|
|
for (const method of METHODS){
|
|
this[method as any]((data) => {
|
|
if (_this._logger){
|
|
_this._logger.debug(method,data);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
async onEvent(
|
|
event: string,
|
|
cb: (data: IExternalEventMsg) => void
|
|
): Promise<void> {
|
|
this._on("event_" + event, cb);
|
|
if (this._logger){
|
|
const _this = this;
|
|
this._on("event_" + event, (data) => {
|
|
_this._logger.debug("received event on", event, data);
|
|
});
|
|
}
|
|
}
|
|
|
|
async onRpcRequest(
|
|
name: string,
|
|
cb: (data: IRequestTaskMsg) => void
|
|
): Promise<void> {
|
|
this._on(name, cb);
|
|
if (this._logger){
|
|
const _this = this;
|
|
this._on(name, (data) => {
|
|
_this._logger.debug("received rpc request",name, data);
|
|
});
|
|
}
|
|
}
|
|
|
|
async onRpcResponse(
|
|
name: string,
|
|
cb: (result: IResponseTaskMsg) => void
|
|
): Promise<void> {
|
|
this._on(name, cb);
|
|
if (this._logger){
|
|
const _this = this;
|
|
this._on(name, (data) => {
|
|
_this._logger.debug("received rpc response",name, data);
|
|
});
|
|
}
|
|
}
|
|
} |