Solstice client.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

49 lines
1.0 KiB

// Still no 2018 way of using the log crate without `use log::*` everywhere.
#[macro_use]
extern crate log;
use std::thread;
use crossbeam_channel;
use env_logger;
mod client;
mod config;
mod context;
mod control;
mod dispatcher;
mod executor;
mod handlers;
mod login;
mod message_handler;
mod proto;
mod room;
mod user;
fn main() {
env_logger::init();
let (proto_to_client_tx, proto_to_client_rx) = crossbeam_channel::unbounded();
let mut proto_agent = match proto::Agent::new(proto_to_client_tx) {
Ok(agent) => agent,
Err(err) => {
error!("Error initializing protocol agent: {}", err);
return;
}
};
let client_to_proto_tx = proto_agent.channel();
let (control_to_client_tx, control_to_client_rx) =
crossbeam_channel::unbounded();
let mut client = client::Client::new(
client_to_proto_tx,
proto_to_client_rx,
control_to_client_rx,
);
thread::spawn(move || control::listen(control_to_client_tx));
thread::spawn(move || proto_agent.run().unwrap());
client.run();
}