extern crate futures;
extern crate synac;
extern crate tokio_core;
use futures::Future;
use std::cell::RefCell;
use std::net::ToSocketAddrs;
use synac::{Session, State};
use tokio_core::reactor::Core;
fn main() {
let mut core = Core::new().unwrap();
let session = Session::new(
&env!("ADDR").to_socket_addrs().unwrap().next().unwrap(),
env!("HASH"),
&core.handle()
);
let mut session = core.run(session).unwrap();
session.login_with_token(true, env!("USERNAME"), env!("TOKEN")).unwrap();
let state = RefCell::new(State::new());
core.run(session.read_loop(move |packet| {
state.borrow_mut().update(&packet);
println!("{:?}", packet);
}).map_err(|_| ())).unwrap();
}