Files
hakorune/src/runtime/plugin_loader_v2/enabled/host_bridge.rs

29 lines
749 B
Rust
Raw Normal View History

// Host bridge helpers for TypeBox invoke (minimal, v2)
pub type InvokeFn =
unsafe extern "C" fn(u32, u32, u32, *const u8, usize, *mut u8, *mut usize) -> i32;
// Call invoke_id with a temporary output buffer; returns (code, bytes_written, buffer)
pub fn invoke_alloc(
invoke: InvokeFn,
type_id: u32,
method_id: u32,
instance_id: u32,
tlv_args: &[u8],
) -> (i32, usize, Vec<u8>) {
let mut out = vec![0u8; 1024];
let mut out_len: usize = out.len();
let code = unsafe {
invoke(
type_id,
method_id,
instance_id,
tlv_args.as_ptr(),
tlv_args.len(),
out.as_mut_ptr(),
&mut out_len,
)
};
(code, out_len, out)
}