#ipc #channel #rpc #inter-process #remote-procedure #high-level #ipc-channel

ipc-rpc

servo/ipc-channel的包装器,提供了许多高级功能

9个稳定版本

1.2.6 2022年10月17日
1.2.5 2022年10月16日
1.2.2 2022年9月13日
1.1.0 2022年9月13日
1.0.1 2022年9月13日

#388异步

Download history 85/week @ 2024-03-11 56/week @ 2024-03-18 37/week @ 2024-03-25 87/week @ 2024-04-01 54/week @ 2024-04-08 37/week @ 2024-04-15 84/week @ 2024-04-22 73/week @ 2024-04-29 123/week @ 2024-05-06 122/week @ 2024-05-13 106/week @ 2024-05-20 74/week @ 2024-05-27 87/week @ 2024-06-03 83/week @ 2024-06-10 65/week @ 2024-06-17 54/week @ 2024-06-24

298 每月下载量
hyprsome 中使用

MIT 协议

82KB
1.5K SLoC

ipc-rpc

进程间通信远程过程调用

Crates.io

文档

这个Rust库是servo/ipc-channel的包装器,增加了许多新功能。

  • 默认双向通信。
  • 基于Future的回复机制允许轻松准确地匹配请求和响应。
  • (可选,默认启用)启动时验证服务器和客户端之间消息模式匹配。不再需要调试错误的反序列化。依赖于schemars
  • 简化IPC通道的初始化,适用于常见用例,同时仍允许在更独特的场景中进行更灵活和健壮的动态初始化。

与所有可以运行servo/ipc-channel的内容兼容,截至写作时包括

  • Windows
  • MacOS
  • Linux
  • FreeBSD
  • OpenBSD

此外,servo/ipc-channel支持以下平台,但仅在inprocess模式下,这不能在进程之间进行通信。

  • Android
  • iOS
  • WASI

tokio

此crate使用tokio运行时执行future,并且ipc-rpc的用户必须使用tokio。没有计划添加对其他执行器的支持,但如果对其他执行器的需求足够,可能会改变这一点。

Cargo功能

此crate公开一个功能,message-schema-validation,默认启用。这启用了与schemarscrate相关的功能。启用时,软件将尝试在连接初始化时验证用户消息模式。验证失败不是致命错误,不会导致程序崩溃。错误将在日志中发出,并且可以通过许多函数以编程方式检索此状态,所有函数均称为schema_validated()

如果您决定将无法验证模式视为严重故障,您可以在建立连接后执行程序中添加以下代码行。

服务器

server.schema_validated().await.unwrap().assert_success();

客户端

client.schema_validated().await.unwrap().assert_success();

运行示例

示例包括一个客户端和一个服务器,它们应一起运行。使用它们的顺序是

cargo build --examples
cargo run --example server

服务器在操作过程中启动客户端。

限制

servo/ipc-channel类似,服务器只能服务一个客户端。克服这一限制需要在servo/ipc-channel中进行工作。

依赖项

~8-19MB
~285K SLoC