Skip to main content

Connector

Trait Connector 

Source
pub trait Connector:
    Send
    + Sync
    + 'static {
    type Transport: Transport;
    type Runtime: RuntimeTrait;
    type Udp: UdpTransport;

    // Required methods
    fn connect(
        &self,
        url: &Url,
    ) -> impl Future<Output = Result<Self::Transport, Error>> + Send;
    fn resolve(
        &self,
        host: &str,
        port: u16,
    ) -> impl Future<Output = Result<Vec<SocketAddr>, Error>> + Send;
    fn runtime(&self) -> Self::Runtime;

    // Provided methods
    fn connect_to(
        &self,
        destination: Destination,
    ) -> impl Future<Output = Result<Self::Transport, Error>> + Send { ... }
    fn arced(self) -> ArcedConnector
       where Self: Sized { ... }
}
Expand description

Interface for runtime and tls adapters for the trillium client

See trillium_client for more information on usage.

Required Associated Types§

Source

type Transport: Transport

the Transport that connect returns

Source

type Runtime: RuntimeTrait

The RuntimeTrait for this Connector

Source

type Udp: UdpTransport

The async UDP socket type for this connector. Used by QUIC adapters for HTTP/3 support. Connectors that do not support UDP should set this to ().

Required Methods§

Source

fn connect( &self, url: &Url, ) -> impl Future<Output = Result<Self::Transport, Error>> + Send

Initiate a connection to the provided url

Source

fn resolve( &self, host: &str, port: u16, ) -> impl Future<Output = Result<Vec<SocketAddr>, Error>> + Send

Perform a DNS lookup for a given host-and-port

Source

fn runtime(&self) -> Self::Runtime

Returns the runtime

Provided Methods§

Source

fn connect_to( &self, destination: Destination, ) -> impl Future<Output = Result<Self::Transport, Error>> + Send

Open a connection to destination: dialing its pre-resolved addresses if present, otherwise resolving its host, and advertising any per-connection ALPN it carries.

A domain destination keeps its host as the certificate identity (SNI) regardless of the addresses dialed, so pre-resolved addresses may come from any resolver (e.g. a DNS cache) without affecting certificate validation.

The default implementation reconstructs a URL via Destination::to_url and calls connect, which ignores pre-resolved addresses and per-connection ALPN; connectors that honor those override this method.

destination is taken by value so connectors can adjust it (e.g. clearing secure before delegating the TCP dial to an inner connector) without copying. A caller that needs to retain it should clone before calling.

Source

fn arced(self) -> ArcedConnector
where Self: Sized,

Returns an object-safe ArcedConnector. Do not implement this.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl Connector for ClientConfig

Source§

impl Connector for SmolTransport<UnixStream>

Available on Unix only.

Implementors§