Introduce log write buffering
[platform/core/system/dlog.git] / src / logger / reader_logger.h
1 #pragma once
2
3 #include <log_file.h>
4 #include <queued_entry_timestamp.h>
5 #include "reader_common.h"
6
7 struct subreader_logger_file {
8         struct log_file file;
9 };
10
11 struct subreader_logger_metrics {
12         struct qos_module *qos;
13 };
14
15 struct subreader_logger {
16         void (*sub_apply_log)(const struct subreader_logger *srl, const struct dlogutil_entry *due);
17         void (*sub_flush)(void *sub_userdata, struct timespec ts, int flush_time);
18         void (*sub_destroy)(void *sub_userdata);
19         void *sub_userdata;
20         dlogutil_filter_options_s *filter;
21 };
22
23 struct reader_logger {
24         list_head subs;
25         log_id_t buf_id;
26         int skip_count;
27         struct reader common;
28 };
29
30 int reader_logger_init(struct reader_logger **reader, log_id_t buf_id, struct logger *server, bool skip);
31 int service_reader_logger(struct reader_logger* reader, struct now_t time);
32 int reader_logger_add_subreader_file(struct reader_logger *reader, dlogutil_filter_options_s *filter, struct log_file *file);
33 int reader_logger_add_subreader_metrics(struct reader_logger *reader, struct qos_module *qos);
34 void reader_logger_free(struct reader_logger *reader);
35 void reader_logger_cleanup(struct reader_logger *const *ptr);
36 void reader_logger_flush(struct reader_logger *reader, struct timespec now_mono, int flush);