UNPKG

siesta-lite

Version:

Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers

48 lines (30 loc) 1.31 kB
import {Base, Constructable, Mixin} from "../../../generic/util/Common.js"; import {Channel, Envelop, EnvelopId, Message} from "../../../generic/channel/Types.js"; import {ChannelEndPoint} from "../../../generic/channel/ChannelEndPoint.js"; import {ChildProcess} from "child_process"; import {NodeJsLogger} from "../../util/role/NodeJsLogger.js"; export const ParentEndPoint = class extends ChannelEndPoint(NodeJsLogger(Base)) { childProcess : ChildProcess messageListener : (...args) => any doConnect (channel : Channel) { const childProcess = this.childProcess = channel childProcess.addListener('message', this.messageListener = this.onRawChannelMessage.bind(this)) childProcess.on('exit', () => { this.debug('NodeJS worker process exit') this.doDisconnect() }); return Promise.resolve() } doDisconnect () { this.messageListener && this.childProcess.removeListener('message', this.messageListener) } sendMessage (message : Message) { this.childProcess.send(message) } messageToEnvelop (message : Message) : Envelop | undefined { return message as Envelop } envelopToMessage (envelop : Envelop) : Message { return envelop as Message } }