*error = zbx_dsprintf(NULL, "cannot initialize task queue conditional variable: %s", zbx_strerror(err));
#include "async_manager.h"
#define ASYNC_TASK_QUEUE_INIT_NONE 0x00
#define ASYNC_TASK_QUEUE_INIT_LOCK 0x01
#define ASYNC_TASK_QUEUE_INIT_EVENT 0x02
void async_task_queue_destroy(zbx_async_queue_t *queue)
if (0 != (queue->init_flags & ASYNC_TASK_QUEUE_INIT_LOCK))
pthread_mutex_destroy(&queue->lock);
if (0 != (queue->init_flags & ASYNC_TASK_QUEUE_INIT_EVENT))
pthread_cond_destroy(&queue->event);
zbx_vector_uint64_destroy(&queue->itemids);
zbx_vector_int32_destroy(&queue->errcodes);
zbx_vector_int32_destroy(&queue->lastclocks);
zbx_vector_poller_item_clear_ext(&queue->poller_items, zbx_poller_item_free);
zbx_vector_poller_item_destroy(&queue->poller_items);
zbx_vector_interface_status_clear_ext(&queue->interfaces, zbx_interface_status_free);
zbx_vector_interface_status_destroy(&queue->interfaces);
queue->init_flags = ASYNC_TASK_QUEUE_INIT_NONE;
int async_task_queue_init(zbx_async_queue_t *queue, zbx_thread_poller_args *poller_args_in, char **error)
queue->processing_num = 0;
queue->processing_limit = poller_args_in->config_max_concurrent_checks_per_poller;
queue->poller_type = poller_args_in->poller_type;
queue->config_timeout = poller_args_in->config_comms->config_timeout;
queue->config_unavailable_delay = poller_args_in->config_unavailable_delay;
queue->config_unreachable_delay = poller_args_in->config_unreachable_delay;
queue->config_unreachable_period = poller_args_in-> config_unreachable_period;
zbx_vector_uint64_create(&queue->itemids);
zbx_vector_int32_create(&queue->errcodes);
zbx_vector_int32_create(&queue->lastclocks);
zbx_vector_poller_item_create(&queue->poller_items);
zbx_vector_interface_status_create(&queue->interfaces);