use dlog_sys::{log_id_t, log_priority};
use libc::timespec;
use std::ffi::{c_char, c_int, c_uint};
#[repr(C)]
#[allow(non_camel_case_types)]
pub enum dlogutil_sorting_order {
DLOGUTIL_SORT_SENT_MONO = 0,
DLOGUTIL_SORT_SENT_REAL,
DLOGUTIL_SORT_RECV_MONO,
DLOGUTIL_SORT_RECV_REAL,
DLOGUTIL_SORT_DEFAULT,
}
#[repr(C)]
pub struct dlogutil_config {
_data: [u8; 0],
_marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}
#[repr(C)]
pub struct dlogutil_state {
_data: [u8; 0],
_marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}
#[repr(C)]
pub struct dlogutil_entry {
_data: [u8; 0],
_marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}
extern "C" {
pub fn dlogutil_config_create() -> *mut dlogutil_config;
pub fn dlogutil_config_destroy(config: *mut dlogutil_config);
pub fn dlogutil_config_filter_tid(config: *mut dlogutil_config, tid: c_int) -> c_int;
pub fn dlogutil_config_filter_pid(config: *mut dlogutil_config, pid: c_int) -> c_int;
pub fn dlogutil_config_filter_filterspec(
config: *mut dlogutil_config,
query: *const c_char,
) -> c_int;
pub fn dlogutil_config_sorting_disable(config: *mut dlogutil_config) -> c_int;
pub fn dlogutil_config_sorting_enable(config: *mut dlogutil_config) -> c_int;
pub fn dlogutil_config_sorting_enable_with_size(
config: *mut dlogutil_config,
entry_count: c_uint,
) -> c_int;
pub fn dlogutil_config_order_set(
config: *mut dlogutil_config,
sort_by: dlogutil_sorting_order,
) -> c_int;
pub fn dlogutil_config_buffer_add(config: *mut dlogutil_config, buf: log_id_t) -> c_int;
pub fn dlogutil_state_destroy(state: *mut dlogutil_state);
pub fn dlogutil_config_connect(
config: *mut dlogutil_config,
out_state: *mut *mut dlogutil_state,
) -> c_int;
pub fn dlogutil_config_mode_set_continuous(config: *mut dlogutil_config) -> c_int;
pub fn dlogutil_config_mode_set_monitor(config: *mut dlogutil_config) -> c_int;
pub fn dlogutil_config_mode_set_dump(
config: *mut dlogutil_config,
entry_count: c_uint,
) -> c_int;
pub fn dlogutil_config_mode_set_compressed_memory_dump(
config: *mut dlogutil_config,
compress_buffer: *const c_char,
) -> c_int;
pub fn dlogutil_get_log(
state: *mut dlogutil_state,
timeout: c_int,
entry_out: *mut *mut dlogutil_entry,
) -> c_int;
pub fn dlogutil_buffer_clear(state: *mut dlogutil_state, buffer: log_id_t) -> c_int;
pub fn dlogutil_buffer_get_name(buffer: log_id_t, name: *mut *const c_char) -> c_int;
pub fn dlogutil_buffer_get_capacity(
state: *mut dlogutil_state,
buffer: log_id_t,
capacity: *mut c_uint,
) -> c_int;
pub fn dlogutil_buffer_get_usage(
state: *mut dlogutil_state,
buffer: log_id_t,
usage: *mut c_uint,
) -> c_int;
pub fn dlogutil_buffer_get_default_ts_type(
buffer: log_id_t,
typ: *mut dlogutil_sorting_order,
) -> c_int;
pub fn dlogutil_buffer_check_ts_type_available(
buffer: log_id_t,
typ: dlogutil_sorting_order,
available: *mut bool,
) -> c_int;
pub fn dlogutil_buffer_get_alias(
state: *mut dlogutil_state,
buffer: log_id_t,
real_buffer: *mut log_id_t,
) -> c_int;
pub fn dlogutil_entry_destroy(entry: *mut dlogutil_entry);
pub fn dlogutil_entry_get_timestamp(
entry: *const dlogutil_entry,
stamp_type: dlogutil_sorting_order,
ts: *mut timespec,
) -> c_int;
pub fn dlogutil_entry_get_tid(entry: *const dlogutil_entry, tid: *mut c_int) -> c_int;
pub fn dlogutil_entry_get_pid(entry: *const dlogutil_entry, pid: *mut c_int) -> c_int;
pub fn dlogutil_entry_get_priority(
entry: *const dlogutil_entry,
prio: *mut log_priority,
) -> c_int;
pub fn dlogutil_entry_get_tag(entry: *const dlogutil_entry, tag: *mut *const c_char) -> c_int;
pub fn dlogutil_entry_get_message(
entry: *const dlogutil_entry,
msg: *mut *const c_char,
) -> c_int;
}