use rust_tango::{Consumer, DCache, Fseq, MCache, Producer};
fn main() {
let mcache = MCache::<64>::new();
let dcache = DCache::<64, 256>::new();
let fseq = Fseq::new(1);
let producer = Producer::new(&mcache, &dcache, &fseq);
let mut consumer = Consumer::new(&mcache, &dcache, 1);
for i in 0..5 {
let payload = format!("Hello, message {}!", i);
let meta = producer
.publish(payload.as_bytes(), i as u64, 0, 0)
.expect("publish failed");
println!("Published: seq={}, size={}", meta.seq, meta.size);
}
println!("\nConsuming messages:");
loop {
match consumer.poll() {
Ok(Some(fragment)) => {
let payload = fragment.payload.as_slice();
let message = std::str::from_utf8(payload).unwrap_or("<invalid utf8>");
println!(
" Received: seq={}, sig={}, payload=\"{}\"",
fragment.meta.seq, fragment.meta.sig, message
);
}
Ok(None) => {
println!("No more messages available");
break;
}
Err(e) => {
eprintln!("Error: {}", e);
break;
}
}
}
}