2018-03-03 23:13:40 -08:00
|
|
|
extern crate serde_json;
|
2018-03-27 15:24:05 -07:00
|
|
|
extern crate solana;
|
2018-02-28 17:04:35 -08:00
|
|
|
|
2018-03-27 15:24:05 -07:00
|
|
|
use solana::accountant::Accountant;
|
|
|
|
use solana::accountant_skel::AccountantSkel;
|
2018-03-26 11:17:19 -07:00
|
|
|
use std::io::{self, stdout, BufRead};
|
2018-03-22 13:05:23 -07:00
|
|
|
use std::sync::atomic::AtomicBool;
|
2018-03-26 21:03:26 -07:00
|
|
|
use std::sync::{Arc, Mutex};
|
2018-02-28 17:04:35 -08:00
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let addr = "127.0.0.1:8000";
|
2018-03-05 14:34:15 -08: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 13:05:23 -07: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 14:34:15 -08:00
|
|
|
eprintln!("Listening on {}", addr);
|
2018-03-23 20:49:28 -07:00
|
|
|
let threads = AccountantSkel::serve(skel, addr, exit.clone()).unwrap();
|
|
|
|
for t in threads {
|
|
|
|
t.join().expect("join");
|
|
|
|
}
|
2018-02-28 17:04:35 -08:00
|
|
|
}
|