1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
8 #include "sd-journal.h"
10 #include "time-util.h"
13 ENTRY_CURSOR
= 0, /* Nothing actually written yet. */
17 ENTRY_NEW_FIELD
, /* In between fields. */
18 ENTRY_TEXT_FIELD
, /* In the middle of a text field. */
19 ENTRY_BINARY_FIELD_START
, /* Writing the name of a binary field. */
20 ENTRY_BINARY_FIELD_SIZE
, /* Writing the size of a binary field. */
21 ENTRY_BINARY_FIELD
, /* In the middle of a binary field. */
22 ENTRY_OUTRO
, /* Writing '\n' */
23 ENTRY_DONE
, /* Need to move to a new field. */
26 typedef struct Uploader
{
28 sd_event_source
*sigint_event
, *sigterm_event
;
33 char error
[CURL_ERROR_SIZE
];
34 struct curl_slist
*header
;
37 sd_event_source
*input_event
;
46 entry_state entry_state
;
47 const void *field_data
;
48 size_t field_pos
, field_length
;
51 const char *state_file
;
54 char *last_cursor
, *current_cursor
;
55 usec_t watchdog_timestamp
;
59 #define JOURNAL_UPLOAD_POLL_TIMEOUT (10 * USEC_PER_SEC)
61 int start_upload(Uploader
*u
,
62 size_t (*input_callback
)(void *ptr
,
68 int open_journal_for_upload(Uploader
*u
,
73 void close_journal_input(Uploader
*u
);
74 int check_journal_input(Uploader
*u
);