pub struct HookManager { /* private fields */ }Expand description
Central manager for WASM hook execution.
Owns the wasmtime runtime and pre-configured linker. Programs are stored
in HookSlots (one per hook point); the manager provides execution.
Implementations§
Source§impl HookManager
impl HookManager
pub fn new() -> Result<Self, HookError>
Sourcepub fn compile(
&self,
name: String,
bytes: &[u8],
priority: i32,
) -> Result<LoadedProgram, HookError>
pub fn compile( &self, name: String, bytes: &[u8], priority: i32, ) -> Result<LoadedProgram, HookError>
Compile WASM bytes into a LoadedProgram.
Validates that the module exports __rns_abi_version returning the
expected ABI version before accepting it.
Sourcepub fn load_file(
&self,
name: String,
path: &Path,
priority: i32,
) -> Result<LoadedProgram, HookError>
pub fn load_file( &self, name: String, path: &Path, priority: i32, ) -> Result<LoadedProgram, HookError>
Compile a WASM file from disk.
Sourcepub fn execute_program(
&self,
program: &mut LoadedProgram,
ctx: &HookContext<'_>,
engine_access: &dyn EngineAccess,
now: f64,
data_override: Option<&[u8]>,
) -> Option<ExecuteResult>
pub fn execute_program( &self, program: &mut LoadedProgram, ctx: &HookContext<'_>, engine_access: &dyn EngineAccess, now: f64, data_override: Option<&[u8]>, ) -> Option<ExecuteResult>
Execute a single program against a hook context. Returns an ExecuteResult
containing the hook result, any injected actions, and modified data (all
extracted from WASM memory before the store is dropped). Returns None
on trap/fuel exhaustion (fail-open).
If data_override is provided (from a previous Modify verdict in a chain),
it replaces the packet data region in the arena after writing the context.
The store and instance are cached in the program for cross-call state persistence (WASM linear memory survives across invocations). On each call we reset fuel and per-call StoreData fields but keep the WASM globals and memory intact.
Sourcepub fn run_chain(
&self,
programs: &mut [LoadedProgram],
ctx: &HookContext<'_>,
engine_access: &dyn EngineAccess,
now: f64,
) -> Option<ExecuteResult>
pub fn run_chain( &self, programs: &mut [LoadedProgram], ctx: &HookContext<'_>, engine_access: &dyn EngineAccess, now: f64, ) -> Option<ExecuteResult>
Run a chain of programs. Stops on Drop or Halt, continues on Continue or Modify.
Returns an ExecuteResult accumulating all injected actions across the chain
and the last meaningful hook result (Drop/Halt/Modify), or None if all continued.
When a hook returns Modify with modified data, subsequent hooks in the chain receive the modified data (only applicable to Packet contexts).
Auto Trait Implementations§
impl Freeze for HookManager
impl !RefUnwindSafe for HookManager
impl Send for HookManager
impl Sync for HookManager
impl Unpin for HookManager
impl UnsafeUnpin for HookManager
impl !UnwindSafe for HookManager
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> 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