diff options
Diffstat (limited to 'src/service')
-rw-r--r-- | src/service/smtp.cpp | 15 | ||||
-rw-r--r-- | src/service/smtp.hpp | 3 |
2 files changed, 12 insertions, 6 deletions
diff --git a/src/service/smtp.cpp b/src/service/smtp.cpp index 3c71161..6c2f1ad 100644 --- a/src/service/smtp.cpp +++ b/src/service/smtp.cpp @@ -14,6 +14,10 @@ namespace smtp::service CreateMessengerInterface( connection ); CreateSettingsManagerInterface( connection ); CreateMailManagerInterface( connection ); + + message::Sender sender{mSettingsStorage, mMailTo, mMessageQueue}; + std::thread sender_message( &message::Sender::Send, std::move(sender) ); + sender_message.detach(); } // @@ -33,9 +37,9 @@ namespace smtp::service static constexpr char SMTP_INTERFACE_NAME[] = "xyz.openbmc_project.Messenger"; mObjectServer = std::make_shared<sdbusplus::asio::object_server>( connection ); - mMessengerInterface = mObjectServer->add_interface( SMTP_OBJECT_NAME, SMTP_INTERFACE_NAME ); + mMessengerInterface = mObjectServer->add_interface( SMTP_OBJECT_NAME, SMTP_INTERFACE_NAME ); - AddMessengerMethods(); + AddMessengerMethods(); mMessengerInterface->initialize(); } @@ -70,10 +74,9 @@ namespace smtp::service { static constexpr char SMTP_SEND_MESSAGE_METHOD_NAME[] = "SendMail"; - mMessengerInterface->register_method( SMTP_SEND_MESSAGE_METHOD_NAME, [this]( std::string const& mail_from, - std::string const& theme, - std::string const& text ) - { return message::Sender{ mSettingsStorage, mMailTo }.Send( mail_from, theme, text );}); + mMessengerInterface->register_method( SMTP_SEND_MESSAGE_METHOD_NAME, [this]( std::string const& theme, + std::string const& text ) + { mMessageQueue.Push({theme, text});}); } void Smtp::AddSettingsManagerMethods() diff --git a/src/service/smtp.hpp b/src/service/smtp.hpp index 47ff209..0d8aea1 100644 --- a/src/service/smtp.hpp +++ b/src/service/smtp.hpp @@ -7,6 +7,7 @@ #include "management/mail.hpp" #include "management/settings.hpp" +#include "message/thread_safe_queue.hpp" namespace smtp::service { @@ -35,5 +36,7 @@ namespace smtp::service ObjectServerPtr mObjectServer; manage::Settings mSettingsStorage; manage::Mail mMailTo; + + message::ThreadSafeQueue mMessageQueue; }; } |