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

47 lines
1.0 KiB
Rust

// Host bridge helpers for TypeBox invoke (v2)
// Library-level shim signature used across the runtime (compat convenience)
pub type InvokeFn = unsafe extern "C" fn(
u32, /* type_id (for dispatch) */
u32, /* method_id */
u32, /* instance_id */
*const u8,
usize,
*mut u8,
*mut usize,
) -> i32;
// Native v2 per-Box signature
pub type BoxInvokeFn = extern "C" fn(
u32, /* instance_id */
u32, /* method_id */
*const u8,
usize,
*mut u8,
*mut usize,
) -> i32;
// Call library-level shim with a temporary output 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)
}