Source
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
/* sending a huge amount of values in a single connection is likely to */
/* take long and hit timeout, so we limit values to 250 per connection */
typedef struct
{
int group_mode;
int with_clock;
int with_ns;
char *host;
/* temporary buffers */
char *key;
char *value;
size_t kv_alloc;
zbx_hashset_t batches;
}
zbx_send_buffer_t;
const char *get_string(const char *p, char *buf, size_t bufsize);
void sb_init(zbx_send_buffer_t *buf, int group_mode, const char *host, int with_clock, int with_ns);
void sb_destroy(zbx_send_buffer_t *buf);
int sb_parse_line(zbx_send_buffer_t *buf, const char *line, size_t line_alloc, int immediate, struct zbx_json **out,
char **error);
struct zbx_json *sb_pop(zbx_send_buffer_t *buf);