use log::info;
use rusteron_media_driver::*;
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::Arc;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let running = Arc::new(AtomicBool::new(true));
let running_clone = Arc::clone(&running);
ctrlc::set_handler(move || {
running_clone.store(false, Ordering::SeqCst);
})?;
let aeron_context = AeronDriverContext::new()?;
info!("aeron dir: {:?}", aeron_context.get_dir());
aeron_context.print_configuration();
let aeron_driver = AeronDriver::new(&aeron_context)?;
aeron_driver.start(true)?;
info!("Aeron media driver started successfully. Press Ctrl+C to stop.");
while running.load(Ordering::Acquire) {
aeron_driver.main_idle_strategy(aeron_driver.main_do_work()?);
}
info!("Received signal to stop the media driver.");
info!("Aeron media driver stopped successfully.");
Ok(())
}