#pragma once #include #include #include #include "management/mail.hpp" #include "management/settings.hpp" #include "message/thread_safe_queue.hpp" namespace smtp::service { using ConnectionPtr = std::shared_ptr; using InterfacePtr = std::shared_ptr; using ObjectServerPtr = std::shared_ptr; class Smtp { public: Smtp( ConnectionPtr connection, manage::Settings const& settings, manage::Mail const& mail_to ); ~Smtp() = default; private: void CreateService( ConnectionPtr bus ); void CreateMessengerInterface( ConnectionPtr connection ); void CreateSettingsManagerInterface( ConnectionPtr connection ); void CreateMailManagerInterface( ConnectionPtr connection ); void AddMessengerMethods(); void AddSettingsManagerMethods(); void AddMailManagerMethods(); InterfacePtr mMessengerInterface; InterfacePtr mManagerSettingsInterface; InterfacePtr mManagerMailInterface; ObjectServerPtr mObjectServer; manage::Settings mSettingsStorage; manage::Mail mMailTo; message::ThreadSafeQueue mMessageQueue; }; }