feat(core): implement StaticConfig/DynamicConfig split with ArcSwap hot-reload
Split alknet-core configuration into StaticConfig (immutable after startup) and DynamicConfig (hot-reloadable at runtime via ArcSwap). - Add StaticConfig struct in config/static_config.rs with all fields per ADR-030 - Add DynamicConfig struct with AuthPolicy, ForwardingPolicy, RateLimitConfig - Add ForwardingPolicy with allow_all()/deny_all() defaults (ADR-031) - Add ConfigReloadHandle with reload() method for runtime config updates - Replace Arc<ServerAuthConfig> with Arc<ArcSwap<DynamicConfig>> in ServerHandler - Add config_reload_handle() to Server for obtaining reload handles - Add AuthPolicy with authenticate_publickey/authenticate_certificate methods - All existing tests pass with the new config structure - Default DynamicConfig produces identical behavior to current code
This commit is contained in:
@@ -1,2 +1,2 @@
|
||||
#[tokio::test]
|
||||
async fn auth_placeholder() {}
|
||||
async fn auth_placeholder() {}
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
#[tokio::test]
|
||||
async fn client_placeholder() {}
|
||||
async fn client_placeholder() {}
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
#[tokio::test]
|
||||
async fn server_placeholder() {}
|
||||
async fn server_placeholder() {}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
use alknet_core::testutil::{MockTransport, MockTransportAcceptor, Transport, TransportAcceptor, mock_pair};
|
||||
use alknet_core::testutil::{
|
||||
mock_pair, MockTransport, MockTransportAcceptor, Transport, TransportAcceptor,
|
||||
};
|
||||
|
||||
#[tokio::test]
|
||||
async fn mock_transport_connect() {
|
||||
@@ -23,4 +25,4 @@ async fn mock_pair_communicates() {
|
||||
let mut buf = [0u8; 5];
|
||||
server.read_exact(&mut buf).await.unwrap();
|
||||
assert_eq!(&buf, b"hello");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user