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
Source
pub 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
Source
pub 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
Source
pub 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
Source
pub async fn
send_to_wasm(&self, message:
WASMMessage) ->
BridgeResult<()>
pub async fn send_to_wasm(&self, message: WASMMessage) -> BridgeResult<()>
Send a message to WASM
Source
pub 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)
Source
pub 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
Source
pub async fn
get_callback(&self, token:
u64) ->
Option<AsyncCallback>
pub async fn get_callback(&self, token: u64) -> Option<AsyncCallback>
Get callback by token
Source
pub async fn
get_host_functions(&self) ->
Vec<String>
pub async fn get_host_functions(&self) -> Vec<String>
Get all registered host functions
Source
pub 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 UnsafeUnpin for HostBridgeImpl
impl !UnwindSafe for HostBridgeImpl
Blanket Implementations§
Source§
impl<T>
BorrowMut<T> for T
where T: ?Sized,
impl<T>
BorrowMut<T> for T
where 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 more
Source§
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 more
Source§
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