parity-zcash/pbtc/main.rs

65 lines
1.5 KiB
Rust
Raw Normal View History

2016-09-30 05:44:50 -07:00
//! Parity bitcoin client.
#[macro_use]
extern crate clap;
extern crate tokio_core;
extern crate futures;
2016-09-30 05:44:50 -07:00
extern crate bitcrypto as crypto;
extern crate chain;
extern crate keys;
extern crate primitives;
extern crate script;
2016-09-30 05:59:16 -07:00
extern crate net;
extern crate p2p;
2016-10-02 18:01:46 -07:00
mod config;
2016-09-30 05:44:50 -07:00
use futures::stream::Stream;
use std::net::SocketAddr;
use p2p::connect::{Config as P2PConfig, self};
pub fn event_loop() -> tokio_core::reactor::Core {
tokio_core::reactor::Core::new().unwrap()
}
2016-09-30 05:44:50 -07:00
fn main() {
2016-10-02 18:01:46 -07:00
match run() {
Err(err) => println!("{}", err),
Ok(_) => (),
}
}
fn run() -> Result<(), String> {
2016-09-30 05:44:50 -07:00
let yaml = load_yaml!("cli.yml");
let matches = clap::App::from_yaml(yaml).get_matches();
2016-10-02 18:01:46 -07:00
let cfg = try!(config::parse(&matches));
2016-09-30 07:25:28 -07:00
let mut el = event_loop();
let handle = el.handle();
2016-10-02 18:01:46 -07:00
let p2p_cfg = P2PConfig {
magic: cfg.magic,
local_address: SocketAddr::new("127.0.0.1".parse().unwrap(), cfg.port),
services: Default::default(),
user_agent: "pbtc".into(),
start_height: 0,
relay: false,
};
if let Some(connect) = cfg.connect {
let c = connect::connect(&SocketAddr::new(connect, cfg.magic.port()), &handle, &p2p_cfg);
let connection = try!(el.run(c).map_err(|_| format!("Connect to {} failed", connect)));
2016-10-02 18:01:46 -07:00
}
2016-09-30 05:44:50 -07:00
let listen = try!(connect::listen(&handle, p2p_cfg).map_err(|_| "Cannot start listening".to_owned()));
let server = listen.for_each(|connection| {
println!("new connection: {:?}", connection.handshake_result);
Ok(())
});
el.run(server).unwrap();
2016-10-02 18:01:46 -07:00
Ok(())
2016-09-30 05:44:50 -07:00
}
2016-10-02 18:01:46 -07:00