Use binary Preserves over stdio

This commit is contained in:
Emery Hemingway 2022-10-16 11:42:07 -05:00
parent b3f98cb198
commit ee3e98b3bf
2 changed files with 6 additions and 8 deletions

View File

@ -232,7 +232,7 @@ proc dispatch(relay: Relay; v: Preserve[WireRef]) =
of PacketKind.Extension:
discard
else:
stderr.writeLine "discarding unparsed packet ", v
stderr.writeLine "discarding undecoded packet ", v
type
RelayOptions = object of RootObj
@ -353,9 +353,8 @@ import std/asyncfile
proc connectStdio*(ds: Ref; turn: var Turn) =
## Connect to an external dataspace over stdin and stdout.
proc stdoutWriter(packet: sink Packet): Future[void] {.async.} =
# var buf = encode(packet)
# doAssert writeBytes(stdout, buf, 0, buf.len) == buf.len
write(stdout, packet)
var buf = encode(packet)
doAssert writeBytes(stdout, buf, 0, buf.len) == buf.len
flushFile(stdout)
var opts = RelayActorOptions(
packetWriter: stdoutWriter,
@ -370,12 +369,11 @@ proc connectStdio*(ds: Ref; turn: var Turn) =
proc recvCb(pktFut: Future[string]) {.gcsafe.} =
if pktFut.failed: discard
else:
let buf = pktFut.read
var buf = pktFut.read
if buf.len == 0:
run(facet) do (turn: var Turn): stopActor(turn)
else:
var v = parsePreserves(buf)
dispatch(relay, cast[Preserve[WireRef]](v))
dispatch(relay, decodePreserves(buf, WireRef))
callSoon: asyncStdin.readLine().addCallback(recvCb)
# do not process the next line immediately
asyncStdin.readLine().addCallback(recvCb)

View File

@ -1,6 +1,6 @@
# Package
version = "20221013"
version = "20221016"
author = "Emery Hemingway"
description = "Syndicated actors for conversational concurrency"
license = "Unlicense"