master
h 79 lines 2.71 KB
Raw
1 #ifndef ND_SD_JOURNAL_PROVIDER_NETDATA_H
2 #define ND_SD_JOURNAL_PROVIDER_NETDATA_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif /* __cplusplus */
7
8 #include "config.h"
9
10 #if defined(HAVE_RUST_PROVIDER)
11 #include "rust_provider.h"
12 #else
13 #include <systemd/sd-journal.h>
14 #endif
15
16 #if defined(HAVE_RUST_PROVIDER)
17 typedef struct RsdJournal NsdJournal;
18
19 #define NSD_JOURNAL_FOREACH_DATA(j, data, l) RSD_JOURNAL_FOREACH_DATA(j, data, l)
20 #define NSD_JOURNAL_FOREACH_UNIQUE(j, data, l) RSD_JOURNAL_FOREACH_UNIQUE(j, data, l)
21 #define NSD_JOURNAL_FOREACH_FIELD(j, field) RSD_JOURNAL_FOREACH_FIELD(j, field)
22
23 typedef struct RsdId128 NsdId128;
24
25 #define NSD_ID128_NULL RSD_ID128_NULL
26 #define NSD_ID128_STRING_MAX RSD_ID128_STRING_MAX
27 #define NSD_ID128_UUID_STRING_MAX RSD_ID128_UUID_STRING_MAX
28 #else
29 typedef struct sd_journal NsdJournal;
30 typedef sd_id128_t NsdId128;
31
32 #define NSD_ID128_NULL SD_ID128_NULL
33 #define NSD_ID128_STRING_MAX SD_ID128_STRING_MAX
34 #define NSD_ID128_UUID_STRING_MAX SD_ID128_UUID_STRING_MAX
35
36 #define NSD_JOURNAL_FOREACH_DATA(j, data, l) SD_JOURNAL_FOREACH_DATA(j, data, l)
37 #if defined(HAVE_SD_JOURNAL_RESTART_FIELDS)
38 #define NSD_JOURNAL_FOREACH_UNIQUE(j, data, l) SD_JOURNAL_FOREACH_UNIQUE(j, data, l)
39 #define NSD_JOURNAL_FOREACH_FIELD(j, field) SD_JOURNAL_FOREACH_FIELD(j, field)
40 #endif
41 #endif
42
43 int32_t nsd_id128_from_string(const char *s, NsdId128 *ret);
44 int32_t nsd_id128_equal(NsdId128 a, NsdId128 b);
45
46 int nsd_journal_open_files(NsdJournal **ret, const char *const *paths, int flags);
47 void nsd_journal_close(NsdJournal *j);
48
49 int nsd_journal_seek_head(NsdJournal *j);
50 int nsd_journal_seek_tail(NsdJournal *j);
51 int nsd_journal_seek_realtime_usec(NsdJournal *j, uint64_t usec);
52
53 int nsd_journal_next(NsdJournal *j);
54 int nsd_journal_previous(NsdJournal *j);
55
56 #if defined(HAVE_SD_JOURNAL_GET_SEQNUM)
57 int nsd_journal_get_seqnum(NsdJournal *j, uint64_t *ret_seqnum, NsdId128 *ret_seqnum_id);
58 #endif
59 int nsd_journal_get_realtime_usec(NsdJournal *j, uint64_t *ret);
60
61 #if defined(HAVE_SD_JOURNAL_RESTART_FIELDS)
62 int nsd_journal_enumerate_fields(NsdJournal *j, const char **field);
63 void nsd_journal_restart_fields(NsdJournal *j);
64
65 int nsd_journal_query_unique(NsdJournal *j, const char *field);
66 void nsd_journal_restart_unique(NsdJournal *j);
67 int nsd_journal_enumerate_available_unique(NsdJournal *j, const void **data, size_t *l);
68 #endif /* HAVE_SD_JOURNAL_RESTART_FIELDS */
69
70 int nsd_journal_add_match(NsdJournal *j, const void *data, uintptr_t size);
71 int nsd_journal_add_conjunction(NsdJournal *j);
72 int nsd_journal_add_disjunction(NsdJournal *j);
73 void nsd_journal_flush_matches(NsdJournal *j);
74
75 #ifdef __cplusplus
76 }
77 #endif /* __cplusplus */
78
79 #endif /* ND_SD_JOURNAL_PROVIDER_NETDATA_H */