IncomingState

Enum IncomingState 

Source
pub enum IncomingState {
    Idle(LastResponse),
    Received(bool),
    SendingAck,
    SendingRst,
    SendingPiggybacked,
    AwaitingResponse,
    SendingCon(RetransmissionState),
    SendingNon,
}
Expand description

The state in which the incoming communication path is currently

Variants§

§

Idle(LastResponse)

New requests can be handled

§

Received(bool)

A request was received and needs to be handled by the user. The contained bool determines if the request was confirmable (true) or non-confirmable (false).

In any case, the response may be sent with IncomingCommunication::schedule_response immediately. For CON requests, this will result in a piggybacked response. For NON requests, a NON response will be sent which is considered the default case for NON requests (see RFC 7252 5.2.3 Non-confirmable: “If the request message is Non-confirmable, then the response SHOULD be returned in a Non-confirmable message as well.”)

Furthermore, IncomingCommunication::schedule_rst may be called in both cases which will transmit a RST message.

If a different behavior is desired, the following different options exist:

In this state, the message buffer contains the request message. Thus, the request message may be obtained by calling IncomingCommunication::request.

§

SendingAck

An ACK is being sent. Afterwards, we will go into the IncomingState::AwaitingResponse state.

§

SendingRst

A RST message is being sent. Afterwards, we will go back to the Idle state.

§

SendingPiggybacked

A piggybacked response is being sent. Afterwards, we will go into the Idle state.

§

AwaitingResponse

The request has been acknowledged, i.e. a separate response is expected. In this state, IncomingCommunication::schedule_con_response and IncomingCommunication::schedule_non_response are available and either of those must be called by the user.

In this state, the message buffer still contains the request message and may be obtained with IncomingCommunication::request.

§

SendingCon(RetransmissionState)

A separate CON response is being sent. We will stay in this state and try retransmissions until an ACK to this message is received or until the whole communication attempt (with retries) times out.

§

SendingNon

A separate NON response is being sent.

Trait Implementations§

Source§

impl Clone for IncomingState

Source§

fn clone(&self) -> IncomingState

Returns a duplicate 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 IncomingState

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Copy for IncomingState

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, 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.