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: LeaseWhat the registrar granted, and when to refresh it.
observation: RegistrationObservationThe 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: PathSetThe proxies the registrar recorded on the path back to this contact (RFC 3327).
service_route: ServiceRouteThe proxies this UA’s own outbound requests must traverse (RFC 3608).
flow_accepted: boolWhether 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: GruusThe 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: SupportWhat 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
impl Clone for Registered
Source§fn clone(&self) -> Registered
fn clone(&self) -> Registered
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Registered
impl Debug for Registered
Source§impl PartialEq for Registered
impl PartialEq for Registered
Source§fn eq(&self, other: &Registered) -> bool
fn eq(&self, other: &Registered) -> bool
self and other values to be equal, and is used by ==.impl Eq for Registered
impl StructuralPartialEq for Registered
Auto Trait Implementations§
impl !Freeze for Registered
impl RefUnwindSafe for Registered
impl Send for Registered
impl Sync for Registered
impl Unpin for Registered
impl UnsafeUnpin for Registered
impl UnwindSafe for Registered
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§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