#pragma once #include #include #include #include "managment/mail.hpp" #include "managment/settings.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 FillStorageByDefault(); void CreateService( ConnectionPtr bus ); void CreateMessagerInterface( ConnectionPtr connection ); void CreateSettingsManagerInterface( ConnectionPtr connection ); void CreateMailManagerInterface( ConnectionPtr connection ); void AddProperties(); void AddMessagerMethods(); void AddSettingsManagerMethods(); void AddMailManagerMethods(); bool RefreshSettings( bool is_need_auth, bool is_need_ssl, std::string const& user, std::string const& password, std::string const& host, std::string const& port ); InterfacePtr mMessagerInterface; InterfacePtr mManagerSettingsInterface; InterfacePtr mManagerMailInterface; ObjectServerPtr mObjectServer; manage::Settings mSettingsStorage; manage::Mail mMailTo; }; }