pub struct AdminState {
pub node_health: RwLock<HashMap<String, NodeHealth>>,
pub metrics: RwLock<ServerMetricsSnapshot>,
pub active_sessions: RwLock<u64>,
pub config_snapshot: RwLock<ConfigSnapshot>,
pub proxy_config: RwLock<Option<ProxyConfig>>,
pub replay_engine: RwLock<Option<Arc<ReplayEngine>>>,
pub plugin_manager: RwLock<Option<Arc<PluginManager>>>,
pub chaos_overrides: RwLock<HashMap<String, ChaosOverride>>,
pub anomaly_detector: RwLock<Option<Arc<AnomalyDetector>>>,
pub edge_cache: RwLock<Option<Arc<EdgeCache>>>,
pub edge_registry: RwLock<Option<Arc<EdgeRegistry>>>,
/* private fields */
}Expand description
Shared admin state
Fields§
§node_health: RwLock<HashMap<String, NodeHealth>>Node health status
metrics: RwLock<ServerMetricsSnapshot>Server metrics
active_sessions: RwLock<u64>Active sessions count
config_snapshot: RwLock<ConfigSnapshot>Configuration (read-only)
proxy_config: RwLock<Option<ProxyConfig>>Full proxy config (for SQL routing)
replay_engine: RwLock<Option<Arc<ReplayEngine>>>Time-travel replay engine. Optional so test fixtures don’t have
to wire a backend template; production startup attaches it via
with_replay_engine. Endpoint returns 503 when missing.
plugin_manager: RwLock<Option<Arc<PluginManager>>>WASM plugin manager. None when the proxy started without
plugins (or with a different feature set). /plugins
endpoint returns 503 when missing; UI panel says “no plugin
manager attached”.
chaos_overrides: RwLock<HashMap<String, ChaosOverride>>Chaos-mode overrides: per-node-address marker that the chaos
system (POST /api/chaos) has forced this node to a particular
state. Lets the UI distinguish “operationally disabled” from
“chaos-injected fault” and lets Reset restore everything.
anomaly_detector: RwLock<Option<Arc<AnomalyDetector>>>Anomaly detector — same Arc the server populates from the query path. /api/anomalies polls this for the recent-events ring buffer.
edge_cache: RwLock<Option<Arc<EdgeCache>>>Edge proxy cache + registry. Cache surfaces stats; registry is the home-side fanout for invalidations.
edge_registry: RwLock<Option<Arc<EdgeRegistry>>>Implementations§
Source§impl AdminState
impl AdminState
Sourcepub async fn with_anomaly_detector(&self, detector: Arc<AnomalyDetector>)
pub async fn with_anomaly_detector(&self, detector: Arc<AnomalyDetector>)
Attach an anomaly detector. Mirror of with_replay_engine / with_plugin_manager — wired by the server at startup.
Sourcepub async fn with_edge(
&self,
cache: Arc<EdgeCache>,
registry: Arc<EdgeRegistry>,
)
pub async fn with_edge( &self, cache: Arc<EdgeCache>, registry: Arc<EdgeRegistry>, )
Attach edge cache + registry. Server calls this once at startup; both Arcs are the same instances ServerState holds.
Sourcepub async fn with_replay_engine(&self, engine: Arc<ReplayEngine>)
pub async fn with_replay_engine(&self, engine: Arc<ReplayEngine>)
Attach a time-travel replay engine. Production startup calls
this once with a ReplayEngine constructed from the proxy’s
shared TransactionJournal + a BackendConfig template; the
/api/replay endpoint returns 503 until this is set.
Sourcepub async fn with_plugin_manager(&self, manager: Arc<PluginManager>)
pub async fn with_plugin_manager(&self, manager: Arc<PluginManager>)
Attach a WASM plugin manager. Production startup calls this
once with the same Arc held by ProxyServer; the /plugins
endpoint returns 503 until set.
Sourcepub async fn set_proxy_config(&self, config: ProxyConfig)
pub async fn set_proxy_config(&self, config: ProxyConfig)
Set the proxy configuration for SQL routing
Sourcepub async fn register_command<F>(&self, name: &str, handler: F)
pub async fn register_command<F>(&self, name: &str, handler: F)
Register a command handler
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for AdminState
impl !RefUnwindSafe for AdminState
impl Send for AdminState
impl Sync for AdminState
impl Unpin for AdminState
impl UnsafeUnpin for AdminState
impl !UnwindSafe for AdminState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more