2018-03-04 00:13:40 -07:00
|
|
|
extern crate serde_json;
|
2018-02-28 18:04:35 -07:00
|
|
|
extern crate silk;
|
|
|
|
|
|
|
|
use silk::accountant::Accountant;
|
2018-03-26 22:03:26 -06:00
|
|
|
use silk::accountant_skel::AccountantSkel;
|
2018-03-26 11:17:19 -07:00
|
|
|
use std::io::{self, stdout, BufRead};
|
2018-03-22 14:05:23 -06:00
|
|
|
use std::sync::atomic::AtomicBool;
|
2018-03-26 22:03:26 -06:00
|
|
|
use std::sync::{Arc, Mutex};
|
2018-02-28 18:04:35 -07:00
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let addr = "127.0.0.1:8000";
|
2018-03-05 15:34:15 -07:00
|
|
|
let stdin = io::stdin();
|
|
|
|
let entries = stdin
|
|
|
|
.lock()
|
|
|
|
.lines()
|
|
|
|
.map(|line| serde_json::from_str(&line.unwrap()).unwrap());
|
|
|
|
let acc = Accountant::new_from_entries(entries, Some(1000));
|
2018-03-22 14:05:23 -06:00
|
|
|
let exit = Arc::new(AtomicBool::new(false));
|
2018-03-26 11:17:19 -07:00
|
|
|
let skel = Arc::new(Mutex::new(AccountantSkel::new(acc, stdout())));
|
2018-03-05 15:34:15 -07:00
|
|
|
eprintln!("Listening on {}", addr);
|
2018-03-23 21:49:28 -06:00
|
|
|
let threads = AccountantSkel::serve(skel, addr, exit.clone()).unwrap();
|
|
|
|
for t in threads {
|
|
|
|
t.join().expect("join");
|
|
|
|
}
|
2018-02-28 18:04:35 -07:00
|
|
|
}
|