Skip to content

Commit 6474ed2

Browse files
author
Sebastiano Merlino
committed
Modified in order to create a named idiom based constructor
1 parent 6d77ed4 commit 6474ed2

2 files changed

Lines changed: 168 additions & 0 deletions

File tree

‎src/Webserver.cpp‎

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -830,6 +830,85 @@ Unescaper::~Unescaper() {}
830830

831831
void Unescaper::unescape(char* s) const {}
832832

833+
inline CreateWebserver::CreateWebserver():
834+
_port(DEFAULT_WS_PORT),
835+
_startMethod(HttpUtils::INTERNAL_SELECT),
836+
_maxThreads(0),
837+
_maxConnections(0),
838+
_memoryLimit(0),
839+
_connectionTimeout(DEFAULT_WS_TIMEOUT),
840+
_perIPConnectionLimit(0),
841+
_logDelegate(0x0),
842+
_validator(0x0),
843+
_unescaper(0x0),
844+
_maxThreadStackSize(0),
845+
_useSsl(false),
846+
_useIpv6(false),
847+
_debug(false),
848+
_pedantic(false),
849+
_httpsMemKey(""),
850+
_httpsMemCert(""),
851+
_httpsMemTrust(""),
852+
_httpsPriorities(""),
853+
_credType(HttpUtils::NONE),
854+
_digestAuthRandom(""),
855+
_nonceNcSize(0)
856+
{
857+
}
858+
859+
inline CreateWebserver::CreateWebserver(const int port):
860+
_port(port),
861+
_startMethod(HttpUtils::INTERNAL_SELECT),
862+
_maxThreads(0),
863+
_maxConnections(0),
864+
_memoryLimit(0),
865+
_connectionTimeout(DEFAULT_WS_TIMEOUT),
866+
_perIPConnectionLimit(0),
867+
_logDelegate(0x0),
868+
_validator(0x0),
869+
_unescaper(0x0),
870+
_maxThreadStackSize(0),
871+
_useSsl(false),
872+
_useIpv6(false),
873+
_debug(false),
874+
_pedantic(false),
875+
_httpsMemKey(""),
876+
_httpsMemCert(""),
877+
_httpsMemTrust(""),
878+
_httpsPriorities(""),
879+
_credType(HttpUtils::NONE),
880+
_digestAuthRandom(""),
881+
_nonceNcSize(0)
882+
{
883+
}
884+
885+
inline CreateWebserver& CreateWebserver::port(const int port) { _port = port; return *this; }
886+
inline CreateWebserver& CreateWebserver::startMethod(const HttpUtils::StartMethod_T& startMethod) { _startMethod = startMethod; return *this; }
887+
inline CreateWebserver& CreateWebserver::maxThreads(const int maxThreads) { _maxThreads = maxThreads; return *this; }
888+
inline CreateWebserver& CreateWebserver::maxConnections(const int maxConnections) { _maxConnections = maxConnections; return *this; }
889+
inline CreateWebserver& CreateWebserver::memoryLimit(const int memoryLimit) { _memoryLimit = memoryLimit; return *this; }
890+
inline CreateWebserver& CreateWebserver::connectionTimeout(const int connectionTimeout) { _connectionTimeout = connectionTimeout; return *this; }
891+
inline CreateWebserver& CreateWebserver::perIPConnectionLimit(const int perIPConnectionLimit) { _perIPConnectionLimit = perIPConnectionLimit; return *this; }
892+
inline CreateWebserver& CreateWebserver::logDelegate(const LoggingDelegate* logDelegate) { _logDelegate = logDelegate; return *this; }
893+
inline CreateWebserver& CreateWebserver::validator(const RequestValidator* validator) { _validator = validator; return *this; }
894+
inline CreateWebserver& CreateWebserver::unescaper(const Unescaper* unescaper) { _unescaper = unescaper; return *this; }
895+
inline CreateWebserver& CreateWebserver::maxThreadStackSize(const int maxThreadStackSize) { _maxThreadStackSize = maxThreadStackSize; return *this; }
896+
inline CreateWebserver& CreateWebserver::useSsl() { _useSsl = true; return *this; }
897+
inline CreateWebserver& CreateWebserver::noSsl() { _useSsl = false; return *this; }
898+
inline CreateWebserver& CreateWebserver::useIpv6() { _useIpv6 = true; return *this; }
899+
inline CreateWebserver& CreateWebserver::noIpv6() { _useIpv6 = false; return *this; }
900+
inline CreateWebserver& CreateWebserver::debug() { _debug = true; return *this; }
901+
inline CreateWebserver& CreateWebserver::noDebug() { _debug = false; return *this; }
902+
inline CreateWebserver& CreateWebserver::pedantic() { _pedantic = true; return *this; }
903+
inline CreateWebserver& CreateWebserver::noPedantic() { _pedantic = false; return *this; }
904+
inline CreateWebserver& CreateWebserver::httpsMemKey(const string& httpsMemKey) { _httpsMemKey = httpsMemKey; return *this; }
905+
inline CreateWebserver& CreateWebserver::httpsMemCert(const string& httpsMemCert) { _httpsMemCert = httpsMemCert; return *this; }
906+
inline CreateWebserver& CreateWebserver::httpsMemTrust(const string& httpsMemTrust) { _httpsMemTrust = httpsMemTrust; return *this; }
907+
inline CreateWebserver& CreateWebserver::httpsPriorities(const string& httpsPriorities) { _httpsPriorities = httpsPriorities; return *this; }
908+
inline CreateWebserver& CreateWebserver::credType(const HttpUtils::CredType_T& credType) { _credType = credType; return *this; }
909+
inline CreateWebserver& CreateWebserver::digestAuthRandom(const string& digestAuthRandom) { _digestAuthRandom = digestAuthRandom; return *this; }
910+
inline CreateWebserver& CreateWebserver::nonceNcSize(const int nonceNcSize) { _nonceNcSize = nonceNcSize; return *this; }
911+
833912
//WEBSERVER
834913
Webserver::Webserver
835914
(
@@ -882,6 +961,33 @@ Webserver::Webserver
882961
ignore_sigpipe();
883962
}
884963

