use meadow::prelude::*;
use std::time::Duration;
fn main() -> Result<(), meadow::Error> {
logging();
type N = Tcp;
let mut host: Host = HostConfig::default().with_udp_config(None).build()?;
host.start()?;
println!("Host should be running in the background");
let writer = NodeConfig::<Blocking, N, _>::new("subscription")
.build()?
.activate()?;
let reader = NodeConfig::<Blocking, N, usize>::new("subscription")
.build()?
.subscribe(Duration::from_millis(500))?;
for i in 0..5usize {
println!("publishing {}", i);
writer.publish(i).unwrap();
std::thread::sleep(std::time::Duration::from_millis(1000));
let result = writer.request()?.data;
dbg!(result);
assert_eq!(writer.request()?.data, i);
assert_eq!(reader.get_subscribed_data()?.data, i);
}
Ok(())
}
fn logging() {
use std::{fs::File, sync::Arc};
use tracing_subscriber::{filter, prelude::*};
let file = File::create("logs/debug.log");
let file = match file {
Ok(file) => file,
Err(error) => panic!("Error: {:?}", error),
};
let log = tracing_subscriber::fmt::layer()
.compact()
.with_ansi(true)
.with_line_number(true)
.with_writer(Arc::new(file));
tracing_subscriber::registry()
.with(
log
.with_filter(filter::LevelFilter::INFO), )
.init();
}