diff options
Diffstat (limited to 'src/message')
-rw-r--r-- | src/message/sender.cpp | 9 | ||||
-rw-r--r-- | src/message/sender.hpp | 8 | ||||
-rw-r--r-- | src/message/thread_safe_queue.cpp | 21 | ||||
-rw-r--r-- | src/message/thread_safe_queue.hpp | 29 |
4 files changed, 7 insertions, 60 deletions
diff --git a/src/message/sender.cpp b/src/message/sender.cpp index a200092..7df9819 100644 --- a/src/message/sender.cpp +++ b/src/message/sender.cpp @@ -16,7 +16,7 @@ namespace smtp::message // // Constructors/Destructors // - Sender::Sender( manage::Settings const& settings_storage, manage::Mail const& mail_to, ThreadSafeQueue& message_queue ) + Sender::Sender( manage::Settings const& settings_storage, manage::Mail& mail_to, thread::Queue& message_queue ) : mSettingsStorage( settings_storage ) , mMailTo( mail_to ) , mMessageQueue( message_queue ) @@ -46,14 +46,11 @@ namespace smtp::message logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "Error to initializate message service" ); } //TODO раздать mail_to другим методам + + mMailTo.WaitWhileEmptyMails(); auto mail_to = mMailTo.GetMailToSend(); - if( mail_to.empty()) - { - logger::LoggerSet::GetInstance()->LogError( METHOD_NAME, "We haven't any mail to" ); - } FillRecipients( curl, recipients ); - UpdateMailText( mSettingsStorage.GetUserName(), message->subject, message->text ); result = curl_easy_perform( curl ); diff --git a/src/message/sender.hpp b/src/message/sender.hpp index 2419e4c..69f9346 100644 --- a/src/message/sender.hpp +++ b/src/message/sender.hpp @@ -7,7 +7,7 @@ #include "management/settings.hpp" #include "management/mail.hpp" -#include "thread_safe_queue.hpp" +#include "thread/queue.hpp" namespace smtp::message { @@ -19,7 +19,7 @@ namespace smtp::message class Sender { public: - Sender( manage::Settings const& settings_storage, manage::Mail const& mail_to, ThreadSafeQueue& message_queue ); + Sender( manage::Settings const& settings_storage, manage::Mail& mail_to, thread::Queue& message_queue ); ~Sender() = default; void Send(); @@ -31,8 +31,8 @@ namespace smtp::message static size_t ReadCallBack( void *ptr, size_t size, size_t nmemb, void *userp ); manage::Settings const& mSettingsStorage; - manage::Mail const& mMailTo; - ThreadSafeQueue& mMessageQueue; + manage::Mail& mMailTo; + thread::Queue& mMessageQueue; }; } diff --git a/src/message/thread_safe_queue.cpp b/src/message/thread_safe_queue.cpp deleted file mode 100644 index 092a2ac..0000000 --- a/src/message/thread_safe_queue.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#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; - } - -} diff --git a/src/message/thread_safe_queue.hpp b/src/message/thread_safe_queue.hpp deleted file mode 100644 index 5bb1ee4..0000000 --- a/src/message/thread_safe_queue.hpp +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include <string> -#include <mutex> -#include <queue> -#include <condition_variable> - -namespace smtp::message -{ - struct Message - { - std::string subject; - std::string text; - }; - - class ThreadSafeQueue - { - public: - ThreadSafeQueue() = default; - ~ThreadSafeQueue() = default; - - void Push( Message const& message ); - std::shared_ptr<Message> WaitAndPop(); - private: - mutable std::mutex mMutex; - std::queue<Message> mMessageQueue; - std::condition_variable mCondition; - }; -} |