964+
Webserver::Webserver(const CreateWebserver& params):
965+
port(params._port),
966+
maxThreads(params._maxThreads),
967+
maxConnections(params._maxConnections),
968+
memoryLimit(params._memoryLimit),
969+
connectionTimeout(params._connectionTimeout),
970+
perIPConnectionLimit(params._perIPConnectionLimit),
971+
logDelegate(params._logDelegate),
972+
validator(params._validator),
973+
unescaper(params._unescaper),
974+
maxThreadStackSize(params._maxThreadStackSize),
975+
useSsl(params._useSsl),
976+
useIpv6(params._useIpv6),
977+
debug(params._debug),
978+
pedantic(params._pedantic),
979+
httpsMemKey(params._httpsMemKey),
980+
httpsMemCert(params._httpsMemCert),
981+
httpsMemTrust(params._httpsMemTrust),
982+
httpsPriorities(params._httpsPriorities),
983+
credType(params._credType),
984+
digestAuthRandom(params._digestAuthRandom),
985+
nonceNcSize(params._nonceNcSize),
986+
running(false)
987+
{
988+
ignore_sigpipe();
989+
}
990+
885991
Webserver::~Webserver()
886992
{
887993
this->stop();
@@ -1097,6 +1203,7 @@ size_t internal_unescaper(void* cls, struct MHD_Connection *c, char* s)
10971203
}
10981204
}
10991205

1206+
11001207
int Webserver::post_iterator (void *cls, enum MHD_ValueKind kind,
11011208
const char *key,
11021209
const char *filename,

‎src/Webserver.hpp‎

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,8 @@ class Unescaper
786786
virtual void unescape(char* s) const;
787787
};
788788

789+
class CreateWebserver;
790+
789791
/**
790792
* Class representing the webserver. Main class of the apis.
791793
**/
@@ -837,6 +839,7 @@ class Webserver
837839
const std::string digestAuthRandom = "", //IT'S CORRECT TO PASS THIS PARAMETER BY VALUE
838840
const int nonceNcSize = 0
839841
);
842+
Webserver(const CreateWebserver& params);
840843
/**
841844
* Destructor of the class
842845
**/
@@ -944,6 +947,64 @@ class Webserver
944947
friend size_t internal_unescaper(void * cls, struct MHD_Connection *c, char *s);
945948
};
946949

950+
class CreateWebserver
951+
{
952+
public:
953+
CreateWebserver();
954+
explicit CreateWebserver(const int port);
955+
CreateWebserver& port(const int port);
956+
CreateWebserver& startMethod(const HttpUtils::StartMethod_T& startMethod);
957+
CreateWebserver& maxThreads(const int maxThreads);
958+
CreateWebserver& maxConnections(const int maxConnections);
959+
CreateWebserver& memoryLimit(const int memoryLimit);
960+
CreateWebserver& connectionTimeout(const int connectionTimeout);
961+
CreateWebserver& perIPConnectionLimit(const int perIPConnectionLimit);
962+
CreateWebserver& logDelegate(const LoggingDelegate* logDelegate);
963+
CreateWebserver& validator(const RequestValidator* validator);
964+
CreateWebserver& unescaper(const Unescaper* unescaper);
965+
CreateWebserver& maxThreadStackSize(const int maxThreadStackSize);
966+
CreateWebserver& useSsl();
967+
CreateWebserver& noSsl();
968+
CreateWebserver& useIpv6();
969+
CreateWebserver& noIpv6();
970+
CreateWebserver& debug();
971+
CreateWebserver& noDebug();
972+
CreateWebserver& pedantic();
973+
CreateWebserver& noPedantic();
974+
CreateWebserver& httpsMemKey(const std::string& httpsMemKey);
975+
CreateWebserver& httpsMemCert(const std::string& httpsMemCert);
976+
CreateWebserver& httpsMemTrust(const std::string& httpsMemTrust);
977+
CreateWebserver& httpsPriorities(const std::string& httpsPriorities);
978+
CreateWebserver& credType(const HttpUtils::CredType_T& credType);
979+
CreateWebserver& digestAuthRandom(const std::string& digestAuthRandom); //IT'S CORRECT TO PASS THIS PARAMETER BY VALUE
980+
CreateWebserver& nonceNcSize(const int nonceNcSize);
981+
private:
982+
int _port;
983+
HttpUtils::StartMethod_T _startMethod;
984+
int _maxThreads;
985+
int _maxConnections;
986+
int _memoryLimit;
987+
int _connectionTimeout;
988+
int _perIPConnectionLimit;
989+
const LoggingDelegate* _logDelegate;
990+
const RequestValidator* _validator;
991+
const Unescaper* _unescaper;
992+
int _maxThreadStackSize;
993+
bool _useSsl;
994+
bool _useIpv6;
995+
bool _debug;
996+
bool _pedantic;
997+
std::string _httpsMemKey;
998+
std::string _httpsMemCert;
999+
std::string _httpsMemTrust;
1000+
std::string _httpsPriorities;
1001+
HttpUtils::CredType_T _credType;
1002+
std::string _digestAuthRandom;
1003+
int _nonceNcSize;
1004+
1005+
friend class Webserver;
1006+
};
1007+
9471008
struct ModdedRequest
9481009
{
9491010
struct MHD_PostProcessor *pp;

0 commit comments

Comments
 (0)