media_driver/
media_driver.rs1use log::info;
2use rusteron_media_driver::*;
3use std::sync::atomic::{AtomicBool, Ordering};
4use std::sync::Arc;
5
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 let running = Arc::new(AtomicBool::new(true));
9 let running_clone = Arc::clone(&running);
10
11 ctrlc::set_handler(move || {
13 running_clone.store(false, Ordering::SeqCst);
14 })?;
15
16 let aeron_context = AeronDriverContext::new()?;
18 info!("aeron dir: {:?}", aeron_context.get_dir());
19 aeron_context.print_configuration();
20
21 let aeron_driver = AeronDriver::new(&aeron_context)?;
23 aeron_driver.start(true)?;
24 info!("Aeron media driver started successfully. Press Ctrl+C to stop.");
26
27 while running.load(Ordering::Acquire) {
29 aeron_driver.main_idle_strategy(aeron_driver.main_do_work()?);
30 }
31 info!("Received signal to stop the media driver.");
32 info!("Aeron media driver stopped successfully.");
33 Ok(())
34}