Struct InitialPeek
pub struct InitialPeek<H, P> { /* private fields */ }quic and std only.Expand description
Incremental, opt-in ClientHello inspection for one QUIC connection attempt.
Each datagram is decrypted once, with the attempt’s Initial keys derived once.
Retransmissions, frames, fragments and input bytes consume cumulative budgets. The deadline is absolute and never renewed.
Both successful completion and errors release retained Initials and prevent
reuse. Callers must also expire a pending inspector when no datagrams arrive.
This type deliberately has no raw-data Debug or serialization implementation.
Implementations§
§impl<H, P> InitialPeek<H, P>
impl<H, P> InitialPeek<H, P>
pub fn new(limits: CaptureLimits, deadline: Instant) -> InitialPeek<H, P>
pub fn new_with_first_flight(
limits: CaptureLimits,
deadline: Instant,
) -> InitialPeek<H, P>
pub fn new_with_first_flight( limits: CaptureLimits, deadline: Instant, ) -> InitialPeek<H, P>
Inspect with bounded structural retention, without keeping another ClientHello copy. The result describes only the prefix through the datagram completing ClientHello.
pub fn inspect<K>(
&mut self,
now: Instant,
datagram: &[u8],
provider: &K,
) -> Result<Option<PeekedClientHello>, PeekError>where
K: KeyProvider<Header = H, Packet = P>,
pub fn inspect<K>(
&mut self,
now: Instant,
datagram: &[u8],
provider: &K,
) -> Result<Option<PeekedClientHello>, PeekError>where
K: KeyProvider<Header = H, Packet = P>,
Inspect one logical UDP datagram. None means more CRYPTO bytes are needed.
Neither this call nor its key provider may emit QUIC responses.
Auto Trait Implementations§
impl<H, P> Freeze for InitialPeek<H, P>
impl<H, P> RefUnwindSafe for InitialPeek<H, P>
impl<H, P> Send for InitialPeek<H, P>
impl<H, P> Sync for InitialPeek<H, P>
impl<H, P> Unpin for InitialPeek<H, P>
impl<H, P> UnsafeUnpin for InitialPeek<H, P>
impl<H, P> UnwindSafe for InitialPeek<H, P>
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more