#ifndef OPENSEARCH_RESULT_QUEUE #define OPENSEARCH_RESULT_QUEUE #include <mutex> #include <queue> #include "opensearch_semaphore.h" #define QUEUE_TIMEOUT 20 // milliseconds struct OpenSearchResult; class OpenSearchResultQueue { public: OpenSearchResultQueue(unsigned int capacity); ~OpenSearchResultQueue(); void clear(); bool pop(unsigned int timeout_ms, OpenSearchResult*& result); bool push(unsigned int timeout_ms, OpenSearchResult* result); private: std::queue< OpenSearchResult*> m_queue; std::mutex m_queue_mutex; opensearch_semaphore m_push_semaphore; opensearch_semaphore m_pop_semaphore; }; #endif