#include "zbxcacheconfig.h"
#include "zbx_host_constants.h"
#include "zbx_trigger_constants.h"
#include "zbxinterface.h"
#define ZBX_CORRELATION_ENABLED 0
#define ZBX_DBSYNC_JOURNAL(X) (X - 1)
#define ZBX_DBSYNC_CHANGELOG_PRUNE_INTERVAL SEC_PER_MIN * 10
#define ZBX_DBSYNC_CHANGELOG_MAX_AGE SEC_PER_HOUR
#define ZBX_DBSYNC_BATCH_SIZE 1000
ZBX_VECTOR_IMPL(dbsync_changelog, zbx_dbsync_changelog_t)
ZBX_VECTOR_IMPL(dbsync_obj_changelog, zbx_dbsync_obj_changelog_t)
ZBX_PTR_VECTOR_IMPL(dbsync, zbx_dbsync_t *)
static zbx_dbsync_env_t dbsync_env;
#define REFCOUNT_FIELD_SIZE sizeof(zbx_uint32_t)
static zbx_hash_t dbsync_strpool_hash_func(const void *data)
return ZBX_DEFAULT_STRING_HASH_FUNC((char *)data + REFCOUNT_FIELD_SIZE);
static int dbsync_strpool_compare_func(const void *d1, const void *d2)
return strcmp((char *)d1 + REFCOUNT_FIELD_SIZE, (char *)d2 + REFCOUNT_FIELD_SIZE);
static char *dbsync_strdup(const char *str)
size_t size = REFCOUNT_FIELD_SIZE + strlen(str) + 1;
ptr = zbx_hashset_insert_ext(&dbsync_env.strpool, str - REFCOUNT_FIELD_SIZE, size, REFCOUNT_FIELD_SIZE,
size, ZBX_HASHSET_UNIQ_FALSE);
(*(zbx_uint32_t *)ptr)++;
return (char *)ptr + REFCOUNT_FIELD_SIZE;
static void dbsync_strfree(char *str)
void *ptr = str - REFCOUNT_FIELD_SIZE;
if (0 == --(*(zbx_uint32_t *)ptr))
zbx_hashset_remove_direct(&dbsync_env.strpool, ptr);