Skip to main content

ConnContext

Struct ConnContext 

Source
#[non_exhaustive]
pub struct ConnContext { pub id: ConnId, pub remote: SocketAddr, pub local: SocketAddr, pub transport: Transport, pub entered_at: Instant, pub tls: Mutex<Option<TlsInfo>>, pub http_version: OnceLock<HttpVersion>, pub user: Mutex<Extensions>, }
Expand description

Per-connection state shared between the listener and the executor.

#[non_exhaustive] so downstream crates cannot construct a ConnContext via a struct literal — the listener layer owns construction. Existing field-access patterns (conn.id, conn.tls.lock(), …) remain available to workspace crates so the engine’s hot path stays unchanged; new code should prefer the accessor methods below for the locked fields.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§id: ConnId§remote: SocketAddr§local: SocketAddr§transport: Transport§entered_at: Instant§tls: Mutex<Option<TlsInfo>>§http_version: OnceLock<HttpVersion>§user: Mutex<Extensions>

Implementations§

Source§

impl ConnContext

Source

pub fn new( id: ConnId, remote: SocketAddr, local: SocketAddr, transport: Transport, entered_at: Instant, ) -> Self

Construct a fresh per-connection context. The TLS / user- extension mutexes and the http-version once-lock all start empty; the listener fills them as the handshake progresses.

#[non_exhaustive] on the struct blocks external struct literals, so this constructor is the only public entry point for building a ConnContext from outside vane-core.

Source

pub fn tls(&self) -> MutexGuard<'_, Option<TlsInfo>>

Lock-and-read access to the TLS state. The returned guard is a parking_lot::MutexGuard — drop it as soon as the read is done to release the lock for other tasks.

Source

pub fn with_user<R>(&self, f: impl FnOnce(&mut Extensions) -> R) -> R

Closure-scoped mutable access to the per-connection extension map. Prefer this over directly grabbing conn.user.lock() — the closure bound makes the lock window visible at the call site, which matters because the executor holds the same mutex across several dispatch arms.

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

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> Same for T

Source§

type Output = T

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

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more