#include "LibapiQueues.h" #include #include static std::vector*> _queues; void Queues::add_to_queue_list(LibapiQueue* queue) { for (auto it=_queues.begin(); it!=_queues.end(); it++) { LibapiQueue* sq = (LibapiQueue*)(*it); if (sq->get_id() == queue->get_id() || sq->get_name() == queue->get_name()) { assert(0); } } _queues.push_back(queue); } void Queues::remove_from_queue_list(int& id) { for (auto it = _queues.begin(); it != _queues.end(); it++) { LibapiQueue* sq = (LibapiQueue*)(*it); if (sq->get_id() == id) { _queues.erase(it); break; } } } LibapiQueue* Queues::find_queue(int& id) { for (auto it = _queues.begin(); it != _queues.end(); it++) { LibapiQueue* sq = (LibapiQueue*)(*it); if (sq->get_id() == id) return sq; } return NULL; //auto it = std::find_if(LibapiQueue::get_queues().begin(), LibapiQueue::get_queues().end(), [&](const LibapiQueue* sq) // return sq->get_id() == id); //if (it != LibapiQueue::get_queues().end()) return (LibapiQueue*)it; //else return NULL; } LibapiQueue* Queues::find_queue(std::string& name) { for (auto it = _queues.begin(); it != _queues.end(); it++) { LibapiQueue* sq = (LibapiQueue*)(*it); if (sq->get_name() == name) return sq; } return NULL; //auto it = std::find_if(LibapiQueue::get_queues().begin(), LibapiQueue::get_queues().end(), [&](const LibapiQueue* sq) // return sq - get_name() == name); //if (it != LibapiQueue::get_queues().end()) return (LibapiQueue*)it; //else return NULL; } std::vector*> Queues::get_queues() { return _queues; } LibapiQueue* Queues::create_queue(int& id, std::string& name) { LibapiQueue* sq = new LibapiQueue(id, name); add_to_queue_list(sq); return sq; } void Queues::delete_queue(LibapiQueue* queue) { if (queue != NULL) { int id = queue->get_id(); remove_from_queue_list(id); delete queue; queue = NULL; } } void Queues::clear() { for (auto it = _queues.begin(); it != _queues.end(); it++) if ((*it) != NULL) delete (*it); _queues.clear(); } int Queues::push_to_queue(char* queue_name, void* msg) { std::string qname(queue_name); LibapiQueue* queue = find_queue(qname); if (queue == NULL) return -1; bool ret = queue->push(msg); if (ret) return 0; else return -1; }