Skip to content

Commit 1dde12a

Browse files
authored
Remove derive <-> core-client circular dependency (paritytech#419)
* Remove core-client <-> derive circular dev dependency * Restore original derived cli/server test to derive crate
1 parent 0d4f49b commit 1dde12a

File tree

4 files changed

+47
-18
lines changed

4 files changed

+47
-18
lines changed

core-client/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ serde = "1.0"
2727
serde_json = "1.0"
2828

2929
[dev-dependencies]
30-
jsonrpc-derive = { version = "11.0", path = "../derive" }
3130
serde = "1.0"
3231
tokio = "0.1"
3332

core-client/src/lib.rs

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -364,24 +364,9 @@ pub mod local {
364364
#[cfg(test)]
365365
mod tests {
366366
use super::*;
367-
use jsonrpc_core::{IoHandler, Result};
368-
use jsonrpc_derive::rpc;
367+
use jsonrpc_core::{self, IoHandler};
369368
use crate::{TypedClient, RpcError, RpcChannel};
370369

371-
#[rpc(server)]
372-
pub trait Rpc {
373-
#[rpc(name = "add")]
374-
fn add(&self, a: u64, b: u64) -> Result<u64>;
375-
}
376-
377-
struct RpcServer;
378-
379-
impl Rpc for RpcServer {
380-
fn add(&self, a: u64, b: u64) -> Result<u64> {
381-
Ok(a + b)
382-
}
383-
}
384-
385370
#[derive(Clone)]
386371
struct AddClient(TypedClient);
387372

@@ -400,7 +385,12 @@ mod tests {
400385
#[test]
401386
fn test_client_terminates() {
402387
let mut handler = IoHandler::new();
403-
handler.extend_with(RpcServer.to_delegate());
388+
handler.add_method("add", |params: Params| {
389+
let (a, b) = params.parse::<(u64, u64)>()?;
390+
let res = a + b;
391+
Ok(jsonrpc_core::to_value(res).unwrap())
392+
});
393+
404394
let (client, rpc_client) = local::connect::<AddClient, _, _>(handler);
405395
let fut = client
406396
.clone()

derive/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ jsonrpc-core = { version = "11.0", path = "../core" }
2323
jsonrpc-core-client = { version = "11.0", path = "../core-client" }
2424
jsonrpc-pubsub = { version = "11.0", path = "../pubsub" }
2525
jsonrpc-tcp-server = { version = "11.0", path = "../tcp" }
26+
futures = "~0.1.6"
2627
serde = "1.0"
2728
serde_derive = "1.0"
2829
serde_json = "1.0"
30+
tokio = "0.1"
2931
compiletest_rs = { version = "0.3", features = ["stable"] }

derive/tests/client.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
use futures::prelude::*;
2+
use jsonrpc_core_client::local;
3+
use jsonrpc_core::{IoHandler, Result};
4+
use jsonrpc_derive::rpc;
5+
6+
#[rpc]
7+
pub trait Rpc {
8+
#[rpc(name = "add")]
9+
fn add(&self, a: u64, b: u64) -> Result<u64>;
10+
}
11+
12+
struct RpcServer;
13+
14+
impl Rpc for RpcServer {
15+
fn add(&self, a: u64, b: u64) -> Result<u64> {
16+
Ok(a + b)
17+
}
18+
}
19+
20+
#[test]
21+
fn client_server_roundtrip() {
22+
let mut handler = IoHandler::new();
23+
handler.extend_with(RpcServer.to_delegate());
24+
let (client, rpc_client) = local::connect::<gen_client::Client, _, _>(handler);
25+
let fut = client
26+
.clone()
27+
.add(3, 4)
28+
.and_then(move |res| client.add(res, 5))
29+
.join(rpc_client)
30+
.map(|(res, ())| {
31+
assert_eq!(res, 12);
32+
})
33+
.map_err(|err| {
34+
eprintln!("{:?}", err);
35+
assert!(false);
36+
});
37+
tokio::run(fut);
38+
}

0 commit comments

Comments
 (0)