summaryrefslogtreecommitdiff
path: root/src/message
diff options
context:
space:
mode:
Diffstat (limited to 'src/message')
-rw-r--r--src/message/sender.cpp9
-rw-r--r--src/message/sender.hpp8
-rw-r--r--src/message/thread_safe_queue.cpp21
-rw-r--r--src/message/thread_safe_queue.hpp29
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;
- };
-}