This crate allows communication (message passing) of code in WASM instances, invoked by 3NWeb platform(s).
Module wasm_mp1
does message passing between a WASM instance and its embedding in accordance with version 1 of api.
Embedder provides imports a callback _3nweb_mp1_send_out_msg
in env
namespace. WASM code writes message bytes into its own memory and calls _3nweb_mp1_send_out_msg
with memory pointer and message length. Embedder must copy message content during this call, cause message exchange memory area is recycled and there are no guarantees about its content afterwards.
WASM exports functions _3nweb_mp1_get_buffer
and _3nweb_mp1_accept_msg
. These are used by embedder to send messages to WASM instance. Embedder sends message to WASM instance with following steps:
- asks to allocate memory for message in WASM with
_3nweb_mp1_get_buffer
call, - copies message into provided memory area,
- calls
_3nweb_mp1_accept_msg
to let WASM instance know about the message.
All three steps must be done without letting WASM instance to do anything else. This ensures that memory allocated in the first step won't be re-purposed, messing up everything.
LGPL-3.0 or greater version(s).