From aea9a2e4e60f3d5ed66f09f830091c00387e4cd5 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Wed, 20 Mar 2024 13:06:21 +0000 Subject: [PATCH] relays: send events from a single turn in a single packet --- src/syndicate/relays.nim | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/syndicate/relays.nim b/src/syndicate/relays.nim index e38c2b9..e3387c1 100644 --- a/src/syndicate/relays.nim +++ b/src/syndicate/relays.nim @@ -35,6 +35,7 @@ type inboundAssertions: Table[Handle, tuple[localHandle: Handle, imported: seq[WireSymbol]]] outboundAssertions: Table[Handle, seq[WireSymbol]] + pendingTurn: protocol.Turn exported: Membrane imported: Membrane nextLocalOid: Oid @@ -108,14 +109,14 @@ proc deregister(relay: Relay; h: Handle) = proc send(relay: Relay; turn: var Turn; rOid: protocol.Oid; m: Event) = # TODO: don't send right away. - var pendingTurn: protocol.Turn - pendingTurn.add TurnEvent(oid: rOid, event: m) - relay.facet.run do (turn: var Turn): - var pkt = Packet( - orKind: PacketKind.Turn, - turn: pendingTurn) - trace "C: ", pkt - relay.packetWriter(turn, encode pkt) + relay.pendingTurn.add TurnEvent(oid: rOid, event: m) + queueEffect(turn, relay.facet) do (turn: var Turn): + if relay.pendingTurn.len > 0: + var pkt = Packet( + orKind: PacketKind.Turn, + turn: move relay.pendingTurn) + trace "C: ", pkt + relay.packetWriter(turn, encode pkt) proc send(re: RelayEntity; turn: var Turn; ev: Event) = send(re.relay, turn, protocol.Oid re.oid, ev)