syndicate-nim/tests/stdio_client.nim

43 lines
1.0 KiB
Nim

# SPDX-FileCopyrightText: ☭ 2021 Emery Hemingway
# SPDX-License-Identifier: Unlicense
import std/[asyncdispatch, random]
import preserves
import syndicate
import syndicate/[actors, capabilities]
randomize()
proc mint(): SturdyRef =
var key: array[16, byte]
mint(key, "syndicate")
type
A* {.preservesRecord: "A".} = object
str*: string
B* {.preservesRecord: "B".} = object
str*: string
bootDataspace("x") do (ds: Ref; turn: var Turn):
connectStdio(ds, turn)
discard publish(turn, ds, A(str: "A stdio"))
discard publish(turn, ds, B(str: "B stdio"))
onPublish(turn, ds, ?A) do (v: Assertion):
stderr.writeLine "received over stdio ", v
bootDataspace("y") do (ds: Ref; turn: var Turn):
connectUnix(turn, "/run/user/1000/dataspace", mint()) do (turn: var Turn; a: Assertion) -> TurnAction:
let ds = unembed a
discard publish(turn, ds, A(str: "A unix"))
discard publish(turn, ds, B(str: "B unix"))
onPublish(turn, ds, ?B) do (v: Assertion):
stderr.writeLine "received over unix ", v
runForever()