lmflow/ffi/graph/
observer.rs1#![allow(clippy::missing_safety_doc)]
2use super::*;
3
4#[no_mangle]
5pub unsafe extern "C" fn lmflow_graph_observe(
6 g: *mut LMFlowGraph,
7 port: *const c_char,
8 cb: Option<unsafe extern "C" fn(*mut c_void, LMFlowPacket)>,
9 user: *mut c_void,
10) -> i32 {
11 lmflow_graph_observe_ex(g, port, false, cb, user)
12}
13
14#[no_mangle]
15pub unsafe extern "C" fn lmflow_graph_observe_ex(
16 g: *mut LMFlowGraph,
17 port: *const c_char,
18 observe_timestamp_bounds: bool,
19 cb: Option<unsafe extern "C" fn(*mut c_void, LMFlowPacket)>,
20 user: *mut c_void,
21) -> i32 {
22 guard(|| {
23 let Some(f) = cb else {
24 return fail(Error::InvalidArg("callback is null".into()));
25 };
26 let Some(name) = cstr(port) else {
27 return fail(Error::InvalidArg("port name is null".into()));
28 };
29 with_graph(g, |gr| {
30 to_status(
31 gr.inner()
32 .add_observer(name, f, user, observe_timestamp_bounds),
33 )
34 })
35 })
36}