pub struct RuntimeConfig {
pub threads: usize,
pub work_stealing: bool,
pub log_overrides: HashMap<String, String>,
pub global_queue_interval: Option<u32>,
pub upstream_ca_file: Option<String>,
pub upstream_keepalive_pool_size: Option<usize>,
}Expand description
Configuration for the runtime of the proxy server.
use praxis_core::config::RuntimeConfig;
let cfg = RuntimeConfig::default();
assert_eq!(cfg.threads, 0);
assert!(cfg.work_stealing);
assert_eq!(cfg.global_queue_interval, Some(61));
assert!(cfg.log_overrides.is_empty());
assert_eq!(cfg.upstream_keepalive_pool_size, Some(64));
assert!(cfg.upstream_ca_file.is_none());
let cfg: RuntimeConfig = serde_yaml::from_str("threads: 4\nwork_stealing: true").unwrap();
assert_eq!(cfg.threads, 4);
assert!(cfg.work_stealing);Fields§
§threads: usizeNumber of worker threads per service.
Auto-detected by default.
work_stealing: boolAllow work-stealing between worker threads of the same service.
log_overrides: HashMap<String, String>Per-module log level overrides.
use praxis_core::config::RuntimeConfig;
let yaml = r#"
log_overrides:
praxis_filter::pipeline: trace
praxis_protocol: debug
"#;
let cfg: RuntimeConfig = serde_yaml::from_str(yaml).unwrap();
assert_eq!(cfg.log_overrides.len(), 2);
assert_eq!(cfg.log_overrides["praxis_filter::pipeline"], "trace");global_queue_interval: Option<u32>Fixed global queue interval for the tokio scheduler.
use praxis_core::config::RuntimeConfig;
let cfg = RuntimeConfig::default();
assert_eq!(cfg.global_queue_interval, Some(61));
let cfg: RuntimeConfig = serde_yaml::from_str("global_queue_interval: 128").unwrap();
assert_eq!(cfg.global_queue_interval, Some(128));upstream_ca_file: Option<String>Path to a PEM CA file used as the root certificate store for all upstream TLS connections.
When set, this replaces the system trust store (not additive). If backends use both a private CA and public CAs, create a combined PEM bundle containing all required root certificates.
use praxis_core::config::RuntimeConfig;
let cfg: RuntimeConfig =
serde_yaml::from_str("upstream_ca_file: /etc/praxis/ca-bundle.pem").unwrap();
assert_eq!(
cfg.upstream_ca_file.as_deref(),
Some("/etc/praxis/ca-bundle.pem")
);
let cfg = RuntimeConfig::default();
assert!(cfg.upstream_ca_file.is_none());upstream_keepalive_pool_size: Option<usize>Maximum number of idle upstream connections kept per thread.
use praxis_core::config::RuntimeConfig;
let cfg = RuntimeConfig::default();
assert_eq!(cfg.upstream_keepalive_pool_size, Some(64));
let cfg: RuntimeConfig = serde_yaml::from_str("upstream_keepalive_pool_size: 32").unwrap();
assert_eq!(cfg.upstream_keepalive_pool_size, Some(32));Trait Implementations§
Source§impl Clone for RuntimeConfig
impl Clone for RuntimeConfig
Source§fn clone(&self) -> RuntimeConfig
fn clone(&self) -> RuntimeConfig
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for RuntimeConfig
impl Debug for RuntimeConfig
Source§impl Default for RuntimeConfig
impl Default for RuntimeConfig
Source§impl<'de> Deserialize<'de> for RuntimeConfig
impl<'de> Deserialize<'de> for RuntimeConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl From<&RuntimeConfig> for RuntimeOptions
impl From<&RuntimeConfig> for RuntimeOptions
Source§fn from(cfg: &RuntimeConfig) -> Self
fn from(cfg: &RuntimeConfig) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for RuntimeConfig
impl RefUnwindSafe for RuntimeConfig
impl Send for RuntimeConfig
impl Sync for RuntimeConfig
impl Unpin for RuntimeConfig
impl UnsafeUnpin for RuntimeConfig
impl UnwindSafe for RuntimeConfig
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Mutably borrows from an owned value. Read more