moving to the single binary (#1710)
This commit is contained in:
parent
856657e39a
commit
f614a69929
@ -65,10 +65,6 @@ ipc = ["ethcore/ipc"]
|
|||||||
path = "parity/main.rs"
|
path = "parity/main.rs"
|
||||||
name = "parity"
|
name = "parity"
|
||||||
|
|
||||||
[[bin]]
|
|
||||||
path = "parity/sync/main.rs"
|
|
||||||
name = "sync"
|
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
debug = true
|
debug = true
|
||||||
lto = false
|
lto = false
|
||||||
|
@ -78,6 +78,7 @@ mod account;
|
|||||||
mod blockchain;
|
mod blockchain;
|
||||||
mod presale;
|
mod presale;
|
||||||
mod run;
|
mod run;
|
||||||
|
mod sync;
|
||||||
|
|
||||||
use std::{process, env};
|
use std::{process, env};
|
||||||
use cli::print_version;
|
use cli::print_version;
|
||||||
@ -111,6 +112,12 @@ fn start() -> Result<String, String> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
// just redirect to the sync::main()
|
||||||
|
if std::env::args().nth(1).map(|arg| arg == "sync").unwrap_or(false) {
|
||||||
|
sync::main();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
match start() {
|
match start() {
|
||||||
Ok(result) => {
|
Ok(result) => {
|
||||||
print!("{}", result);
|
print!("{}", result);
|
||||||
|
@ -25,6 +25,13 @@ use self::no_ipc_deps::*;
|
|||||||
use self::ipc_deps::*;
|
use self::ipc_deps::*;
|
||||||
use ethcore_logger::Config as LogConfig;
|
use ethcore_logger::Config as LogConfig;
|
||||||
|
|
||||||
|
pub mod service_urls {
|
||||||
|
pub const CLIENT: &'static str = "ipc:///tmp/parity-chain.ipc";
|
||||||
|
pub const SYNC: &'static str = "ipc:///tmp/parity-sync.ipc";
|
||||||
|
pub const SYNC_NOTIFY: &'static str = "ipc:///tmp/parity-sync-notify.ipc";
|
||||||
|
pub const NETWORK_MANAGER: &'static str = "ipc:///tmp/parity-manage-net.ipc";
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(not(feature="ipc"))]
|
#[cfg(not(feature="ipc"))]
|
||||||
mod no_ipc_deps {
|
mod no_ipc_deps {
|
||||||
pub use ethsync::{EthSync, SyncProvider, ManageNetwork};
|
pub use ethsync::{EthSync, SyncProvider, ManageNetwork};
|
||||||
@ -51,7 +58,6 @@ mod ipc_deps {
|
|||||||
pub use ipc::binary::serialize;
|
pub use ipc::binary::serialize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[cfg(feature="ipc")]
|
#[cfg(feature="ipc")]
|
||||||
pub fn hypervisor() -> Option<Hypervisor> {
|
pub fn hypervisor() -> Option<Hypervisor> {
|
||||||
Some(Hypervisor::new())
|
Some(Hypervisor::new())
|
||||||
@ -74,11 +80,11 @@ fn sync_arguments(sync_cfg: SyncConfig, net_cfg: NetworkConfiguration, log_setti
|
|||||||
|
|
||||||
// client service url and logging settings are passed in command line
|
// client service url and logging settings are passed in command line
|
||||||
let mut cli_args = Vec::new();
|
let mut cli_args = Vec::new();
|
||||||
cli_args.push("ipc:///tmp/parity-chain.ipc".to_owned());
|
cli_args.push("sync".to_owned());
|
||||||
if !log_settings.color { cli_args.push("--no-color".to_owned()); }
|
if !log_settings.color { cli_args.push("--no-color".to_owned()); }
|
||||||
if let Some(ref init) = log_settings.init {
|
if let Some(ref mode) = log_settings.mode {
|
||||||
cli_args.push("-l".to_owned());
|
cli_args.push("-l".to_owned());
|
||||||
cli_args.push(init.to_owned());
|
cli_args.push(mode.to_owned());
|
||||||
}
|
}
|
||||||
if let Some(ref file) = log_settings.file {
|
if let Some(ref file) = log_settings.file {
|
||||||
cli_args.push("--log-file".to_owned());
|
cli_args.push("--log-file".to_owned());
|
||||||
@ -100,14 +106,14 @@ pub fn sync
|
|||||||
-> Result<SyncModules, ethcore::error::Error>
|
-> Result<SyncModules, ethcore::error::Error>
|
||||||
{
|
{
|
||||||
let mut hypervisor = hypervisor_ref.take().expect("There should be hypervisor for ipc configuration");
|
let mut hypervisor = hypervisor_ref.take().expect("There should be hypervisor for ipc configuration");
|
||||||
hypervisor = hypervisor.module(SYNC_MODULE_ID, "sync", sync_arguments(sync_cfg, net_cfg, log_settings));
|
hypervisor = hypervisor.module(SYNC_MODULE_ID, "parity", sync_arguments(sync_cfg, net_cfg, log_settings));
|
||||||
|
|
||||||
hypervisor.start();
|
hypervisor.start();
|
||||||
hypervisor.wait_for_startup();
|
hypervisor.wait_for_startup();
|
||||||
|
|
||||||
let sync_client = init_client::<SyncClient<_>>("ipc:///tmp/parity-sync.ipc").unwrap();
|
let sync_client = init_client::<SyncClient<_>>(service_urls::SYNC).unwrap();
|
||||||
let notify_client = init_client::<ChainNotifyClient<_>>("ipc:///tmp/parity-sync-notify.ipc").unwrap();
|
let notify_client = init_client::<ChainNotifyClient<_>>(service_urls::SYNC_NOTIFY).unwrap();
|
||||||
let manage_client = init_client::<NetworkManagerClient<_>>("ipc:///tmp/parity-manage-net.ipc").unwrap();
|
let manage_client = init_client::<NetworkManagerClient<_>>(service_urls::NETWORK_MANAGER).unwrap();
|
||||||
|
|
||||||
*hypervisor_ref = Some(hypervisor);
|
*hypervisor_ref = Some(hypervisor);
|
||||||
Ok((sync_client, manage_client, notify_client))
|
Ok((sync_client, manage_client, notify_client))
|
||||||
|
@ -28,6 +28,8 @@ use ethcore::account_provider::AccountProvider;
|
|||||||
use ethcore::miner::{Miner, MinerService, ExternalMiner, MinerOptions};
|
use ethcore::miner::{Miner, MinerService, ExternalMiner, MinerOptions};
|
||||||
use ethsync::SyncConfig;
|
use ethsync::SyncConfig;
|
||||||
use informant::Informant;
|
use informant::Informant;
|
||||||
|
#[cfg(feature="ipc")]
|
||||||
|
use ethcore::client::ChainNotify;
|
||||||
|
|
||||||
use rpc::{HttpServer, IpcServer, HttpConfiguration, IpcConfiguration};
|
use rpc::{HttpServer, IpcServer, HttpConfiguration, IpcConfiguration};
|
||||||
use signer::SignerServer;
|
use signer::SignerServer;
|
||||||
|
@ -16,18 +16,9 @@
|
|||||||
|
|
||||||
//! Parity sync service
|
//! Parity sync service
|
||||||
|
|
||||||
extern crate ethcore_ipc_nano as nanoipc;
|
use nanoipc;
|
||||||
extern crate ethcore_ipc_hypervisor as hypervisor;
|
use ipc;
|
||||||
extern crate ethcore_ipc as ipc;
|
use std;
|
||||||
extern crate ctrlc;
|
|
||||||
#[macro_use] extern crate log;
|
|
||||||
extern crate ethsync;
|
|
||||||
extern crate rustc_serialize;
|
|
||||||
extern crate docopt;
|
|
||||||
extern crate ethcore;
|
|
||||||
extern crate ethcore_util as util;
|
|
||||||
extern crate ethcore_logger;
|
|
||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use hypervisor::{HypervisorServiceClient, SYNC_MODULE_ID, HYPERVISOR_IPC_URL};
|
use hypervisor::{HypervisorServiceClient, SYNC_MODULE_ID, HYPERVISOR_IPC_URL};
|
||||||
use ctrlc::CtrlC;
|
use ctrlc::CtrlC;
|
||||||
@ -37,13 +28,13 @@ use ethcore::client::{RemoteClient, ChainNotify};
|
|||||||
use ethsync::{SyncProvider, EthSync, ManageNetwork, ServiceConfiguration};
|
use ethsync::{SyncProvider, EthSync, ManageNetwork, ServiceConfiguration};
|
||||||
use std::thread;
|
use std::thread;
|
||||||
use nanoipc::IpcInterface;
|
use nanoipc::IpcInterface;
|
||||||
|
use modules::service_urls;
|
||||||
use ethcore_logger::{Config as LogConfig, setup_log};
|
use ethcore_logger::{Config as LogConfig, setup_log};
|
||||||
|
|
||||||
const USAGE: &'static str = "
|
const USAGE: &'static str = "
|
||||||
Ethcore sync service
|
Ethcore sync service
|
||||||
Usage:
|
Usage:
|
||||||
sync <client-url> [options]
|
parity sync [options]
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
-l --logging LOGGING Specify the logging level. Must conform to the same
|
-l --logging LOGGING Specify the logging level. Must conform to the same
|
||||||
@ -55,7 +46,6 @@ Usage:
|
|||||||
|
|
||||||
#[derive(Debug, RustcDecodable)]
|
#[derive(Debug, RustcDecodable)]
|
||||||
struct Args {
|
struct Args {
|
||||||
arg_client_url: String,
|
|
||||||
flag_logging: Option<String>,
|
flag_logging: Option<String>,
|
||||||
flag_log_file: Option<String>,
|
flag_log_file: Option<String>,
|
||||||
flag_no_color: bool,
|
flag_no_color: bool,
|
||||||
@ -83,7 +73,7 @@ fn run_service<T: ?Sized + Send + Sync + 'static>(addr: &str, stop_guard: Arc<At
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
pub fn main() {
|
||||||
use std::io::{self, Read};
|
use std::io::{self, Read};
|
||||||
|
|
||||||
let args: Args = Docopt::new(USAGE)
|
let args: Args = Docopt::new(USAGE)
|
||||||
@ -96,16 +86,16 @@ fn main() {
|
|||||||
io::stdin().read_to_end(&mut buffer).expect("Failed to read initialisation payload");
|
io::stdin().read_to_end(&mut buffer).expect("Failed to read initialisation payload");
|
||||||
let service_config = ipc::binary::deserialize::<ServiceConfiguration>(&buffer).expect("Failed deserializing initialisation payload");
|
let service_config = ipc::binary::deserialize::<ServiceConfiguration>(&buffer).expect("Failed deserializing initialisation payload");
|
||||||
|
|
||||||
let remote_client = nanoipc::init_client::<RemoteClient<_>>(&args.arg_client_url).unwrap();
|
let remote_client = nanoipc::init_client::<RemoteClient<_>>(service_urls::CLIENT).unwrap();
|
||||||
|
|
||||||
remote_client.handshake().unwrap();
|
remote_client.handshake().unwrap();
|
||||||
|
|
||||||
let stop = Arc::new(AtomicBool::new(false));
|
let stop = Arc::new(AtomicBool::new(false));
|
||||||
let sync = EthSync::new(service_config.sync, remote_client.service().clone(), service_config.net).unwrap();
|
let sync = EthSync::new(service_config.sync, remote_client.service().clone(), service_config.net).unwrap();
|
||||||
|
|
||||||
run_service("ipc:///tmp/parity-sync.ipc", stop.clone(), sync.clone() as Arc<SyncProvider>);
|
run_service(service_urls::SYNC, stop.clone(), sync.clone() as Arc<SyncProvider>);
|
||||||
run_service("ipc:///tmp/parity-manage-net.ipc", stop.clone(), sync.clone() as Arc<ManageNetwork>);
|
run_service(service_urls::NETWORK_MANAGER, stop.clone(), sync.clone() as Arc<ManageNetwork>);
|
||||||
run_service("ipc:///tmp/parity-sync-notify.ipc", stop.clone(), sync.clone() as Arc<ChainNotify>);
|
run_service(service_urls::SYNC_NOTIFY, stop.clone(), sync.clone() as Arc<ChainNotify>);
|
||||||
|
|
||||||
let hypervisor_client = nanoipc::init_client::<HypervisorServiceClient<_>>(HYPERVISOR_IPC_URL).unwrap();
|
let hypervisor_client = nanoipc::init_client::<HypervisorServiceClient<_>>(HYPERVISOR_IPC_URL).unwrap();
|
||||||
hypervisor_client.handshake().unwrap();
|
hypervisor_client.handshake().unwrap();
|
Loading…
Reference in New Issue
Block a user