bool monitor;
dlogutil_filter_options_s *filter_object;
long flush_target;
-
- // temp during refactoring
- dlogutil_entry_cb *callback;
- void *userdata;
} dlogutil_state_s;
int create_initial_fdis(struct fd_info ***fdis, int enabled_buffers, bool is_pipe, const struct log_config *conf);
-int dlogutil_state_init(dlogutil_state_s *state, struct fd_info ***data_fds_ptr, int fd_count, unsigned int mode, bool monitor, dlogutil_entry_cb callback, void *userdata, dlogutil_sorting_options_s *sorting, dlogutil_filter_options_s *filter, bool sorting_needed, dlogutil_sorting_order_e sort_by, const struct log_config *conf);
-int do_print(dlogutil_state_s *state);
+int dlogutil_state_init(dlogutil_state_s *state, struct fd_info ***data_fds_ptr, int fd_count, unsigned int mode, bool monitor, dlogutil_sorting_options_s *sorting, dlogutil_filter_options_s *filter, bool sorting_needed, dlogutil_sorting_order_e sort_by, const struct log_config *conf);
+int do_print(dlogutil_state_s *state, dlogutil_entry_cb callback, void *userdata);
get_proper_sort_by(sorting ? sorting->sort_by : DLOGUTIL_SORT_DEFAULT, buffers, is_pipe, &conf, &sorting_needed);
__attribute__((cleanup(dlogutil_state_destroy))) dlogutil_state_s state;
- r = dlogutil_state_init(&state, &fdi_ptrs, fdi_cnt, mode, monitor, callback, data, sorting, filter, sorting_needed, proper_sort_by, &conf);
+ r = dlogutil_state_init(&state, &fdi_ptrs, fdi_cnt, mode, monitor, sorting, filter, sorting_needed, proper_sort_by, &conf);
if (r)
return r;
- r = do_print(&state);
+ r = do_print(&state, callback, data);
return r;
}
return BUFFER_NEWLY_DRAINED;
}
-int dlogutil_state_init(dlogutil_state_s *state, struct fd_info ***data_fds_ptr, int fd_count, unsigned int mode, bool monitor, dlogutil_entry_cb callback, void *userdata,
+int dlogutil_state_init(dlogutil_state_s *state, struct fd_info ***data_fds_ptr, int fd_count, unsigned int mode, bool monitor,
dlogutil_sorting_options_s *sorting, dlogutil_filter_options_s *filter, bool sorting_needed, dlogutil_sorting_order_e sort_by, const struct log_config *conf)
{
assert(data_fds_ptr);
state->data_fds = data_fds;
state->monitor = monitor;
*data_fds_ptr = NULL;
- state->callback = callback;
- state->userdata = userdata;
sort_vector_init(&state->logs);
state->filter_object = filter ? log_filter_from_filter(filter) : dlogutil_filter_options_create();
return 0;
}
-int do_print(dlogutil_state_s *state)
+int do_print(dlogutil_state_s *state, dlogutil_entry_cb callback, void *userdata)
{
while (true) {
dlogutil_entry_s *out;
if (!out)
return 0;
- r = state->callback(out, state->userdata);
+ r = callback(out, userdata);
free(out);
if (r != 0)
return r;