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.