summaryrefslogtreecommitdiff
path: root/src/management
diff options
context:
space:
mode:
Diffstat (limited to 'src/management')
-rw-r--r--src/management/builder/mail.cpp5
-rw-r--r--src/management/builder/settings.cpp3
-rw-r--r--src/management/mail.cpp28
3 files changed, 28 insertions, 8 deletions
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;
}