#include "avail_protocol.h"
#include "zbxserialize.h"
void zbx_availability_serialize(unsigned char **data, size_t *data_alloc, size_t *data_offset,
const zbx_interface_availability_t *interface_availability)
zbx_uint32_t data_len = 0, error_len;
zbx_serialize_prepare_value(data_len, interface_availability->interfaceid);
zbx_serialize_prepare_value(data_len, interface_availability->agent.flags);
zbx_serialize_prepare_value(data_len, interface_availability->agent.available);
zbx_serialize_prepare_value(data_len, interface_availability->agent.errors_from);
zbx_serialize_prepare_value(data_len, interface_availability->agent.disable_until);
zbx_serialize_prepare_str_len(data_len, interface_availability->agent.error, error_len);
*data = (unsigned char *)zbx_malloc(NULL, (*data_alloc = MAX(1024, data_len)));
while (data_len > *data_alloc - *data_offset)
*data = (unsigned char *)zbx_realloc(*data, *data_alloc);
ptr = *data + *data_offset;
*data_offset += data_len;
ptr += zbx_serialize_value(ptr, interface_availability->interfaceid);
ptr += zbx_serialize_value(ptr, interface_availability->agent.flags);
ptr += zbx_serialize_value(ptr, interface_availability->agent.available);
ptr += zbx_serialize_value(ptr, interface_availability->agent.errors_from);
ptr += zbx_serialize_value(ptr, interface_availability->agent.disable_until);
zbx_serialize_str(ptr, interface_availability->agent.error, error_len);
void zbx_availability_deserialize(const unsigned char *data, zbx_uint32_t size,
zbx_vector_availability_ptr_t *interface_availabilities)
const unsigned char *end = data + size;