Skip to main content

Listener

Struct Listener 

Source
pub struct Listener(/* private fields */);
Expand description

A description of one listener a server is bound to.

A Conn carries the Listener it arrived on in its state, and a server exposes the full set on Info at startup, so a runtime-neutral handler can answer both “what is this server listening on?” and “which listener did this request come from?” — to announce every binding at launch, say, or to tag a log line with the ingress a request arrived on.

Cloning is a reference-count bump, so stamping it onto every conn is cheap.

The inner representation is private, so further provenance (e.g. negotiated SNI) can be added in a minor release without a breaking change.

Implementations§

Source§

impl Listener

Source

pub fn new(kind: ListenerKind, secure: bool) -> Self

Construct a Listener from its kind and whether the listener terminates TLS.

Source

pub fn tcp(addr: SocketAddr, secure: bool) -> Self

Construct a TCP Listener.

Source

pub fn quic(addr: SocketAddr) -> Self

Construct a QUIC/HTTP3 Listener. QUIC is always TLS.

Source

pub fn unix(path: Option<PathBuf>, secure: bool) -> Self

Construct a Unix-domain-socket Listener. The path is None for an unnamed or abstract socket.

Source

pub fn kind(&self) -> &ListenerKind

The kind of listener this describes.

Source

pub fn is_secure(&self) -> bool

Whether this listener terminates TLS. This reflects the listener’s immutable ground truth, not necessarily the view a client sees: a plaintext listener fronted by a TLS-terminating proxy reports false. For the (mutable, possibly forwarding-header-derived) per-request view, see Conn::is_secure.

Source

pub fn socket_addr(&self) -> Option<SocketAddr>

The bound socket address, for listener kinds that have one (Tcp and Quic). None for a Unix socket or an unaddressed kind.

Source

pub fn port(&self) -> Option<u16>

The bound port, for listener kinds that have one.

Trait Implementations§

Source§

impl Clone for Listener

Source§

fn clone(&self) -> Listener

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Listener

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Listener

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl FromIterator<Listener> for Listeners

Source§

fn from_iter<T: IntoIterator<Item = Listener>>(iter: T) -> Self

Creates a value from an iterator. Read more
Source§

impl PartialEq for Listener

Source§

fn eq(&self, other: &Listener) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Listener

Source§

impl StructuralPartialEq for Listener

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<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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
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.