use structopt::StructOpt;
use tendermint_abci::{KeyValueStoreApp, ServerBuilder};
use tracing_subscriber::filter::LevelFilter;
#[derive(Debug, StructOpt)]
struct Opt {
#[structopt(short, long, default_value = "127.0.0.1")]
host: String,
#[structopt(short, long, default_value = "26658")]
port: u16,
#[structopt(short, long, default_value = "1048576")]
read_buf_size: usize,
#[structopt(short, long)]
verbose: bool,
#[structopt(short, long)]
quiet: bool,
}
fn main() {
let opt: Opt = Opt::from_args();
let log_level = if opt.quiet {
LevelFilter::OFF
} else if opt.verbose {
LevelFilter::DEBUG
} else {
LevelFilter::INFO
};
tracing_subscriber::fmt().with_max_level(log_level).init();
let (app, driver) = KeyValueStoreApp::new();
let server = ServerBuilder::new(opt.read_buf_size)
.bind(format!("{}:{}", opt.host, opt.port), app)
.unwrap();
std::thread::spawn(move || driver.run());
server.listen().unwrap();
}