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