use std::sync::Arc;
use slotbus::transport::Request;
use slotbus::{SlotBusConfig, SlotWorker};
fn main() {
tracing_subscriber::fmt()
.with_env_filter("slotbus=debug")
.init();
let config = SlotBusConfig::builder().name("echo").build();
let worker =
SlotWorker::open(config).expect("failed to open slotbus region — is the hub running?");
let worker = Arc::new(worker);
println!("echo worker connected to slotbus region");
println!("waiting for requests... (press Ctrl+C to stop)");
let handle = worker
.clone()
.start_receive_loop(move |w, slot, req: Request| {
println!(
"[slot {}] {} {} ({} bytes)",
slot,
req.method,
req.path,
req.body.len(),
);
let status = 200;
let body = req.body;
let content_type = "application/octet-stream";
w.send_response(slot, status, body, content_type, vec![])
.expect("failed to send response");
});
handle.join().expect("receive loop panicked");
}