pub struct ServerConfig {
pub listen_address: SocketAddr,
pub health_listen_address: SocketAddr,
pub drain_timeout_ms: u64,
pub channels: Vec<ChannelDef>,
pub routing_rules: Vec<RoutingRuleDef>,
pub persistence_path: Option<PathBuf>,
pub cluster: Option<ClusterConfig>,
pub auth: Option<AuthConfig>,
pub services: ServicesConfig,
pub limits: LimitsConfig,
pub websocket: Option<WebSocketConfig>,
pub participant: Option<ParticipantConfig>,
}Expand description
Declarative configuration for the standalone liminal server wrapper.
Fields§
§listen_address: SocketAddrSocket address where the standalone server will listen for client traffic.
health_listen_address: SocketAddrSocket address where the health endpoint server will listen for probes.
drain_timeout_ms: u64Maximum time to allow existing connections to drain during graceful shutdown.
channels: Vec<ChannelDef>Channel topology definitions declared by the operator.
routing_rules: Vec<RoutingRuleDef>Declarative routing rules that connect configured channels.
persistence_path: Option<PathBuf>Optional filesystem location for durable server state.
cluster: Option<ClusterConfig>Optional beamr distribution cluster membership configuration.
auth: Option<AuthConfig>Optional connection authentication configuration.
When present, every client Connect handshake must carry a matching
auth_token; when absent the server is open (byte-identical to the
pre-auth behaviour). Not an ACL system — a single shared bearer token.
services: ServicesConfigService construction profile. Absent [services] (or an absent profile
key within it) defaults to "full", so existing deployments build exactly
what they build today.
limits: LimitsConfigOperational bounds (§5). Absent [limits] (or any absent key within it)
defaults to the certifying-pair-signed numbers, so an operator who sets
nothing still runs bounded — “unlimited-by-silence is no longer a legal
state” (§5). Every value is a hard cap enforced by a typed refusal; a
zero (or otherwise invalid) value is a config validation error, never a
silent “unlimited”.
websocket: Option<WebSocketConfig>Optional WebSocket transport acceptor (LP-WS-TRANSPORT R1).
When present the server binds a sibling WebSocket listener carrying the canonical liminal wire protocol (one binary message per canonical frame) alongside the main TCP listener. When absent NO HTTP/WebSocket listener is started and the server behaves byte-identically to the pre-WebSocket build. Every field inside is a deployment decision; the origin allow-list FAILS CLOSED (an absent or empty list refuses every Origin-bearing upgrade) and the keepalive ping interval is disabled unless explicitly configured.
participant: Option<ParticipantConfig>Participant lifecycle activation (LP gap closure, Part B).
When present the server installs the production participant semantic handler and advertises the participant capability bit on every connection. Every field inside is REQUIRED and carries NO default: participant lifecycle values are deployment decisions, and an absent field is a typed startup error rather than an assumed number. When the section is absent the participant capability stays disabled and the server behaves byte-identically to the pre-activation build.
Implementations§
Source§impl ServerConfig
impl ServerConfig
Sourcepub const fn drain_timeout(&self) -> Duration
pub const fn drain_timeout(&self) -> Duration
Returns the configured graceful-shutdown drain timeout.
Trait Implementations§
Source§impl Clone for ServerConfig
impl Clone for ServerConfig
Source§fn clone(&self) -> ServerConfig
fn clone(&self) -> ServerConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more