Struct DatagramWriter

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

The writer for application to send the datagram frames to the peer.

You can clone the writer or wrapper it in an Arc to send the datagram frames in many tasks.

Implementations§

Source§

impl DatagramWriter

Source

pub fn send_bytes(&self, data: Bytes) -> Result<(), Error>

Send unreliable data to the peer.

The data will not be sent immediately, and the data sent is not guaranteed to be delivered.

If the peer dont support want to receive datagram frames, the method will return an error.

The size of the datagram frame is limited by the max_datagram_frame_size transport parameter set by the peer. See RFC for more details about transport parameters.

If the size of the data exceeds the limit, the method will return an error.

You can call DatagramWriter::max_datagram_frame_size to know the maximum size of the datagram frame you can send, read its documentation for more details.

If the connection is closing or already closed, the method will also return an error.

Source

pub fn send(&self, data: &[u8]) -> Result<(), Error>

Send unreliable data to the peer.

The data will not be sent immediately, and the data sent is not guaranteed to be delivered.

The size of the datagram frame is limited by the max_datagram_frame_size transport parameter set by the peer. See RFC for more details about transport parameters.

If the size of the data exceeds the limit, the method will return an error.

You can call DatagramWriter::max_datagram_frame_size to know the maximum size of the datagram frame you can send, read its documentation for more details.

If the connection is closing or already closed, the method will also return an error.

Source

pub fn max_datagram_frame_size(&self) -> Result<usize, Error>

Returns the maximum size of the datagram frame that can be sent to the peer.

If the connection is closing or already closed, the method will return an error.

The value is a transport parameter set by the peer, and you cant send a datagram frame whose size exceeds this value.

Because of the encoding, the size of the data you can send is less than this value, usually 1 byte less. Although its possiable to send a datagram frame with the size of max_datagram_frame_size - 1, its hardly to happen.

We recommend you to send unreliable data that the size is less or equal to max_encoding_size - 1 - the size of the size of the data's length in varint form. varint in definded in the QUIC RFC.

Size 0 means the peer does not want to receive datagram frames, but it dont means the peer will not send datagram frames to you.

Trait Implementations§

Source§

impl Clone for DatagramWriter

Source§

fn clone(&self) -> DatagramWriter

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DatagramWriter

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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