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 for [rustls::ClientConfig
] instead of [rustls::ServerConfig
].
Tracing
If the tracing
feature is enabled, the provider will emit diagnostics
(debug/info/error) about updates and reconnection attempts.