UNPKG

exthos

Version:

stream processing in nodejs using the power of golang

43 lines (38 loc) 1.34 kB
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 };