Expand description
One connection’s bounded output queue.
The queue is the commit point: accepted into the queue is committed,
because acceptance is synchronous and the stream underneath delivers in order
or not at all. That only works if a whole transition is admitted all at once,
which is what OutboundQueue::try_send_all guarantees by reserving every
slot before writing any of them. A half-delivered transition would leave the
client in a state nobody can describe.
Admission never blocks. Connections push view updates onto each other’s queues, so a blocking push would let one slow client stall every task trying to notify it, and two connections pushing to each other with both queues full would deadlock outright. Non-blocking makes both impossible by construction.
Structs§
- Outbound
Queue - The sending half of one connection’s output queue.
Enums§
- Refused
- Why a transition could not be admitted.
- Voice
Admission - What became of a tunnelled voice packet.
Constants§
- CAPACITY
- How many messages one connection’s queue holds.
- MAX_
DEPTH_ FOR_ VOICE - The depth past which tunnelled voice is refused.