pub struct WasmConfig {
pub timeout_secs: u64,
pub max_memory_bytes: u64,
pub max_concurrent_calls: usize,
pub max_wasm_size_bytes: u64,
pub allow_call_schemes: String,
pub max_stream_bytes: u64,
pub max_instances: usize,
pub max_tables: usize,
pub max_table_elements: Option<usize>,
}Expand description
Configuration for a WASM plugin instance.
Parsed from URI query parameters or Camel.toml.
Example URI: wasm:plugin.wasm?timeout=10&max-memory=52428800
Fields§
§timeout_secs: u64Maximum execution time per guest call, in seconds.
max_memory_bytes: u64Maximum linear memory the guest can allocate, in bytes.
Enforced via wasmtime::StoreLimitsBuilder::memory_size.
max_concurrent_calls: usizeMaximum concurrent call_process executions per producer.
max_wasm_size_bytes: u64Maximum .wasm file size in bytes. Files exceeding this are rejected before compilation to prevent DoS via pathologically large modules. Default: 10 MB.
allow_call_schemes: StringComma-separated URI schemes the guest may call via camel_call/camel_poll. Empty string = deny all (fail-closed). Example: “log,direct,file”. Ignored for AuthorizationPolicy/SecurityPolicy worlds (always denied).
max_stream_bytes: u64Maximum bytes for the streaming body bridge.
max_instances: usizeMaximum core instances per store. Default 10_000 (matches wasmtime).
max_tables: usizeMaximum tables per store. Default 10_000 (matches wasmtime).
max_table_elements: Option<usize>Maximum table elements. None = no cap (wasmtime unlimited).
Implementations§
Source§impl WasmConfig
impl WasmConfig
Sourcepub fn from_limits(limits: &WasmLimitsConfig) -> WasmConfig
pub fn from_limits(limits: &WasmLimitsConfig) -> WasmConfig
Build concrete runtime config from optional Camel.toml WASM limits.
None values use runtime defaults matching WasmConfig::default().
This constructor is the single source of truth for WasmConfig defaults
sourced from Camel.toml — no silent fallback lie elsewhere (ADR-0011).
Sourcepub fn from_uri(uri_without_scheme: &str) -> (String, WasmConfig)
pub fn from_uri(uri_without_scheme: &str) -> (String, WasmConfig)
Parse WasmConfig from the query portion of a WASM URI.
uri_without_scheme is everything after wasm:, e.g.
plugins/my_processor.wasm?timeout=10&max-memory=52428800.
Returns (path, config) where path has no query string.
Sourcepub fn epoch_deadline(&self) -> u64
pub fn epoch_deadline(&self) -> u64
Convert the wall-clock timeout to an epoch deadline (number of ticks).
At 10ms per tick: deadline = timeout_secs * 100
Sourcepub fn epoch_interval(&self) -> Duration
pub fn epoch_interval(&self) -> Duration
The interval at which the epoch ticker thread increments the epoch.
Sourcepub fn epoch_interval_millis(&self) -> u64
pub fn epoch_interval_millis(&self) -> u64
Returns the configured epoch interval in milliseconds.
pub fn classify_error(&self, plugin_path: &Path, e: Error) -> WasmError
Trait Implementations§
Source§impl Clone for WasmConfig
impl Clone for WasmConfig
Source§fn clone(&self) -> WasmConfig
fn clone(&self) -> WasmConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for WasmConfig
impl Debug for WasmConfig
Auto Trait Implementations§
impl Freeze for WasmConfig
impl RefUnwindSafe for WasmConfig
impl Send for WasmConfig
impl Sync for WasmConfig
impl Unpin for WasmConfig
impl UnsafeUnpin for WasmConfig
impl UnwindSafe for WasmConfig
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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