exthos
Version:
stream processing in nodejs using the power of golang
43 lines (38 loc) • 1.34 kB
text/typescript
import { Stream } from "../stream/stream.js";
import { Engine } from "./engine.js";
let streamErrorCounter: { [streamID: string]: number } = {}; // streamID to count
/**
* handles events generated by exthos modules
* USAGE: `engine.onAny(defaultEngineEventHandler)`
* @param eventName
* @param eventObj
*/
// (event: string | string[], ...values: any[]): void;
function defaultEngineEventHandler(
this: Engine,
event: string | string[],
eventObj: { stream: Stream }
): void {
let eventName = event;
let self = this;
if (eventName === "engine.fatal") {
throw new Error(
(eventObj as any)["msg"] ||
"engine.fatal occured, but msg was absent in the eventObj.msg"
);
}
if (eventName === "engineProcess.stream.error") {
console.log(` ${eventName}>>${JSON.stringify(eventObj)}`);
streamErrorCounter[eventObj.stream.streamID] =
streamErrorCounter[eventObj.stream.streamID] || 0;
streamErrorCounter[eventObj.stream.streamID] =
streamErrorCounter[eventObj.stream.streamID] + 1;
if (streamErrorCounter[eventObj.stream.streamID] === 5) {
// remove the stream if error received 5 times
self.remove(eventObj.stream);
}
} else {
console.log(` ${eventName}>>${JSON.stringify(eventObj)}`);
}
}
export { defaultEngineEventHandler };