mirror of
https://github.com/bspeice/aeron-rs
synced 2025-06-30 21:36:35 -04:00
Reversion and cleanup
Moving the `aeronmd` example to the sys crate caused issues for static linking because of the `tempfile` crate. Revert "Install luuid for Linux" Revert "Fix some Cargo.toml issues" Revert "More minor cleanup"
This commit is contained in:
@ -15,8 +15,3 @@ dunce = "1.0.0"
|
||||
|
||||
[features]
|
||||
static = []
|
||||
|
||||
[dev-dependencies]
|
||||
clap = "2.33"
|
||||
ctrlc = "3.1.3"
|
||||
tempfile = "3.1"
|
||||
|
@ -1,96 +0,0 @@
|
||||
//! Media driver startup example based on
|
||||
//! [aeronmd.c](https://github.com/real-logic/aeron/blob/master/aeron-driver/src/main/c/aeronmd.c)
|
||||
#![deny(missing_docs)]
|
||||
|
||||
use aeron_driver_sys::*;
|
||||
use clap;
|
||||
use ctrlc;
|
||||
use std::ffi::CStr;
|
||||
use std::os::raw::c_void;
|
||||
use std::ptr;
|
||||
use std::sync::atomic::{AtomicBool, Ordering};
|
||||
|
||||
static RUNNING: AtomicBool = AtomicBool::new(true);
|
||||
|
||||
unsafe extern "C" fn termination_hook(_clientd: *mut c_void) {
|
||||
RUNNING.store(false, Ordering::SeqCst);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let version = unsafe { CStr::from_ptr(aeron_version_full()) };
|
||||
let _cmdline = clap::App::new("aeronmd")
|
||||
.version(version.to_str().unwrap())
|
||||
.get_matches();
|
||||
|
||||
// TODO: Handle -D switches
|
||||
|
||||
ctrlc::set_handler(move || {
|
||||
// TODO: Actually understand atomic ordering
|
||||
RUNNING.store(false, Ordering::SeqCst);
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
let mut init_success = true;
|
||||
let mut context: *mut aeron_driver_context_t = ptr::null_mut();
|
||||
let mut driver: *mut aeron_driver_t = ptr::null_mut();
|
||||
|
||||
if init_success {
|
||||
let context_init = unsafe { aeron_driver_context_init(&mut context) };
|
||||
if context_init < 0 {
|
||||
let err_code = unsafe { aeron_errcode() };
|
||||
let err_str = unsafe { CStr::from_ptr(aeron_errmsg()) }.to_str().unwrap();
|
||||
eprintln!("ERROR: context init ({}) {}", err_code, err_str);
|
||||
init_success = false;
|
||||
}
|
||||
}
|
||||
|
||||
if init_success {
|
||||
let term_hook = unsafe {
|
||||
aeron_driver_context_set_driver_termination_hook(
|
||||
context,
|
||||
Some(termination_hook),
|
||||
ptr::null_mut(),
|
||||
)
|
||||
};
|
||||
if term_hook < 0 {
|
||||
let err_code = unsafe { aeron_errcode() };
|
||||
let err_str = unsafe { CStr::from_ptr(aeron_errmsg()) }.to_str().unwrap();
|
||||
eprintln!(
|
||||
"ERROR: context set termination hook ({}) {}",
|
||||
err_code, err_str
|
||||
);
|
||||
init_success = false;
|
||||
}
|
||||
}
|
||||
|
||||
if init_success {
|
||||
let driver_init = unsafe { aeron_driver_init(&mut driver, context) };
|
||||
if driver_init < 0 {
|
||||
let err_code = unsafe { aeron_errcode() };
|
||||
let err_str = unsafe { CStr::from_ptr(aeron_errmsg()) }.to_str().unwrap();
|
||||
eprintln!("ERROR: driver init ({}) {}", err_code, err_str);
|
||||
init_success = false;
|
||||
}
|
||||
}
|
||||
|
||||
if init_success {
|
||||
let driver_start = unsafe { aeron_driver_start(driver, true) };
|
||||
if driver_start < 0 {
|
||||
let err_code = unsafe { aeron_errcode() };
|
||||
let err_str = unsafe { CStr::from_ptr(aeron_errmsg()) }.to_str().unwrap();
|
||||
eprintln!("ERROR: driver start ({}) {}", err_code, err_str);
|
||||
init_success = false;
|
||||
}
|
||||
}
|
||||
|
||||
if init_success {
|
||||
println!("Press Ctrl-C to exit.");
|
||||
|
||||
while RUNNING.load(Ordering::SeqCst) {
|
||||
unsafe { aeron_driver_main_idle_strategy(driver, aeron_driver_main_do_work(driver)) };
|
||||
}
|
||||
}
|
||||
|
||||
unsafe { aeron_driver_close(driver) };
|
||||
unsafe { aeron_driver_context_close(context) };
|
||||
}
|
@ -6,6 +6,8 @@ include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::*;
|
||||
use std::convert::TryInto;
|
||||
|
||||
#[test]
|
||||
fn version_check() {
|
||||
|
Reference in New Issue
Block a user