#[non_exhaustive]pub enum BridgeCloseReason {
Shutdown,
IdleTimeout,
PeerEofLeft,
PeerEofRight,
ReadErrorLeft,
ReadErrorRight,
WriteErrorLeft,
WriteErrorRight,
PeekTimeout,
HandlerDeadline,
PausedTimeout,
FirstByteTimeout,
}std only.Expand description
Reason why a rama bridge — byte-oriented (see IoForwardService in
rama-net) or frame-oriented (see StreamForwardService) — terminated.
Shared vocabulary used in close-log events emitted by rama bridges. Consumers are free to emit any subset; each variant carries no metadata of its own.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Shutdown
Graceful shutdown was requested via the configured shutdown signal.
IdleTimeout
The bridge observed no progress in either direction within the configured idle window.
PeerEofLeft
The “left” / a side reached EOF.
PeerEofRight
The “right” / b side reached EOF.
ReadErrorLeft
Read from the left half failed.
ReadErrorRight
Read from the right half failed.
WriteErrorLeft
Write to the left half failed.
WriteErrorRight
Write to the right half failed.
PeekTimeout
A protocol-peek read deadline elapsed before the peek completed. Used by tproxy bridges that peek the first bytes for protocol detection.
HandlerDeadline
The flow handler did not produce a decision within the configured deadline. The flow was rejected (or passed through, depending on configuration) without bridging.
PausedTimeout
A backpressure-paused write side was never re-armed by its peer
drain signal within the configured maximum-pause window. Surfaces
stuck downstream writers (e.g. a Swift flow.write completion
handler that never invokes signalServerDrain) instead of
wedging the bridge indefinitely.
FirstByteTimeout
The upstream (right / egress) half wrote no byte within the
configured first-byte window. Surfaces a silent origin that
accepts the connection but never responds, distinct from
IdleTimeout, which only fires when neither
direction moves (a silent origin still receives the client’s bytes).
Trait Implementations§
Source§impl Clone for BridgeCloseReason
impl Clone for BridgeCloseReason
Source§fn clone(&self) -> BridgeCloseReason
fn clone(&self) -> BridgeCloseReason
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for BridgeCloseReason
Source§impl Debug for BridgeCloseReason
impl Debug for BridgeCloseReason
Source§impl Display for BridgeCloseReason
impl Display for BridgeCloseReason
impl Eq for BridgeCloseReason
Source§impl Hash for BridgeCloseReason
impl Hash for BridgeCloseReason
Source§impl PartialEq for BridgeCloseReason
impl PartialEq for BridgeCloseReason
impl StructuralPartialEq for BridgeCloseReason
Source§impl TraceField for BridgeCloseReason
Available on crate feature dial9 only.
impl TraceField for BridgeCloseReason
dial9 only.Source§type Ref<'a> = BridgeCloseReason
type Ref<'a> = BridgeCloseReason
fn field_type() -> FieldType
Source§fn encode<W>(&self, enc: &mut EventEncoder<'_, W>) -> Result<(), Error>where
W: Write,
fn encode<W>(&self, enc: &mut EventEncoder<'_, W>) -> Result<(), Error>where
W: Write,
Source§fn decode_ref<'a>(
val: &FieldValueRef<'a>,
) -> Option<<BridgeCloseReason as TraceField>::Ref<'a>>
fn decode_ref<'a>( val: &FieldValueRef<'a>, ) -> Option<<BridgeCloseReason as TraceField>::Ref<'a>>
Source§fn is_optional() -> bool
fn is_optional() -> bool
Source§fn decode_missing<'a>() -> Option<Self::Ref<'a>>
fn decode_missing<'a>() -> Option<Self::Ref<'a>>
None for required fields (decode failure) and Some(None) for
optional fields.Auto Trait Implementations§
impl Freeze for BridgeCloseReason
impl RefUnwindSafe for BridgeCloseReason
impl Send for BridgeCloseReason
impl Sync for BridgeCloseReason
impl Unpin for BridgeCloseReason
impl UnsafeUnpin for BridgeCloseReason
impl UnwindSafe for BridgeCloseReason
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> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
Source§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<V, F> ValueFormatter<&V> for F
impl<V, F> ValueFormatter<&V> for F
Source§const SHAPE: FieldShape<'static>
const SHAPE: FieldShape<'static>
metrique_require_explicit_impls only.Source§fn format_value(writer: impl ValueWriter, value: &&V)
fn format_value(writer: impl ValueWriter, value: &&V)
value to writerSource§impl<V, F> ValueFormatter<Arc<V>> for F
impl<V, F> ValueFormatter<Arc<V>> for F
Source§const SHAPE: FieldShape<'static>
const SHAPE: FieldShape<'static>
metrique_require_explicit_impls only.Source§fn format_value(writer: impl ValueWriter, value: &Arc<V>)
fn format_value(writer: impl ValueWriter, value: &Arc<V>)
value to writerSource§impl<V, F> ValueFormatter<Box<V>> for F
impl<V, F> ValueFormatter<Box<V>> for F
Source§const SHAPE: FieldShape<'static>
const SHAPE: FieldShape<'static>
metrique_require_explicit_impls only.Source§fn format_value(writer: impl ValueWriter, value: &Box<V>)
fn format_value(writer: impl ValueWriter, value: &Box<V>)
value to writerSource§impl<V, F> ValueFormatter<Cow<'_, V>> for F
impl<V, F> ValueFormatter<Cow<'_, V>> for F
Source§const SHAPE: FieldShape<'static>
const SHAPE: FieldShape<'static>
metrique_require_explicit_impls only.Source§fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
value to writerSource§impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
Source§const SHAPE: FieldShape<'static>
const SHAPE: FieldShape<'static>
metrique_require_explicit_impls only.Source§fn format_value(writer: impl ValueWriter, value: &Option<V>)
fn format_value(writer: impl ValueWriter, value: &Option<V>)
value to writer