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:
with_bind_default: configures to use the default bind address. This is generally the default choice for a client.with_bind_config: configures binding to an address determined by a configuration preset.with_bind_address: configures binding to a custom-specified socket address.with_bind_address_v6: configures binding to a custom-specified socket address for IPv6, along with the dual stack configuration.with_bind_socket: configures binding directly to a custom-specified socket.
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 preferwith_server_certificate_hashesfor 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 buildsClientConfigproviding both TLS and QUIC transport configuration given byquic_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
impl ClientConfig
Sourcepub fn builder() -> ClientConfigBuilder<WantsBindAddress>
pub fn builder() -> ClientConfigBuilder<WantsBindAddress>
Creates a builder to build up the client configuration.
For more information, see the ClientConfigBuilder documentation.
Sourcepub fn set_dns_resolver<R>(&mut self, dns_resolver: R)
pub fn set_dns_resolver<R>(&mut self, dns_resolver: R)
Allows setting a custom DnsResolver for this configuration.
Default resolver is TokioDnsResolver.
Sourcepub fn quic_endpoint_config(&self) -> &EndpointConfig
pub fn quic_endpoint_config(&self) -> &EndpointConfig
Returns a reference to the inner QUIC endpoint configuration.
Sourcepub fn quic_endpoint_config_mut(&mut self) -> &mut EndpointConfig
pub fn quic_endpoint_config_mut(&mut self) -> &mut EndpointConfig
Returns a mutable reference to the inner QUIC endpoint configuration.
Sourcepub fn quic_config(&self) -> &ClientConfig
pub fn quic_config(&self) -> &ClientConfig
Returns a reference to the inner QUIC configuration.
Sourcepub fn quic_config_mut(&mut self) -> &mut ClientConfig
pub fn quic_config_mut(&mut self) -> &mut ClientConfig
Returns a mutable reference to the inner QUIC configuration.