pub trait SandboxCapabilities: FunctionContext {
type SupervisorFuncRef;
fn invoke(
&mut self,
dispatch_thunk: &Self::SupervisorFuncRef,
invoke_args_ptr: Pointer<u8>,
invoke_args_len: WordSize,
state: u32,
func_idx: SupervisorFuncIndex
) -> Result<i64>;
}
Expand description
This trait encapsulates sandboxing capabilities.
Note that this functions are only called in the supervisor
context.
Associated Types
Represents a function reference into the supervisor environment.
Required methods
fn invoke(
&mut self,
dispatch_thunk: &Self::SupervisorFuncRef,
invoke_args_ptr: Pointer<u8>,
invoke_args_len: WordSize,
state: u32,
func_idx: SupervisorFuncIndex
) -> Result<i64>
fn invoke(
&mut self,
dispatch_thunk: &Self::SupervisorFuncRef,
invoke_args_ptr: Pointer<u8>,
invoke_args_len: WordSize,
state: u32,
func_idx: SupervisorFuncIndex
) -> Result<i64>
Invoke a function in the supervisor environment.
This first invokes the dispatch_thunk function, passing in the function index of the desired function to call and serialized arguments. The thunk calls the desired function with the deserialized arguments, then serializes the result into memory and returns reference. The pointer to and length of the result in linear memory is encoded into an i64, with the upper 32 bits representing the pointer and the lower 32 bits representing the length.
Errors
Returns Err
if the dispatch_thunk function has an incorrect signature or traps during
execution.