Server: implement JOIN/JOIN_ACK/JOIN_DENY handling, input parsing/relay, spawn logic, apples maintenance; fix InMemoryTransport to address specific peer; add state_full encoder

- Protocol: join parser, join_ack/deny builders, input parser, state_full builder
- Server: on_datagram dispatch, spawn per rules (prefer length 3 else 1), join deny if no cell, immediate input_broadcast relay
- Model: occupancy map and helpers
- Transport: deliver to specified peer in in-memory mode
This commit is contained in:
Vladyslav Doloman
2025-10-07 20:22:22 +03:00
parent 9043ba81c0
commit 7a5f2d8794
4 changed files with 301 additions and 12 deletions

View File

@@ -32,11 +32,9 @@ class InMemoryTransport(DatagramServerTransport):
self._peers.append(peer)
async def send(self, data: bytes, peer: TransportPeer) -> None:
# In-memory: deliver to all except sender to simulate broadcast domain
for p in self._peers:
if p is peer:
continue
await self._on_datagram(data, p)
# In-memory: deliver only to the addressed peer
if peer in self._peers:
await self._on_datagram(data, peer)
async def run(self) -> None:
# Nothing to do in in-memory test transport
@@ -58,4 +56,3 @@ class QuicWebTransportServer(DatagramServerTransport):
async def run(self) -> None:
raise NotImplementedError("QUIC server not implemented in skeleton")