#include "zbxescalations.h"
#include "zbxipcservice.h"
#include "zbx_rtc_constants.h"
#include "zbxserialize.h"
static int escalators_number;
static zbx_rtc_notify_generic_cb_t rtc_notify_generic_cb;
void zbx_init_escalations(int escalators_num, zbx_rtc_notify_generic_cb_t rtc_notify_cb)
escalators_number = escalators_num;
rtc_notify_generic_cb = rtc_notify_cb;
void zbx_start_escalations(zbx_ipc_async_socket_t *rtc, zbx_vector_escalation_new_ptr_t *escalations)
zbx_vector_uint64_t *escalator_escalationids;
escalator_escalationids = (zbx_vector_uint64_t *)zbx_malloc(NULL, (size_t)escalators_number *
sizeof(zbx_vector_uint64_t));
for (int i = 0; i < escalators_number; i++)
zbx_vector_uint64_create(&escalator_escalationids[i]);
for (int i = 0; i < escalations->values_num; i++)
zbx_escalation_new_t *escalation = escalations->values[i];
if (EVENT_OBJECT_TRIGGER == escalation->event->object)
int escalator_process_num;
escalator_process_num = (int)(escalation->event->objectid % (uint64_t)escalators_number + 1);
zbx_vector_uint64_append(&escalator_escalationids[escalator_process_num - 1],
escalation->escalationid);
for (int i = 0; i < escalators_number; i++)
if (0 != escalator_escalationids[i].values_num)
int escalations_per_process = escalator_escalationids[i].values_num;
zbx_uint32_t notify_size = (zbx_uint32_t)(sizeof(int) +
(size_t)escalations_per_process * sizeof(zbx_uint64_t));
unsigned char *notify_data = zbx_malloc(NULL, notify_size), *ptr = notify_data;