summaryrefslogtreecommitdiffstats
path: root/src/streaming/replication.h
blob: 27baeaf35c33930c413370e715d47b0cff6665de (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
// SPDX-License-Identifier: GPL-3.0-or-later

#ifndef REPLICATION_H
#define REPLICATION_H

#include "daemon/common.h"

struct parser;

struct replication_query_statistics {
    SPINLOCK spinlock;
    size_t queries_started;
    size_t queries_finished;
    size_t points_read;
    size_t points_generated;
};

struct replication_query_statistics replication_get_query_statistics(void);

bool replicate_chart_response(RRDHOST *rh, RRDSET *rs, bool start_streaming, time_t after, time_t before);

typedef ssize_t (*send_command)(const char *txt, struct parser *parser);

bool replicate_chart_request(send_command callback, struct parser *parser,
                             RRDHOST *rh, RRDSET *rs,
                             time_t child_first_entry, time_t child_last_entry, time_t child_wall_clock_time,
                             time_t response_first_start_time, time_t response_last_end_time);

void replication_init_sender(struct sender_state *sender);
void replication_cleanup_sender(struct sender_state *sender);
void replication_sender_delete_pending_requests(struct sender_state *sender);
void replication_add_request(struct sender_state *sender, const char *chart_id, time_t after, time_t before, bool start_streaming);
void replication_recalculate_buffer_used_ratio_unsafe(struct sender_state *s);

size_t replication_allocated_memory(void);
size_t replication_allocated_buffers(void);

#endif /* REPLICATION_H */