bin/darkfid2: Add some debug stanzas.

This commit is contained in:
parazyd
2021-09-17 09:02:42 +02:00
parent a8b1771a4a
commit 18dc8cf00b

View File

@@ -1,8 +1,13 @@
use async_std::sync::Arc;
use log::*;
use std::path::PathBuf;
use clap::clap_app;
use serde_json::{json, Value};
use simplelog::{
CombinedLogger, Config as SimLogConfig, ConfigBuilder, LevelFilter, TermLogger, TerminalMode,
WriteLogger,
};
use tokio::io::{AsyncReadExt, AsyncWriteExt};
use tokio::net::TcpListener;
@@ -52,6 +57,8 @@ impl Darkfid {
));
}
debug!(target: "RPC", "--> {:#?}", serde_json::to_string(&req).unwrap());
match req.method.as_str() {
Some("say_hello") => return self.say_hello(req.id, req.params).await,
Some("create_wallet") => return self.create_wallet(req.id, req.params).await,
@@ -189,33 +196,54 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let darkfid = Darkfid::new(args.clone().is_present("verbose"), config_path)?;
// TODO: TLS
let listener = TcpListener::bind(darkfid.clone().config.rpc_url).await?;
debug!(target: "RPC SERVER", "Listening on {}", darkfid.clone().config.rpc_url);
let logger_config = ConfigBuilder::new().set_time_format_str("%T%.6f").build();
let debug_level = if args.is_present("verbose") {
LevelFilter::Debug
} else {
LevelFilter::Off
};
let log_path = darkfid.clone().config.log_path;
CombinedLogger::init(vec![
TermLogger::new(debug_level, logger_config, TerminalMode::Mixed).unwrap(),
WriteLogger::new(
LevelFilter::Debug,
SimLogConfig::default(),
std::fs::File::create(log_path).unwrap(),
),
])
.unwrap();
loop {
let (mut socket, _) = listener.accept().await?;
debug!(target: "RPC SERVER", "waiting for client");
println!("Accepted client");
let (mut socket, _) = listener.accept().await?;
let darkfid = darkfid.clone();
debug!(target: "RPC SERVER", "accepted client");
tokio::spawn(async move {
let mut buf = [0; 2048];
loop {
let n = match socket.read(&mut buf).await {
Ok(n) if n == 0 => {
println!("Closed connection");
debug!(target: "RPC SERVER", "closed connection");
return;
}
Ok(n) => n,
Err(e) => {
eprintln!("failed to read from socket; err = {:?}", e);
debug!(target: "RPC SERVER", "failed to read from socket; err = {:?}", e);
return;
}
};
let r: JsonRequest = match serde_json::from_slice(&buf[0..n]) {
Ok(r) => r,
Err(_) => {
eprintln!("received invalid json");
Err(e) => {
debug!(target: "RPC SERVER", "received invalid json; err = {:?}", e);
return;
}
};
@@ -223,9 +251,11 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
let reply = darkfid.clone().handle_request(r).await;
let j = serde_json::to_string(&reply).unwrap();
debug!(target: "RPC", "<-- {:#?}", j);
// Write the data back
if let Err(e) = socket.write_all(j.as_bytes()).await {
eprintln!("failed to writeto socket; err = {:?}", e);
debug!(target: "RPC SERVER", "failed to write to socket; err = {:?}", e);
return;
}
}