Skip to main content

sim_lib_plugin_wasm/
loader.rs

1//! Capability-checked WebAssembly plugin loading.
2
3use sim_kernel::Result;
4use sim_lib_plugin_core::{AudioPluginCapability, CapabilitySet};
5
6use crate::{WasmPluginProcessor, WasmResourceLimits};
7
8/// Loads a WebAssembly audio plugin after checking the wasm-plugin capability.
9///
10/// # Errors
11///
12/// Returns a capability error when `caps` does not include
13/// [`AudioPluginCapability::WasmPlugin`]. Returns an eval error when the wasm
14/// module is invalid or misses required exports.
15pub fn load_wasm_plugin(
16    caps: &CapabilitySet,
17    wasm_bytes: &[u8],
18    limits: WasmResourceLimits,
19) -> Result<WasmPluginProcessor> {
20    caps.require(AudioPluginCapability::WasmPlugin)?;
21    WasmPluginProcessor::from_bytes_with_limits(wasm_bytes, limits)
22}