From 7fcd35b7ad0fa2b0a49c5cdd9a62e23412bf8731 Mon Sep 17 00:00:00 2001 From: claiff Date: Fri, 30 Sep 2022 12:21:34 +0300 Subject: Add checking mails Add check server fix add simillar mails --- src/management/builder/mail.cpp | 5 ++++- src/management/builder/settings.cpp | 3 +++ src/management/mail.cpp | 28 +++++++++++++++++++++------- 3 files changed, 28 insertions(+), 8 deletions(-) (limited to 'src/management') diff --git a/src/management/builder/mail.cpp b/src/management/builder/mail.cpp index f7e882d..3a87f8b 100644 --- a/src/management/builder/mail.cpp +++ b/src/management/builder/mail.cpp @@ -1,12 +1,14 @@ #include "mail.hpp" #include "file/mail.hpp" + #include "checker/errors/mail/empty.hpp" +#include "checker/errors/mail/at_sign.hpp" namespace smtp::manage::builder { smtp::manage::Mail Mail::Build() const { - static const std::string PATH = {"/var/lib/smtp/mails.txt"}; + static const std::string PATH = {"/var/lib/smtp/mails.txt"}; auto registrator = BuildErrorRegistrator(); file::Mail file_manipulator{PATH, registrator}; @@ -17,6 +19,7 @@ namespace smtp::manage::builder { checker::RegistratorMails result; result.Add( std::make_shared < checker::errors::settings::Empty >()); + result.Add( std::make_shared < checker::errors::settings::AtSign >()); return result; } diff --git a/src/management/builder/settings.cpp b/src/management/builder/settings.cpp index baa45da..0b27bef 100644 --- a/src/management/builder/settings.cpp +++ b/src/management/builder/settings.cpp @@ -1,5 +1,6 @@ #include "settings.hpp" #include "checker/errors/settings/port_number.hpp" +#include "checker/errors/settings/server.hpp" namespace smtp::manage::builder { @@ -23,6 +24,8 @@ namespace smtp::manage::builder checker::RegistratorSettings result; result.Add( std::make_shared < checker::errors::settings::PortNumber >()); + result.Add( std::make_shared < checker::errors::settings::Server >()); + return result; } diff --git a/src/management/mail.cpp b/src/management/mail.cpp index 5c3c276..738c150 100644 --- a/src/management/mail.cpp +++ b/src/management/mail.cpp @@ -4,12 +4,19 @@ namespace smtp::manage { + // + //Constructors + // Mail::Mail( file::Mail const& file_reader ) : mFileReader( file_reader ) { mMails = mFileReader.Read(); } + + // + //Public methods + // MailsSet Mail::GetMailToSend() const { return mMails; @@ -17,13 +24,10 @@ namespace smtp::manage bool Mail::AddMailsToSend( MailsSet const& mails_to_add ) { - auto merged_mails = GetMergedMails( mails_to_add ); + auto merged_mails = GetMergedMails( mails_to_add ); auto result = mFileReader.Write( merged_mails ); - if( result ) - { - mMails = merged_mails; - } + mMails = mFileReader.Read(); return result; } @@ -32,6 +36,7 @@ namespace smtp::manage auto mails_to_delete = GetItersectionMails( mail_to_send ); auto result_set_after_delete = GetMailsAfterDelete( mails_to_delete ); auto result_of_delete = mFileReader.Write( result_set_after_delete ); + if( result_of_delete ) { mMails = result_set_after_delete; @@ -39,10 +44,19 @@ namespace smtp::manage return result_of_delete; } + // + //Private methods + // MailsSet Mail::GetMergedMails( MailsSet const& mails_to_add ) { - auto result = mails_to_add; - result.merge( mMails ); + MailsSet result; + auto sorted_mail_to_add = mails_to_add; + sorted_mail_to_add.sort(); + mMails.sort(); + + std::set_union( mMails.cbegin(), mMails.cend(), + sorted_mail_to_add.cbegin(), sorted_mail_to_add.cend(), + std::back_inserter( result )); return result; } -- cgit v1.2.3