From 416a20b211539c8db06c26a2297de9109ef69f32 Mon Sep 17 00:00:00 2001 From: claiff Date: Tue, 18 Oct 2022 12:19:24 +0300 Subject: add smtp queue messages --- src/message/thread_safe_queue.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/message/thread_safe_queue.cpp (limited to 'src/message/thread_safe_queue.cpp') diff --git a/src/message/thread_safe_queue.cpp b/src/message/thread_safe_queue.cpp new file mode 100644 index 0000000..092a2ac --- /dev/null +++ b/src/message/thread_safe_queue.cpp @@ -0,0 +1,21 @@ +#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; + } + +} -- cgit v1.2.3