mirror of
https://github.com/bspeice/aeron-rs
synced 2024-12-21 21:38:09 -05:00
Add a termination validator hook
Explains why `aeronmd` never actually shut down
This commit is contained in:
parent
b548c867c8
commit
730252127b
@ -17,6 +17,10 @@ unsafe extern "C" fn termination_hook(_clientd: *mut c_void) {
|
|||||||
RUNNING.store(false, Ordering::SeqCst);
|
RUNNING.store(false, Ordering::SeqCst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsafe extern "C" fn termination_validator(_state: *mut c_void, _buffer: *mut u8, _length: i32) -> bool {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let version = unsafe { CStr::from_ptr(aeron_version_full()) };
|
let version = unsafe { CStr::from_ptr(aeron_version_full()) };
|
||||||
let _cmdline = clap::App::new("aeronmd")
|
let _cmdline = clap::App::new("aeronmd")
|
||||||
@ -64,6 +68,25 @@ fn main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if init_success {
|
||||||
|
let term_validator = unsafe {
|
||||||
|
aeron_driver_context_set_driver_termination_validator(
|
||||||
|
context,
|
||||||
|
Some(termination_validator),
|
||||||
|
ptr::null_mut()
|
||||||
|
)
|
||||||
|
};
|
||||||
|
if term_validator < 0 {
|
||||||
|
let err_code = unsafe { aeron_errcode() };
|
||||||
|
let err_str = unsafe { CStr::from_ptr(aeron_errmsg()) }.to_str().unwrap();
|
||||||
|
eprintln!(
|
||||||
|
"ERROR: context set termination validator ({}), {}",
|
||||||
|
err_code, err_str
|
||||||
|
);
|
||||||
|
init_success = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if init_success {
|
if init_success {
|
||||||
let driver_init = unsafe { aeron_driver_init(&mut driver, context) };
|
let driver_init = unsafe { aeron_driver_init(&mut driver, context) };
|
||||||
if driver_init < 0 {
|
if driver_init < 0 {
|
||||||
|
Loading…
Reference in New Issue
Block a user