diff options
author | claiff <claiff@mail.ru> | 2022-10-18 12:19:24 +0300 |
---|---|---|
committer | claiff <claiff@mail.ru> | 2022-10-18 12:21:54 +0300 |
commit | 416a20b211539c8db06c26a2297de9109ef69f32 (patch) | |
tree | ac8056f021ffcd8b1dead8a6a1f796602674ed05 /src/message/thread_safe_queue.cpp | |
parent | 04e97b30880c1c3252fe900ccac268267539e424 (diff) | |
download | obmc-sila-smtp-416a20b211539c8db06c26a2297de9109ef69f32.tar.xz |
add smtp queue messages
Diffstat (limited to 'src/message/thread_safe_queue.cpp')
-rw-r--r-- | src/message/thread_safe_queue.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
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<std::mutex> lock{mMutex}; + mMessageQueue.push( message ); + mCondition.notify_one(); + } + + std::shared_ptr<Message> ThreadSafeQueue::WaitAndPop() + { + std::unique_lock<std::mutex> lock{mMutex}; + mCondition.wait(lock, [this](){return !mMessageQueue.empty();}); + auto result = std::make_shared<Message>(mMessageQueue.front()); + mMessageQueue.pop(); + return result; + } + +} |