#include "preproc_server.h"
#include "zbxpreproc.h"
#include "zbxtime.h"
#include "zbxcachehistory.h"
#include "zbxvariant.h"
#include "../lld/lld_protocol.h"
int preproc_prepare_value_server(const zbx_variant_t *value, const zbx_pp_value_opt_t *value_opt)
{
if (ZBX_VARIANT_NONE == value->type && 0 == (value_opt->flags & ZBX_PP_VALUE_OPT_META))
return FAIL;
return SUCCEED;
}
void preproc_flush_value_server(zbx_pp_manager_t *manager, zbx_uint64_t itemid, unsigned char value_type,
unsigned char flags, zbx_variant_t *value, zbx_timespec_t ts, zbx_pp_value_opt_t *value_opt)
{
zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
if (0 == (flags & ZBX_FLAG_DISCOVERY_RULE))
{
zbx_dc_add_history_variant(itemid, value_type, flags, value, ts, value_opt);
}
else
{
zbx_pp_item_t *item;
if (NULL != (item = (zbx_pp_item_t *)zbx_hashset_search(zbx_pp_manager_items(manager), &itemid)))
{
const char *value_lld = NULL, *error_lld = NULL;
unsigned char meta = 0;
zbx_uint64_t lastlogsize = 0;
int mtime = 0;
if (ZBX_VARIANT_ERR == value->type)
{
error_lld = value->data.err;
}
else
{
if (SUCCEED == zbx_variant_convert(value, ZBX_VARIANT_STR))
value_lld = value->data.str;
}
if (0 != (value_opt->flags & ZBX_PP_VALUE_OPT_META))
{
meta = 1;
lastlogsize = value_opt->lastlogsize;
mtime = value_opt->mtime;
}
if (NULL != value_lld || NULL != error_lld || 0 != meta)
{
zbx_lld_queue_value(itemid, item->preproc->hostid, value_lld, &ts, meta, lastlogsize,
mtime, error_lld);
}
}
}
zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __func__);
}