#include "ReportQueue.hpp"

namespace otx {
	namespace jidu {

		ReportQueue::~ReportQueue() {
			clear();
		}

		void ReportQueue::enque(std::string* item) {
			std::lock_guard<std::mutex> lock(this->mQueueLock);
			this->mQueue.push(item);
		}
		std::string* ReportQueue::deque() {
			std::lock_guard<std::mutex> lock(this->mQueueLock);
			std::string* item = this->mQueue.front();
			this->mQueue.pop();
			return item;
		}
		std::size_t ReportQueue::size() {
			std::lock_guard<std::mutex> lock(this->mQueueLock);
			return this->mQueue.size();
		}
		void ReportQueue::clear() {
			std::lock_guard<std::mutex> lock(this->mQueueLock);
			while (!this->mQueue.empty()) {
				std::string* item = this->mQueue.front();
				this->mQueue.pop();
				delete item;
			}
		}

	} // namespace jidu
} // namespace otx