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 freshServerConfiginstances (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.