#ifndef ZABBIX_DISCOVERER_QUEUE_H
#define ZABBIX_DISCOVERER_QUEUE_H
#include "discoverer_job.h"
zbx_uint64_t pending_checks_count;
int snmpv3_allowed_workers;
int checks_per_worker_max;
zbx_vector_uint64_t del_jobs;
zbx_vector_discoverer_drule_error_t errors;
void discoverer_queue_lock(zbx_discoverer_queue_t *queue);
void discoverer_queue_unlock(zbx_discoverer_queue_t *queue);
void discoverer_queue_notify(zbx_discoverer_queue_t *queue);
void discoverer_queue_notify_all(zbx_discoverer_queue_t *queue);
void discoverer_queue_destroy(zbx_discoverer_queue_t *queue);
void discoverer_queue_register_worker(zbx_discoverer_queue_t *queue);
void discoverer_queue_deregister_worker(zbx_discoverer_queue_t *queue);
int discoverer_queue_wait(zbx_discoverer_queue_t *queue, char **error);
int discoverer_queue_init(zbx_discoverer_queue_t *queue, int snmpv3_allowed_workers, int checks_per_worker_max,
void discoverer_queue_clear_jobs(zbx_list_t *jobs);
void discoverer_queue_push(zbx_discoverer_queue_t *queue, zbx_discoverer_job_t *job);
void discoverer_queue_append_error(zbx_vector_discoverer_drule_error_t *errors, zbx_uint64_t druleid,
zbx_discoverer_job_t *discoverer_queue_pop(zbx_discoverer_queue_t *queue);