9个稳定版本
1.2.6 | 2022年10月17日 |
---|---|
1.2.5 | 2022年10月16日 |
1.2.2 | 2022年9月13日 |
1.1.0 |
|
1.0.1 | 2022年9月13日 |
#388 在 异步
298 每月下载量
在 hyprsome 中使用
82KB
1.5K SLoC
ipc-rpc
进程间通信远程过程调用
这个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
,默认启用。这启用了与schemars
crate相关的功能。启用时,软件将尝试在连接初始化时验证用户消息模式。验证失败不是致命错误,不会导致程序崩溃。错误将在日志中发出,并且可以通过许多函数以编程方式检索此状态,所有函数均称为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