Expand description
§rustls-config-stream
rustls::ServerConfig
and rustls::ClientConfig
providers backed async streams.
This module exposes a ServerConfigProvider
and ClientConfigProvider
.
Both function identically, holding the current config in an
ArcSwap
, providing a get_config()
method to load the
current config as a standard Arc
, and storing a new config
when it arrives from a user-supplied stream via a ServerConfigStreamBuilder
or ClientConfigStreamBuilder
.
The background task performs exponential backoff (10ms -> 10s, doubling) when the stream fails, and attempts to re-create the stream via the builder.
§Usage
- Implement
ServerConfigStreamBuilder
to produce a stream of freshServerConfig
instances (e.g. reading from disk, a secret store, or watching a certificate manager). - Start the provider with
ServerConfigProvider::start
. - Use
ServerConfigProvider::get_config
wherever you need the current config (e.g. inside an acceptor loop). - Optionally monitor liveness via
ServerConfigProvider::stream_healthy
. ClientConfigProvider
works identically, only forrustls::ClientConfig
instead ofrustls::ServerConfig
.
§Tracing
If the tracing
feature is enabled, the provider will emit diagnostics
(debug/info/error) about updates and reconnection attempts.
Structs§
- Client
Config Provider - Holds the current
ClientConfig
and refreshes it from an async stream. - Server
Config Provider - Holds the current
ServerConfig
and refreshes it from an async stream.
Enums§
- Client
Config Stream Error - Errors that can occur while building or consuming a client-config stream.
- Server
Config Stream Error - Errors that can occur while building or consuming a server-config stream.
Traits§
- Client
Config Stream Builder - A factory for producing a stream of
rustls::ClientConfig
. - Server
Config Stream Builder - A factory for producing a stream of
rustls::ServerConfig
.