static zbx_lld_item_node_t *lld_item_dep_get_node(zbx_hashset_t *nodes, zbx_uint64_t itemid, zbx_lld_item_full_t *item)
#define ZBX_DEPENDENT_ITEM_MAX_COUNT 30000
#define ZBX_DEPENDENT_ITEM_MAX_LEVELS 3
typedef struct zbx_lld_item_node zbx_lld_item_node_t;
ZBX_PTR_VECTOR_DECL(lld_item_node_ptr, zbx_lld_item_node_t *)
ZBX_PTR_VECTOR_IMPL(lld_item_node_ptr, zbx_lld_item_node_t *)
zbx_lld_item_node_t *parent;
int descendants[ZBX_DEPENDENT_ITEM_MAX_LEVELS];
static zbx_hash_t lld_item_node_hash(const void *data)
const zbx_lld_item_node_t *node = (const zbx_lld_item_node_t *)data;
if (0 != node->self.itemid)
return ZBX_DEFAULT_UINT64_HASH_FUNC(&node->self.itemid);
return ZBX_DEFAULT_PTR_HASH_FUNC(&node->self.item);
static int lld_item_node_compare(const void *d1, const void *d2)
const zbx_lld_item_node_t *node1 = (const zbx_lld_item_node_t *)d1;
const zbx_lld_item_node_t *node2 = (const zbx_lld_item_node_t *)d2;
if (0 != node1->self.itemid || 0 != node2->self.itemid)
ZBX_RETURN_IF_NOT_EQUAL(node1->self.itemid, node2->self.itemid);
ZBX_RETURN_IF_NOT_EQUAL(node1->self.item, node2->self.item);