blob: a1f2086088c78311f5c15c1f042bcfaa16e3ab20 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
// SPDX-License-Identifier: GPL-3.0-or-later
#ifndef NETDATA_RECEIVER_H
#define NETDATA_RECEIVER_H
#include "libnetdata/libnetdata.h"
#include "database/rrd.h"
struct parser;
struct receiver_state {
RRDHOST *host;
pid_t tid;
ND_THREAD *thread;
int fd;
char *key;
char *hostname;
char *registry_hostname;
char *machine_guid;
char *os;
char *timezone; // Unused?
char *abbrev_timezone;
int32_t utc_offset;
char *client_ip; // Duplicated in pluginsd
char *client_port; // Duplicated in pluginsd
char *program_name; // Duplicated in pluginsd
char *program_version;
struct rrdhost_system_info *system_info;
STREAM_CAPABILITIES capabilities;
time_t last_msg_t;
time_t connected_since_s;
struct buffered_reader reader;
uint16_t hops;
struct {
bool shutdown; // signal the streaming parser to exit
STREAM_HANDSHAKE reason;
} exit;
struct {
RRD_MEMORY_MODE mode;
int history;
int update_every;
int health_enabled; // CONFIG_BOOLEAN_YES, CONFIG_BOOLEAN_NO, CONFIG_BOOLEAN_AUTO
time_t alarms_delay;
uint32_t alarms_history;
int rrdpush_enabled;
const char *rrdpush_api_key; // DONT FREE - it is allocated in appconfig
const char *rrdpush_send_charts_matching; // DONT FREE - it is allocated in appconfig
bool rrdpush_enable_replication;
time_t rrdpush_seconds_to_replicate;
time_t rrdpush_replication_step;
const char *rrdpush_destination; // DONT FREE - it is allocated in appconfig
unsigned int rrdpush_compression;
STREAM_CAPABILITIES compression_priorities[COMPRESSION_ALGORITHM_MAX];
} config;
NETDATA_SSL ssl;
time_t replication_first_time_t;
struct decompressor_state decompressor;
/*
struct {
uint32_t count;
STREAM_NODE_INSTANCE *array;
} instances;
*/
// The parser pointer is safe to read and use, only when having the host receiver lock.
// Without this lock, the data pointed by the pointer may vanish randomly.
// Also, since the receiver sets it when it starts, it should be read with
// an atomic read.
struct parser *parser;
#ifdef ENABLE_H2O
void *h2o_ctx;
#endif
};
#ifdef ENABLE_H2O
#define is_h2o_rrdpush(x) ((x)->h2o_ctx != NULL)
#define unless_h2o_rrdpush(x) if(!is_h2o_rrdpush(x))
#endif
int rrdpush_receiver_thread_spawn(struct web_client *w, char *decoded_query_string, void *h2o_ctx);
void receiver_state_free(struct receiver_state *rpt);
bool stop_streaming_receiver(RRDHOST *host, STREAM_HANDSHAKE reason);
#endif //NETDATA_RECEIVER_H
|