pub enum TunnelEventKind {
RelayReady {
latency_ms: u64,
},
RelayFailed {
failure: RecoveryFailure,
retry_in_ms: u64,
},
NetworkChanged,
DirectEstablished {
setup_ms: u64,
},
DirectFallback {
stage: DirectStage,
},
Stopped,
PhaseChanged {
phase: RecoveryPhase,
},
DirectStageChanged {
stage: DirectStage,
},
DirectAbandoned {
stage: DirectStage,
},
SessionOpened {
path: SessionPath,
},
SessionClosed {
path: SessionPath,
},
PortMappingChanged {
mapping: Box<PortMappingStatus>,
},
}Expand description
What happened, in a TunnelEvent.
The first six are outcomes, kept in TunnelDiagnostics::events as well
as delivered to TunnelEvents. The rest are steps along the way,
delivered live only: kept, they would crowd the outcomes out of a history
of 16.
Variants§
RelayReady
The relay answered for the first time, or again after failures.
RelayFailed
A relay attempt failed; the next one is retry_in_ms away (zero when
the worker retries at once or the failure is final).
NetworkChanged
The local network changed; recovery restarts at once.
DirectEstablished
A session took the direct path.
DirectFallback
A session gave up on direct at stage and used the relay.
Fields
stage: DirectStageStopped
The tunnel stopped, and whatever it was cleaning up has reported. The last event of every stream.
PhaseChanged
A relay attempt entered phase. Once the tunnel is ready, its routine
re-checks are not announced: the next change is backoff, when one
fails.
Fields
phase: RecoveryPhaseDirectStageChanged
A direct attempt entered stage.
Fields
stage: DirectStageDirectAbandoned
A direct attempt ended at stage with neither a direct session nor a
fallback: its setup was cancelled, or it failed after committing, when
the relay can no longer take its place.
Fields
stage: DirectStageSessionOpened
A session opened on path.
Fields
path: SessionPathSessionClosed
A session on path closed.
Fields
path: SessionPathPortMappingChanged
The gateway mapping of the tunnel’s direct endpoint changed.
Fields
mapping: Box<PortMappingStatus>Trait Implementations§
Source§impl Clone for TunnelEventKind
impl Clone for TunnelEventKind
Source§fn clone(&self) -> TunnelEventKind
fn clone(&self) -> TunnelEventKind
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 TunnelEventKind
impl Debug for TunnelEventKind
impl Eq for TunnelEventKind
Source§impl PartialEq for TunnelEventKind
impl PartialEq for TunnelEventKind
Source§impl Serialize for TunnelEventKind
impl Serialize for TunnelEventKind
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for TunnelEventKind
Auto Trait Implementations§
impl Freeze for TunnelEventKind
impl RefUnwindSafe for TunnelEventKind
impl Send for TunnelEventKind
impl Sync for TunnelEventKind
impl Unpin for TunnelEventKind
impl UnsafeUnpin for TunnelEventKind
impl UnwindSafe for TunnelEventKind
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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