Parent: #13
Add the network-backed channel implementing the async.channel contract.
Required API:
local ch = net.channel("events", {
player = player,
capacity = 32,
})
ch:send(value)
ch:trySend(value)
ch.handler = function(value, sender) end
for value, sender in ch do end
Acceptance criteria:
- Reliable ordered delivery by default.
- Bounded per-recipient queues.
send suspends when full.
trySend never suspends.
- Server receives include the sending player.
- Player binding routes only between server and the bound player.
- Server-wide sends use independent per-player queues.
- Handler and iterator are alternative consumers.
- Disconnect closes the channel cleanly.
- Serialization failures reject sends.
Parent: #13
Add the network-backed channel implementing the
async.channelcontract.Required API:
Acceptance criteria:
sendsuspends when full.trySendnever suspends.