4个版本
0.2.0 | 2021年11月11日 |
---|---|
0.1.2 | 2021年11月7日 |
0.1.1 | 2021年11月7日 |
0.1.0 | 2021年11月7日 |
#850 in WebAssembly
9KB
该crate允许由3NWeb平台(s)调用的WASM实例中代码之间的通信(消息传递)。
消息传递,版本1 (wasm_mp1
)
模块 wasm_mp1
根据api的版本1在WASM实例及其嵌入之间进行消息传递。
嵌入器在 env
命名空间中提供导入回调 _3nweb_mp1_send_out_msg
。WASM代码将消息字节写入其自己的内存,并使用内存指针和消息长度调用 _3nweb_mp1_send_out_msg
。嵌入器必须在此调用期间复制消息内容,因为消息交换内存区域将被回收,之后无法保证其内容。
WASM导出函数 _3nweb_mp1_get_buffer
和 _3nweb_mp1_accept_msg
。这些由嵌入器用于向WASM实例发送消息。嵌入器按照以下步骤向WASM实例发送消息
- 使用
_3nweb_mp1_get_buffer
调用请求在WASM中为消息分配内存, - 将消息复制到提供的内存区域,
- 调用
_3nweb_mp1_accept_msg
以让WASM实例知道有关该消息的信息。
这三个步骤必须在不允许WASM实例执行任何其他操作的情况下完成。这确保了在第一步中分配的内存不会被重新用途,以免搞乱一切。
许可证
LGPL-3.0或更高版本。
依赖关系
~0.8–1.4MB
~29K SLoC