openethereum/src/bin/client.rs

63 lines
1.6 KiB
Rust
Raw Normal View History

2015-12-22 22:19:50 +01:00
extern crate ethcore_util as util;
2016-01-07 16:08:12 +01:00
extern crate ethcore;
extern crate rustc_serialize;
extern crate log;
2016-01-09 23:21:57 +01:00
extern crate env_logger;
2015-12-22 22:19:50 +01:00
2016-01-16 13:30:27 +01:00
use std::io::stdin;
use std::env;
2016-01-15 01:44:57 +01:00
use log::{LogLevelFilter};
use env_logger::LogBuilder;
2016-01-16 13:30:27 +01:00
use util::*;
use ethcore::client::*;
2016-01-13 23:15:44 +01:00
use ethcore::service::ClientService;
use ethcore::ethereum;
2016-01-16 13:30:27 +01:00
use ethcore::sync::*;
2015-12-22 22:19:50 +01:00
fn setup_log() {
let mut builder = LogBuilder::new();
2016-01-15 01:44:57 +01:00
builder.filter(None, LogLevelFilter::Info);
if env::var("RUST_LOG").is_ok() {
builder.parse(&env::var("RUST_LOG").unwrap());
}
builder.init().unwrap();
}
2015-12-22 22:19:50 +01:00
fn main() {
setup_log();
let spec = ethereum::new_frontier();
2016-01-16 13:30:27 +01:00
let mut service = ClientService::start(spec).unwrap();
let io_handler = Box::new(ClientIoHandler { client: service.client(), timer: 0 });
service.io().register_handler(io_handler).expect("Error registering IO handler");
2015-12-22 22:19:50 +01:00
loop {
let mut cmd = String::new();
stdin().read_line(&mut cmd).unwrap();
2016-01-07 16:08:12 +01:00
if cmd == "quit\n" || cmd == "exit\n" || cmd == "q\n" {
2015-12-22 22:19:50 +01:00
break;
}
}
}
2016-01-16 13:30:27 +01:00
struct ClientIoHandler {
client: Arc<RwLock<Client>>,
timer: TimerToken,
}
impl IoHandler<NetSyncMessage> for ClientIoHandler {
fn initialize<'s>(&'s mut self, io: &mut IoContext<'s, NetSyncMessage>) {
self.timer = io.register_timer(5000).expect("Error registering timer");
}
fn timeout<'s>(&'s mut self, _io: &mut IoContext<'s, NetSyncMessage>, timer: TimerToken) {
if self.timer == timer {
2016-01-18 19:23:28 +01:00
self.client.tick();
println!("Chain info: {}", self.client.read().unwrap().deref().chain_info());
println!("Cache info: {:?}", self.client.read().unwrap().deref().cache_info());
2016-01-16 13:30:27 +01:00
}
}
}