#include "thread_safe_queue.hpp" namespace smtp::message { void ThreadSafeQueue::Push( Message const &message) { std::lock_guard lock{mMutex}; mMessageQueue.push( message ); mCondition.notify_one(); } std::shared_ptr ThreadSafeQueue::WaitAndPop() { std::unique_lock lock{mMutex}; mCondition.wait(lock, [this](){return !mMessageQueue.empty();}); auto result = std::make_shared(mMessageQueue.front()); mMessageQueue.pop(); return result; } }