Crates.io | lwleen-rpc |
lib.rs | lwleen-rpc |
version | 1.1.0 |
created_at | 2025-08-28 10:26:47.294213+00 |
updated_at | 2025-08-28 10:26:47.294213+00 |
description | rpc(信令路由), 组件间数据通信 |
homepage | https://docs.qq.com/aio/p/sc3gu8sft77pu68 |
repository | |
max_upload_size | |
id | 1813964 |
size | 188,703 |
RPC
是 Remote Procedure Call(远程过程调用), 用于组件间数据通信
唯一对外接口
信令路由
(rpc)
use lwleen_rpc::prelude::*;
let 信令路由c1 = 信令路由::default();
let 信令路由c2 = 信令路由c1.clone();
let 结果 = 信令路由c1.pool异步任务_run同步完成(async move{
let out1 = 信令路由c2.rpc信令路由_心跳("异步测试1").await;
let out2 = 信令路由c2.rpc信令路由_心跳("同步测试2").run同步完成();
format!("返回结果: {out1:?} {out2:?}")
});
println!("{结果:?}");
//---- 测试 stdout ----
Ok("返回结果: Ok((\"💖心跳回答: 异步测试1\", 1754650154616267068)) Ok((\"💖心跳回答: 同步测试2\", 1754650154616303301))")
扩展 信令路由
(rpc)
使用过程宏gen_特征_derive
生成特征代码 (rust孤儿规则)
新建信令表
使用宏impl信令特征!()
为信令表实现信令特征, 即执行函数
use lwleen_rpc::prelude::*;
// 1.第一步
#[gen_特征_derive(Demo_模块特征)]
impl 信令路由{
fn demo(&self,参数:impl AsRef<str> ) -> impl 信令任务<anyhow_Result<String>>{
core发布信令任务!(self, 信令表::demo{ 参数:参数.as_ref().to_string() }, 信令表::demo_回复 => 返回 )
}
}
// 2.第二步
#[derive(Clone, Serialize, Deserialize)]//可选特征
enum 信令表{
demo{参数:String },
demo_回复{ 返回:String },
}
impl信令特征!(信令表, 执行函数); // 所有`信令表`必须实现此特征
// 3.第三步
async fn 执行函数(信令路由:信令路由,id:信令ID,单个信令:Box信令特征)->anyhow_Result<Box信令特征>{
match 单个信令.try_into()?{
信令表::demo{ 参数 }=>{
return anyhow::Ok(Box::new(信令表::demo_回复 { 返回: format!("完成demo {参数} ") }));
}
_ =>{ return Err(anyhow_err!("信令不存在")); }
}
}
说明 | |
---|---|
#[gen_特征_derive(_)] |
生成特征代码 |
core发布信令任务!() |
生成一个任务Task |
impl信令特征!() |
为信令表实现特征 |
anyhow_Result |
anyhow::Result 的别名 |
Box信令特征 |
Box<dyn 信令特征> 的别名 |
使用参考
应用库
https://crates.io/crates/lwleen
use async_std;
let 信令路由c1 = 信令路由::new(rpc类型::none自定义); // 用于自定义服务端
let 信令路由c2 = 信令路由c1.clone();
std::thread::spawn(move||{
async_std::task::block_on(async move{
while let Ok(msg) = 信令路由c2.core_接收通道().recv().await{
async_std::task::spawn( 信令路由::new信令解包_执行(信令路由c2.clone(), msg) );
}
});
});
Intel(R) Core(TM) i3-7100 CPU @ 3.90GHz
[任意服务端] rpc信令路由_连通测试 run同步完成
time: [91.330 ns 91.469 ns 91.660 ns]
Found 15 outliers among 100 measurements (15.00%)
2 (2.00%) high mild
13 (13.00%) high severe
[default == default无服务端] rpc信令路由_连通测试 异步
time: [100.54 ns 101.01 ns 101.77 ns]
Found 13 outliers among 100 measurements (13.00%)
2 (2.00%) high mild
11 (11.00%) high severe
[futures单线程] rpc信令路由_连通测试 异步
time: [7.6526 µs 7.8649 µs 8.1285 µs]
Found 16 outliers among 100 measurements (16.00%)
11 (11.00%) high mild
5 (5.00%) high severe
[rusty_pool线程池] rpc信令路由_连通测试 异步
time: [9.5018 µs 9.6233 µs 9.7548 µs]
Found 12 outliers among 100 measurements (12.00%)
1 (1.00%) low severe
1 (1.00%) low mild
5 (5.00%) high mild
5 (5.00%) high severe