Skip to main content

Registered

Struct Registered 

Source
pub struct Registered {
    pub lease: Lease,
    pub observation: RegistrationObservation,
    pub path: PathSet,
    pub service_route: ServiceRoute,
    pub flow_accepted: bool,
    pub flow_timer: Option<Duration>,
    pub gruus: Gruus,
    pub push: Support,
}
Expand description

A successful registration: the lease, and the two route vectors that came back with it.

A struct rather than three positional fields on the enum variant, because PathSet and ServiceRoute are the same shape and opposite directions — Path routes requests toward this UA and is not ours to follow, Service-Route routes the requests we send. Positionally interchangeable arguments of identical type are how they would eventually get swapped.

Fields§

§lease: Lease

What the registrar granted, and when to refresh it.

§observation: RegistrationObservation

The source address the registrar reported in the top response Via.

Informational only: it never rewrites a Contact, route or media address. Invalid or absent observations do not change the lease or any other registration result.

§path: PathSet

The proxies the registrar recorded on the path back to this contact (RFC 3327).

§service_route: ServiceRoute

The proxies this UA’s own outbound requests must traverse (RFC 3608).

§flow_accepted: bool

Whether the registrar reports having performed an outbound registration (RFC 5626 §6).

§6 requires a registrar that did to say so in Require. Believing it happened without being told means keeping a flow alive that nothing is routing down, and treating a binding that is only as durable as its NAT mapping as though it were durable.

§flow_timer: Option<Duration>

The Flow-Timer the registrar named, if any (RFC 5626 §4.4).

How long it will hold the flow open without traffic. When present it replaces the UA’s own choice of keep-alive interval outright.

§gruus: Gruus

The GRUUs the registrar issued for this instance’s binding (RFC 5627 §4.2).

Empty when GRUU was not asked for, and empty when it was and the registrar issued nothing — §4.2 makes both ordinary. They travel with the binding rather than beside it because they expire with it: a GRUU outliving the registration that produced it is an address a UA would keep publishing after it had stopped resolving.

§push: Support

What the registrar said about push notifications (RFC 8599 §8.2).

Empty when push was not asked for, and empty when it was and the registrar implements nothing of RFC 8599 — which is not a refusal. The case worth reading it for is the third one: a registrar that answered 200 while naming a different push service has recorded a binding nothing will ever wake, and this is the only place that says so.

Trait Implementations§

Source§

impl Clone for Registered

Source§

fn clone(&self) -> Registered

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Registered

Source§

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

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

impl PartialEq for Registered

Source§

fn eq(&self, other: &Registered) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Registered

Source§

impl StructuralPartialEq for Registered

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
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
§

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

§

fn vzip(self) -> V

§

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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,