parity-zcash/pbtc/main.rs

54 lines
1.1 KiB
Rust
Raw Normal View History

2016-09-30 05:44:50 -07:00
//! Parity bitcoin client.
#[macro_use]
extern crate clap;
extern crate keys;
extern crate script;
2016-10-03 07:29:07 -07:00
extern crate message;
2016-09-30 05:59:16 -07:00
extern crate p2p;
2016-10-02 18:01:46 -07:00
mod config;
2016-09-30 05:44:50 -07:00
use std::net::SocketAddr;
2016-10-13 00:17:29 -07:00
use p2p::{P2P, event_loop, forever, net};
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();
2016-10-02 18:01:46 -07:00
2016-10-04 03:33:23 -07:00
let p2p_cfg = p2p::Config {
2016-10-17 16:44:52 -07:00
threads: 4,
protocol_minimum: 70001,
protocol_maximum: 70017,
inbound_connections: 10,
outbound_connections: 10,
2016-10-04 03:33:23 -07:00
connection: net::Config {
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,
},
2016-10-17 16:44:52 -07:00
peers: cfg.connect.map_or_else(|| vec![], |x| vec![x]),
seeds: cfg.seednode.map_or_else(|| vec![], |x| vec![x]),
};
2016-10-13 00:17:29 -07:00
let p2p = P2P::new(p2p_cfg, el.handle());
try!(p2p.run().map_err(|_| "Failed to start p2p module"));
el.run(forever()).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