mod server;
mod store;
mod protocol;
mod command;
mod config;
use std::sync::Arc;
use config::Config;
use server::run_server;
use store::{spawn_cleanup, Store};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let cfg = Config::load()?;
let addr = cfg.addr();
let store = Arc::new(Store::new(cfg.max_memory_bytes()));
spawn_cleanup(store.clone(), std::time::Duration::from_secs(60));
println!(
"rust-cache listening on {} (max_memory_mb={:?}, read_buffer_kb={})",
addr,
cfg.max_memory_mb,
cfg.read_buffer_size() / 1024
);
run_server(addr, store, cfg.read_buffer_size(), Arc::new(cfg)).await
}