#message #instance #platform #embedding #communication #send

wasm-message-passing-3nweb

允许WASM实例与其嵌入(如3NWeb客户端平台)之间进行消息传递

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

LGPL-3.0+

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