7 releases
0.3.2 | Jan 4, 2024 |
---|---|
0.3.1 | Jan 4, 2024 |
0.2.2 | Dec 16, 2023 |
0.1.0 | Nov 28, 2023 |
#1357 in Network programming
70 downloads per month
Used in rpc-core-net
81KB
2K
SLoC
rpc-core
Usage
Run the following Cargo command in your project directory:
cargo add rpc-core
Or add the following line to your Cargo.toml:
[dependencies]
rpc-core = { version = "0.3.2", features = ["net"] }
Example
See src/tests for details:
-
receiver
fn subscribe() { rpc_s.subscribe("cmd", |msg: String| -> String { assert_eq!(msg, "hello"); "world".to_string() }); }
-
sender (callback)
fn call() { rpc_c.cmd("cmd") .msg("hello") .rsp(|msg: String| { assert_eq!(msg, "world"); }) .call(); }
-
sender (future)
async fn call() { let result = rpc_c.cmd("cmd").msg("hello").future::<String>().await; assert_eq!(result.result.unwrap(), "world"); }
Features
net
See examples
for details: src/examples
-
server
fn server() { let rpc = Rpc::new(None); rpc.subscribe("cmd", |msg: String| -> String { assert_eq!(msg, "hello"); "world".to_string() }); let server = rpc_server::RpcServer::new(6666, RpcConfigBuilder::new().rpc(Some(rpc.clone())).build()); server.start(); }
-
client
async fn client() { let rpc = Rpc::new(None); let client = rpc_client::RpcClient::new(RpcConfigBuilder::new().rpc(Some(rpc.clone())).build()); client.set_reconnect(1000); client.open("localhost", 6666); let result = rpc.cmd("cmd").msg("hello").future::<String>().await; assert_eq!(result.result.unwrap(), "world"); }
License
This project is licensed under the MIT license.
Dependencies
~0.6–8.5MB
~81K SLoC