/****************************************************************************** * * * Function: hk_item_update_cache_compare * * * * Purpose: compare two delete queue items by their itemid * * * * Parameters: d1 - [IN] the first delete queue item to compare * * d2 - [IN] the second delete queue item to compare * * * * Return value: <0 - the first item is less than the second * * >0 - the first item is greater than the second * * =0 - the items are the same * * * * Author: Andris Zeila * * * * Comments: this function is used to sort delete queue by itemids * * * ******************************************************************************/ static int hk_item_update_cache_compare(const void *d1, const void *d2) { zbx_hk_delete_queue_t *r1 = *(zbx_hk_delete_queue_t **)d1; zbx_hk_delete_queue_t *r2 = *(zbx_hk_delete_queue_t **)d2; ZBX_RETURN_IF_NOT_EQUAL(r1->itemid, r2->itemid); return 0; }
/****************************************************************************** * * * Function: procstat_util_compare * * * * Purpose: compare process utilization data by their pids * * * ******************************************************************************/ static int procstat_util_compare(const void *d1, const void *d2) { const zbx_procstat_util_t *u1 = (zbx_procstat_util_t *)d1; const zbx_procstat_util_t *u2 = (zbx_procstat_util_t *)d2; ZBX_RETURN_IF_NOT_EQUAL(u1->pid, u2->pid); return 0; }
/****************************************************************************** * * * Function: variant_compare_bin * * * * Purpose: compares two variant values when at least one contains binary data* * * ******************************************************************************/ static int variant_compare_bin(const zbx_variant_t *value1, const zbx_variant_t *value2) { if (ZBX_VARIANT_BIN == value1->type) { zbx_uint32_t size1, size2; if (ZBX_VARIANT_BIN != value2->type) return 1; memcpy(&size1, value1->data.bin, sizeof(size1)); memcpy(&size2, value2->data.bin, sizeof(size2)); ZBX_RETURN_IF_NOT_EQUAL(size1, size2); return memcmp(value1->data.bin, value2->data.bin, size1 + sizeof(size1)); } return -1; }
/****************************************************************************** * * * Function: variant_compare_dbl * * * * Purpose: compares two variant values when at least one is double and the * * other is double or uint64 * * * ******************************************************************************/ static int variant_compare_dbl(const zbx_variant_t *value1, const zbx_variant_t *value2) { double value1_dbl, value2_dbl; switch (value1->type) { case ZBX_VARIANT_DBL: value1_dbl = value1->data.dbl; break; case ZBX_VARIANT_UI64: value1_dbl = value1->data.ui64; break; default: THIS_SHOULD_NEVER_HAPPEN; exit(EXIT_FAILURE); } switch (value2->type) { case ZBX_VARIANT_DBL: value2_dbl = value2->data.dbl; break; case ZBX_VARIANT_UI64: value2_dbl = value2->data.ui64; break; default: THIS_SHOULD_NEVER_HAPPEN; exit(EXIT_FAILURE); } if (SUCCEED == zbx_double_compare(value1_dbl, value2_dbl)) return 0; ZBX_RETURN_IF_NOT_EQUAL(value1_dbl, value2_dbl); THIS_SHOULD_NEVER_HAPPEN; exit(EXIT_FAILURE); }
/****************************************************************************** * * * Function: variant_compare_ui64 * * * * Purpose: compares two variant values when both are uint64 * * * ******************************************************************************/ static int variant_compare_ui64(const zbx_variant_t *value1, const zbx_variant_t *value2) { ZBX_RETURN_IF_NOT_EQUAL(value1->data.ui64, value2->data.ui64); return 0; }