#[non_exhaustive]pub enum Dispatched {
Invitation(Invitation),
OutOfDialog(Incoming),
}Expand description
What the dispatcher could not place itself, handed to the application.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Invitation(Invitation)
An INVITE that belongs to no live call: an incoming call.
Answering, ringing or rejecting it is the application’s decision — the dispatcher takes none of them. Its inbox is already routed, so nothing that arrives while the application decides can be missed.
OutOfDialog(Incoming)
A request outside any dialog whose method this stack advertises but that matched no route: an OPTIONS ping.
Surfaced rather than refused because the Allow a 405 would carry
(sipx_sip::update::ALLOW) names it, and answering 405 to a method the same message
says is supported tells the peer two different things at once. What answers an OPTIONS is
a user agent (sipx_ua::Agent::answer), which the call framework does not have.
A CANCEL never arrives here (S-23). It is the one advertised method the dispatcher
can place itself, because RFC 3261 §9.2 says exactly what to do with it and both halves of
the answer are the dispatcher’s to give: the 200 OK on the CANCEL’s own transaction, and
the 487 Request Terminated on the INVITE transaction it withdraws. One that matches no
pending INVITE transaction is answered 481 rather than handed over, because there is
nothing an application could usefully decide about a transaction this stack does not have.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Dispatched
impl RefUnwindSafe for Dispatched
impl Send for Dispatched
impl Sync for Dispatched
impl Unpin for Dispatched
impl UnsafeUnpin for Dispatched
impl UnwindSafe for Dispatched
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more