pub struct OutboundQueue { /* private fields */ }Expand description
The sending half of one connection’s output queue.
Implementations§
Source§impl OutboundQueue
impl OutboundQueue
Sourcepub fn new() -> (OutboundQueue, Receiver<ControlMessage>)
pub fn new() -> (OutboundQueue, Receiver<ControlMessage>)
Create a queue, returning the receiving half for the connection’s writer.
Sourcepub fn with_capacity(
capacity: usize,
) -> (OutboundQueue, Receiver<ControlMessage>)
pub fn with_capacity( capacity: usize, ) -> (OutboundQueue, Receiver<ControlMessage>)
Create a queue of a given depth. Exists so tests can produce congestion without queueing a thousand messages first.
Sourcepub fn try_send_all(&self, messages: Vec<ControlMessage>) -> Result<(), Refused>
pub fn try_send_all(&self, messages: Vec<ControlMessage>) -> Result<(), Refused>
Admit a whole transition, all of it or none of it.
Atomicity comes from reserving every slot before sending any of them: a permit holds capacity, and dropping the collected permits releases them without having written anything. Failing halfway is therefore impossible rather than merely unlikely.
§Errors
Refused, with nothing queued in every case.
Sourcepub fn push_voice(&self, message: ControlMessage) -> VoiceAdmission
pub fn push_voice(&self, message: ControlMessage) -> VoiceAdmission
Offer one tunnelled voice packet, dropping it if the queue is already too deep for it to arrive in time.
Deliberately not try_send_all: a refused transition is retried, while a
refused voice packet is gone, and conflating the two would either close
connections over lost audio or replay stale speech.
Sourcepub fn must_close(&self) -> bool
pub fn must_close(&self) -> bool
Whether the owning task must end this connection.
Sourcepub fn mark_fatal(&self)
pub fn mark_fatal(&self)
Mark this connection for teardown.