Client app event handler

This commit is contained in:
arkpar
2016-01-16 13:30:27 +01:00
parent a53bbaef55
commit d07934ffee
3 changed files with 41 additions and 6 deletions

View File

@@ -4,13 +4,15 @@ extern crate rustc_serialize;
extern crate log;
extern crate env_logger;
use std::io::*;
use std::io::stdin;
use std::env;
use log::{LogLevelFilter};
use env_logger::LogBuilder;
use util::hash::*;
use util::*;
use ethcore::client::*;
use ethcore::service::ClientService;
use ethcore::ethereum;
use ethcore::sync::*;
fn setup_log() {
let mut builder = LogBuilder::new();
@@ -26,7 +28,9 @@ fn setup_log() {
fn main() {
setup_log();
let spec = ethereum::new_frontier();
let mut _service = ClientService::start(spec).unwrap();
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");
loop {
let mut cmd = String::new();
stdin().read_line(&mut cmd).unwrap();
@@ -36,3 +40,21 @@ fn main() {
}
}
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 {
println!("Chain info: {:?}", self.client.read().unwrap().deref().chain_info());
}
}
}