parent
4027da4c5f
commit
4454d19b60
|
@ -16,7 +16,7 @@ type Oid = sturdy.Oid
|
|||
|
||||
type
|
||||
Assertion = Preserve[Ref]
|
||||
WireRef = sturdy.WireRef[Ref]
|
||||
WireRef = sturdy.WireRef[void]
|
||||
WireAssertion = Preserve[WireRef]
|
||||
Event = protocol.Event[WireRef]
|
||||
TurnEvent = protocol.TurnEvent[WireRef]
|
||||
|
@ -74,7 +74,7 @@ proc newSyncPeerEntity(r: Relay; p: Ref): SyncPeerEntity =
|
|||
|
||||
proc rewriteRefOut(relay: Relay; `ref`: Ref; transient: bool; exported: var seq[WireSymbol]): WireRef =
|
||||
if `ref`.target of RelayEntity and `ref`.target.RelayEntity.relay == relay and `ref`.attenuation.len == 0:
|
||||
WireRef(orKind: WireRefKind.yours, yours: WireRefYours[Ref](oid: `ref`.target.oid))
|
||||
WireRef(orKind: WireRefKind.yours, yours: WireRefYours[void](oid: `ref`.target.oid))
|
||||
else:
|
||||
var ws = grab(relay.exported, `ref`)
|
||||
if ws.isNil:
|
||||
|
@ -179,18 +179,15 @@ proc rewriteRefIn(relay; facet; n: WireRef, imported: var seq[WireSymbol]): Ref
|
|||
result = e.`ref`
|
||||
of WireRefKind.yours:
|
||||
let r = relay.lookupLocal(n.yours.oid)
|
||||
if n.yours.attenuation.len == 0 or r.isInert:
|
||||
result = r
|
||||
else:
|
||||
raiseAssert "attenuation not implemented"
|
||||
if n.yours.attenuation.len == 0 or r.isInert: result = r
|
||||
else: raiseAssert "attenuation not implemented"
|
||||
|
||||
proc rewriteIn(relay; facet; a: Preserve[WireRef]):
|
||||
tuple[rewritten: Assertion; imported: seq[WireSymbol]] =
|
||||
var
|
||||
imported: seq[WireSymbol]
|
||||
rewritten = mapEmbeds(a) do (wr: WireRef) -> Ref:
|
||||
rewriteRefIn(relay, facet, wr, imported)
|
||||
(rewritten, imported)
|
||||
var imported: seq[WireSymbol]
|
||||
result.rewritten = mapEmbeds(a) do (wr: WireRef) -> Ref:
|
||||
rewriteRefIn(relay, facet, wr, imported)
|
||||
result.imported = imported
|
||||
|
||||
proc close(r: Relay) = discard
|
||||
|
||||
|
@ -324,7 +321,7 @@ proc connectUnix*(turn: var Turn; path: string; cap: SturdyRef; bootProc: During
|
|||
if buf.len == 0:
|
||||
run(facet) do (turn: var Turn): stopActor(turn)
|
||||
else:
|
||||
var pr = parsePreserves(buf, sturdy.WireRef[void])
|
||||
var pr = parsePreserves(buf, WireRef)
|
||||
dispatch(relay, cast[Preserve[WireRef]](pr))
|
||||
socket.recv(recvSize).addCallback(recvCb)
|
||||
# TODO: should this need be callSoon?
|
||||
|
@ -367,11 +364,7 @@ proc connectStdio*(ds: Ref; turn: var Turn) =
|
|||
let
|
||||
facet = turn.facet
|
||||
asyncStdin = openAsync("/dev/stdin")
|
||||
observer = observe(turn, ds, grab(), newRelayEntity("stdio", relay, Oid 1))
|
||||
# publish an observe in the local dataspace
|
||||
# so that everything is relayed to stdout
|
||||
facet.actor.atExit do (turn: var Turn):
|
||||
retract(turn, observer)
|
||||
close(asyncStdin)
|
||||
proc recvCb(pktFut: Future[string]) {.gcsafe.} =
|
||||
if pktFut.failed: discard
|
||||
|
|
Loading…
Reference in New Issue