UNPKG

869 BJavaScriptView Raw
1const { Cause, event, field, IO } = require("@cause/cause");
2const legacy = require("@cause/cause/record");
3const { inferredSerialize, inferredDeserialize } = require("./spawn");
4
5
6const Parent = Cause("Process.Parent",
7{
8 [field `process`]: IO.start(start),
9 [field `ready`]: false,
10
11 [event.on (Cause.Ready)]: (parent, event) =>
12 [parent.set("ready", true), [Cause.Ready()]],
13
14 [event.in `Message`]: { event: -1 },
15 [event.on `Message`]: (parent, { event }) =>
16 (process.send(inferredSerialize(event)), parent),
17
18 [event.in `ParentMessage`]: { event: -1 },
19 [event.on `ParentMessage`]: (parent, { event }) =>
20 [parent, [event]]
21});
22
23module.exports = Parent;
24
25function start(push)
26{
27 process.on("message", message =>
28 push(Parent.ParentMessage({ event: inferredDeserialize(message) })));
29
30 push(Cause.Ready());
31}