Skip to main content

DatagramReceiver

Struct DatagramReceiver 

Source
pub struct DatagramReceiver { /* private fields */ }
Expand description

One session’s inbound HTTP Datagrams, and its claim on a Quarter Stream ID.

Obtained from Stream::datagrams and held for the life of the session. Dropping it takes the Quarter Stream ID out of the connection’s routing table, which is what keeps the table from leaking entries: a session can end through any of half a dozen paths – refused before it started, idle, reset, its socket broken – and every one of them drops this.

Datagrams that arrive after the drop are dropped like any other unknown id, which is exactly what RFC 9297 §2.1 permits for a stream that no longer exists.

Implementations§

Source§

impl DatagramReceiver

Source

pub async fn recv(&mut self) -> Option<Bytes>

Waits for the next payload routed to this session.

None means the connection’s router will send nothing further, which on a live connection cannot happen: the sending half lives in the routing table under this receiver’s own entry, and that entry outlives the receiver by nothing at all.

Cancel-safe ([tokio::sync::mpsc::Receiver::recv] is), so a session may poll it inside a select! with a timeout – which is what a UDP session does with all three of its sources.

Trait Implementations§

Source§

impl Drop for DatagramReceiver

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more