use core::ffi::c_void;
#[repr(C)]
#[derive(Clone, Copy)]
#[cfg(feature = "c-gateway")]
pub struct MbusGatewayCallbacks {
pub userdata: *mut c_void,
pub on_forward: Option<
unsafe extern "C" fn(session_id: u8, unit_id: u8, channel_idx: u16, userdata: *mut c_void),
>,
pub on_response_returned:
Option<unsafe extern "C" fn(session_id: u8, upstream_txn: u16, userdata: *mut c_void)>,
pub on_routing_miss:
Option<unsafe extern "C" fn(session_id: u8, unit_id: u8, userdata: *mut c_void)>,
pub on_downstream_timeout:
Option<unsafe extern "C" fn(session_id: u8, internal_txn: u16, userdata: *mut c_void)>,
pub on_upstream_disconnect: Option<unsafe extern "C" fn(session_id: u8, userdata: *mut c_void)>,
}
#[cfg(feature = "c-gateway")]
unsafe impl Send for MbusGatewayCallbacks {}
#[cfg(feature = "c-gateway")]
unsafe impl Sync for MbusGatewayCallbacks {}
#[cfg(feature = "c-gateway")]
impl Default for MbusGatewayCallbacks {
fn default() -> Self {
Self {
userdata: core::ptr::null_mut(),
on_forward: None,
on_response_returned: None,
on_routing_miss: None,
on_downstream_timeout: None,
on_upstream_disconnect: None,
}
}
}