]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/journal-remote/journal-upload.h
Merge pull request #16682 from poettering/userdb-gecos-fix
[thirdparty/systemd.git] / src / journal-remote / journal-upload.h
CommitLineData
3d090cc6
ZJS
1#pragma once
2
3#include <inttypes.h>
4
5#include "sd-event.h"
71d35b6b 6#include "sd-journal.h"
6e86b24d 7
0aa176a7 8#include "time-util.h"
3d090cc6 9
eacbb4d3
ZJS
10typedef enum {
11 ENTRY_CURSOR = 0, /* Nothing actually written yet. */
12 ENTRY_REALTIME,
13 ENTRY_MONOTONIC,
14 ENTRY_BOOT_ID,
15 ENTRY_NEW_FIELD, /* In between fields. */
16 ENTRY_TEXT_FIELD, /* In the middle of a text field. */
17 ENTRY_BINARY_FIELD_START, /* Writing the name of a binary field. */
18 ENTRY_BINARY_FIELD_SIZE, /* Writing the size of a binary field. */
19 ENTRY_BINARY_FIELD, /* In the middle of a binary field. */
20 ENTRY_OUTRO, /* Writing '\n' */
21 ENTRY_DONE, /* Need to move to a new field. */
22} entry_state;
23
3d090cc6
ZJS
24typedef struct Uploader {
25 sd_event *events;
a3152e76 26 sd_event_source *sigint_event, *sigterm_event;
3d090cc6 27
5bc89120 28 char *url;
3d090cc6
ZJS
29 CURL *easy;
30 bool uploading;
eacbb4d3 31 char error[CURL_ERROR_SIZE];
3d090cc6 32 struct curl_slist *header;
eacbb4d3
ZJS
33 char *answer;
34
35 sd_event_source *input_event;
36 uint64_t timeout;
3d090cc6 37
eacbb4d3 38 /* fd stuff */
3d090cc6
ZJS
39 int input;
40
eacbb4d3
ZJS
41 /* journal stuff */
42 sd_journal* journal;
43
44 entry_state entry_state;
45 const void *field_data;
46 size_t field_pos, field_length;
47
48 /* general metrics */
722b6795
ZJS
49 const char *state_file;
50
eacbb4d3 51 size_t entries_sent;
722b6795 52 char *last_cursor, *current_cursor;
0aa176a7
ZJS
53 usec_t watchdog_timestamp;
54 usec_t watchdog_usec;
3d090cc6
ZJS
55} Uploader;
56
eacbb4d3
ZJS
57#define JOURNAL_UPLOAD_POLL_TIMEOUT (10 * USEC_PER_SEC)
58
3d090cc6
ZJS
59int start_upload(Uploader *u,
60 size_t (*input_callback)(void *ptr,
61 size_t size,
62 size_t nmemb,
63 void *userdata),
64 void *data);
eacbb4d3
ZJS
65
66int open_journal_for_upload(Uploader *u,
67 sd_journal *j,
68 const char *cursor,
69 bool after_cursor,
70 bool follow);
71void close_journal_input(Uploader *u);
72int check_journal_input(Uploader *u);