ClientConfig

Struct ClientConfig 

Source
pub struct ClientConfig { /* private fields */ }
Expand description

Client configuration.

You can create an instance of ClientConfig using its builder pattern by calling the builder() method. Once you have an instance, you can further customize it by chaining method calls to set various configuration options.

§Configuration Builder States

The configuration process follows a state-based builder pattern, where the client configuration progresses through 3 states.

§1. WantsBindAddress

The caller must supply a binding address for the client. The following options are mutually exclusive:

Only one of these options can be selected during the client configuration process.

§Examples:
use wtransport::ClientConfig;

ClientConfig::builder().with_bind_default();

§2. WantsRootStore

The caller must supply a TLS root store configuration for server certificate validation. The following options are mutually exclusive:

  • with_native_certs: configures to use root certificates found in the platform’s native certificate store. This is the default configuration as it uses root store installed on the current machine.
  • with_server_certificate_hashes: configures the client to accept some certificates mapped to hashes. This can be used to connect to self signed certificates securely, where the hash of the certificate is shared in advance through some other mechanism (such as an invite link).
  • (insecure) with_no_cert_validation: configure to skip server certificate validation. This might be handy for testing purpose to accept self-signed certificate, but you should almost always prefer with_server_certificate_hashes for that use case.
  • with_custom_tls: sets the TLS client configuration manually.
  • with_custom_transport: sets the QUIC transport configuration manually (using default TLS).
  • with_custom_tls_and_transport: sets both a custom TLS and QUIC transport configuration.
  • build_with_quic_config: directly builds ClientConfig providing both TLS and QUIC transport configuration given by quic_config.

Only one of these options can be selected during the client configuration process.

§Examples:
use wtransport::ClientConfig;

ClientConfig::builder()
    .with_bind_default()
    .with_native_certs();

§3. WantsTransportConfigClient

The caller can supply additional transport configurations. Multiple options can be given at this stage. Once the configuration is completed, it is possible to finalize with the method build().

All these options can be omitted in the configuration; default values will be used.

§Examples:
use std::time::Duration;
use wtransport::ClientConfig;

let client_config = ClientConfig::builder()
    .with_bind_default()
    .with_native_certs()
    .max_idle_timeout(Some(Duration::from_secs(30)))
    .unwrap()
    .keep_alive_interval(Some(Duration::from_secs(3)))
    .build();

Implementations§

Source§

impl ClientConfig

Source

pub fn builder() -> ClientConfigBuilder<WantsBindAddress>

Creates a builder to build up the client configuration.

For more information, see the ClientConfigBuilder documentation.

Source

pub fn set_dns_resolver<R>(&mut self, dns_resolver: R)
where R: DnsResolver + Send + Sync + 'static,

Allows setting a custom DnsResolver for this configuration.

Default resolver is TokioDnsResolver.

Source

pub fn quic_endpoint_config(&self) -> &EndpointConfig

Returns a reference to the inner QUIC endpoint configuration.

Source

pub fn quic_endpoint_config_mut(&mut self) -> &mut EndpointConfig

Returns a mutable reference to the inner QUIC endpoint configuration.

Source

pub fn quic_config(&self) -> &ClientConfig

Returns a reference to the inner QUIC configuration.

Source

pub fn quic_config_mut(&mut self) -> &mut ClientConfig

Returns a mutable reference to the inner QUIC configuration.

Trait Implementations§

Source§

impl Debug for ClientConfig

Source§

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

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

impl Default for ClientConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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