1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
//!
//! Logic of `btm daemon ...`
//!
use crate::{
api::model::{Req, Resp, SERVER_US_ADDR},
BtmCfg,
};
use ruc::{uau::UauSock, *};
/// Run `btm daemon ...` server
pub fn run_daemon(cfg: BtmCfg) -> Result<()> {
let s = pnk!(UauSock::new(SERVER_US_ADDR, None));
loop {
if let Ok((msg, peer)) = s.recv_128() {
if let Ok(r) = info!(serde_json::from_slice::<Req>(&msg)) {
let success = info!(cfg.snapshot(r.idx())).is_ok();
s.send(&Resp::new(r.idx(), success).to_bytes(), &peer)
.c(d!())?;
}
}
}
}