pub struct HostBridgeImpl {
host_functions: Arc<RwLock<HashMap<String, HostFunction>>>,
wasm_to_host_rx: UnboundedReceiver<WASMMessage>,
host_to_wasm_tx: UnboundedSender<WASMMessage>,
async_callbacks: Arc<RwLock<HashMap<u64, AsyncCallback>>>,
next_callback_token: Arc<AtomicU64>,
}Expand description
Host Bridge for WASM communication
Fields§
§host_functions: Arc<RwLock<HashMap<String, HostFunction>>>Registry of host functions exported to WASM
wasm_to_host_rx: UnboundedReceiver<WASMMessage>Channel for receiving messages from WASM
host_to_wasm_tx: UnboundedSender<WASMMessage>Channel for sending messages to WASM
async_callbacks: Arc<RwLock<HashMap<u64, AsyncCallback>>>Active async callbacks
next_callback_token: Arc<AtomicU64>Next callback token
Implementations§
Source§impl HostBridgeImpl
impl HostBridgeImpl
Sourcepub async fn register_host_function(
&self,
name: &str,
signature: FunctionSignature,
callback: HostFunctionCallback,
) -> BridgeResult<()>
pub async fn register_host_function( &self, name: &str, signature: FunctionSignature, callback: HostFunctionCallback, ) -> BridgeResult<()>
Register a host function to be exported to WASM
Sourcepub async fn register_async_host_function(
&self,
name: &str,
signature: FunctionSignature,
callback: AsyncHostFunctionCallback,
) -> BridgeResult<()>
pub async fn register_async_host_function( &self, name: &str, signature: FunctionSignature, callback: AsyncHostFunctionCallback, ) -> BridgeResult<()>
Register an async host function
Sourcepub async fn call_host_function(
&self,
function_name: &str,
args: Vec<Bytes>,
) -> BridgeResult<Bytes>
pub async fn call_host_function( &self, function_name: &str, args: Vec<Bytes>, ) -> BridgeResult<Bytes>
Call a host function from WASM
Sourcepub async fn send_to_wasm(&self, message: WASMMessage) -> BridgeResult<()>
pub async fn send_to_wasm(&self, message: WASMMessage) -> BridgeResult<()>
Send a message to WASM
Sourcepub async fn receive_from_wasm(&mut self) -> Option<WASMMessage>
pub async fn receive_from_wasm(&mut self) -> Option<WASMMessage>
Receive a message from WASM (blocking)
Sourcepub async fn create_async_callback(
&self,
message_id: String,
) -> (AsyncCallback, u64)
pub async fn create_async_callback( &self, message_id: String, ) -> (AsyncCallback, u64)
Create async callback
Sourcepub async fn get_callback(&self, token: u64) -> Option<AsyncCallback>
pub async fn get_callback(&self, token: u64) -> Option<AsyncCallback>
Get callback by token
Sourcepub async fn get_host_functions(&self) -> Vec<String>
pub async fn get_host_functions(&self) -> Vec<String>
Get all registered host functions
Sourcepub async fn unregister_host_function(&self, name: &str) -> bool
pub async fn unregister_host_function(&self, name: &str) -> bool
Unregister a host function
Trait Implementations§
Source§impl Debug for HostBridgeImpl
impl Debug for HostBridgeImpl
Auto Trait Implementations§
impl Freeze for HostBridgeImpl
impl !RefUnwindSafe for HostBridgeImpl
impl Send for HostBridgeImpl
impl Sync for HostBridgeImpl
impl Unpin for HostBridgeImpl
impl !UnwindSafe for HostBridgeImpl
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
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
Converts
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>
Converts
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request