Module queue

Module queue 

Source
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§

OutboundQueue
The sending half of one connection’s output queue.

Enums§

Refused
Why a transition could not be admitted.
VoiceAdmission
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.