http.rs 1.41 KiB
Newer Older
jsonrpsee::rpc_api! {
    Health {
        /// Test
        fn system_name(foo: String, bar: i32) -> String;
Pierre Krieger's avatar
Pierre Krieger committed

        fn test_notif(foo: String, bar: i32);

Pierre Krieger's avatar
Pierre Krieger committed
        /// Test2
        #[rpc(method = "foo")]
Pierre Krieger's avatar
Pierre Krieger committed
        fn system_name2() -> String;

    System {
        fn test_foo() -> String;
    }
Pierre Krieger's avatar
Pierre Krieger committed
fn main() {
Pierre Krieger's avatar
Pierre Krieger committed
    // Spawning a server in a background task.
    async_std::task::spawn(async move {
Pierre Krieger's avatar
Pierre Krieger committed
        let listen_addr = "127.0.0.1:8000".parse().unwrap();
        let mut server1 = jsonrpsee::http_server(&listen_addr).await.unwrap();
Pierre Krieger's avatar
Pierre Krieger committed

Pierre Krieger's avatar
Pierre Krieger committed
        while let Ok(request) = Health::next_request(&mut server1).await {
            match request {
                Health::SystemName { respond, foo, bar } => {
                    let value = format!("{}, {}", foo, bar);
                    respond.ok(value).await;
Pierre Krieger's avatar
Pierre Krieger committed
                }
Pierre Krieger's avatar
Pierre Krieger committed
                Health::SystemName2 { respond } => {
Pierre Krieger's avatar
Pierre Krieger committed
                    respond.ok("hello 2").await;
                }
                Health::TestNotif { foo, bar } => {
                    println!("server got notif: {:?} {:?}", foo, bar);
                }
Pierre Krieger's avatar
Pierre Krieger committed
            }
        }
    });
Pierre Krieger's avatar
Pierre Krieger committed
    // Client demo.
Pierre Krieger's avatar
Pierre Krieger committed
    let mut client = jsonrpsee::http_client("http://127.0.0.1:8000");
    let v = async_std::task::block_on(async {
        Health::test_notif(&mut client, "notif_string", 192).await.unwrap();
        Health::system_name(&mut client, "hello", 5).await.unwrap()
    });
    println!("{:?}", v);
Pierre Krieger's avatar
Pierre Krieger committed
}