diff --git a/Cargo.lock b/Cargo.lock
index 9ff27fd2..75e82fe4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -783,14 +783,23 @@ dependencies = [
name = "rpc"
version = "0.1.0"
dependencies = [
+ "chain 0.1.0",
+ "db 0.1.0",
"jsonrpc-core 4.0.0 (git+https://github.com/ethcore/jsonrpc.git)",
"jsonrpc-http-server 6.1.1 (git+https://github.com/ethcore/jsonrpc.git)",
"log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "network 0.1.0",
+ "p2p 0.1.0",
+ "primitives 0.1.0",
"rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_codegen 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 0.8.4 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serialization 0.1.0",
+ "sync 0.1.0",
+ "test-data 0.1.0",
+ "tokio-core 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
diff --git a/pbtc/commands/start.rs b/pbtc/commands/start.rs
index 7067fe7d..3e865ca2 100644
--- a/pbtc/commands/start.rs
+++ b/pbtc/commands/start.rs
@@ -1,5 +1,5 @@
use std::net::SocketAddr;
-use sync::create_sync_connection_factory;
+use sync::{create_local_sync_node, create_sync_connection_factory};
use message::Services;
use util::{open_db, init_db, node_table_path};
use {config, p2p, PROTOCOL_VERSION, PROTOCOL_MINIMUM};
@@ -34,9 +34,13 @@ pub fn start(cfg: config::Config) -> Result<(), String> {
};
let sync_handle = el.handle();
- let sync_connection_factory = create_sync_connection_factory(&sync_handle, cfg.magic, db);
+ let local_sync_node = create_local_sync_node(&sync_handle, cfg.magic, db);
+ let sync_connection_factory = create_sync_connection_factory(local_sync_node.clone());
- let _http_server = try!(rpc::new_http(cfg.rpc_config));
+ let rpc_deps = rpc::Dependencies {
+ local_sync_node: local_sync_node,
+ };
+ let _rpc_server = try!(rpc::new_http(cfg.rpc_config, rpc_deps));
let p2p = try!(p2p::P2P::new(p2p_cfg, sync_connection_factory, el.handle()).map_err(|x| x.to_string()));
try!(p2p.run().map_err(|_| "Failed to start p2p module"));
diff --git a/pbtc/rpc.rs b/pbtc/rpc.rs
index 30aae30e..e5fe5812 100644
--- a/pbtc/rpc.rs
+++ b/pbtc/rpc.rs
@@ -2,6 +2,11 @@ use std::net::SocketAddr;
use rpc_apis::{self, ApiSet};
use ethcore_rpc::{Server, RpcServer, RpcServerError};
use std::io;
+use sync;
+
+pub struct Dependencies {
+ pub local_sync_node: sync::LocalNodeRef,
+}
#[derive(Debug, PartialEq)]
pub struct HttpConfiguration {
@@ -26,23 +31,24 @@ impl HttpConfiguration {
}
}
-pub fn new_http(conf: HttpConfiguration) -> Result