relays: send events from a single turn in a single packet
This commit is contained in:
parent
78d7efc712
commit
aea9a2e4e6
|
@ -35,6 +35,7 @@ type
|
||||||
inboundAssertions: Table[Handle,
|
inboundAssertions: Table[Handle,
|
||||||
tuple[localHandle: Handle, imported: seq[WireSymbol]]]
|
tuple[localHandle: Handle, imported: seq[WireSymbol]]]
|
||||||
outboundAssertions: Table[Handle, seq[WireSymbol]]
|
outboundAssertions: Table[Handle, seq[WireSymbol]]
|
||||||
|
pendingTurn: protocol.Turn
|
||||||
exported: Membrane
|
exported: Membrane
|
||||||
imported: Membrane
|
imported: Membrane
|
||||||
nextLocalOid: Oid
|
nextLocalOid: Oid
|
||||||
|
@ -108,14 +109,14 @@ proc deregister(relay: Relay; h: Handle) =
|
||||||
|
|
||||||
proc send(relay: Relay; turn: var Turn; rOid: protocol.Oid; m: Event) =
|
proc send(relay: Relay; turn: var Turn; rOid: protocol.Oid; m: Event) =
|
||||||
# TODO: don't send right away.
|
# TODO: don't send right away.
|
||||||
var pendingTurn: protocol.Turn
|
relay.pendingTurn.add TurnEvent(oid: rOid, event: m)
|
||||||
pendingTurn.add TurnEvent(oid: rOid, event: m)
|
queueEffect(turn, relay.facet) do (turn: var Turn):
|
||||||
relay.facet.run do (turn: var Turn):
|
if relay.pendingTurn.len > 0:
|
||||||
var pkt = Packet(
|
var pkt = Packet(
|
||||||
orKind: PacketKind.Turn,
|
orKind: PacketKind.Turn,
|
||||||
turn: pendingTurn)
|
turn: move relay.pendingTurn)
|
||||||
trace "C: ", pkt
|
trace "C: ", pkt
|
||||||
relay.packetWriter(turn, encode pkt)
|
relay.packetWriter(turn, encode pkt)
|
||||||
|
|
||||||
proc send(re: RelayEntity; turn: var Turn; ev: Event) =
|
proc send(re: RelayEntity; turn: var Turn; ev: Event) =
|
||||||
send(re.relay, turn, protocol.Oid re.oid, ev)
|
send(re.relay, turn, protocol.Oid re.oid, ev)
|
||||||
|
|
Loading…
Reference in New Issue