diff --git a/httpserver/httpconnectionhandler.cpp b/httpserver/httpconnectionhandler.cpp index a83b37d70..12c09cc29 100644 --- a/httpserver/httpconnectionhandler.cpp +++ b/httpserver/httpconnectionhandler.cpp @@ -5,7 +5,6 @@ #include "httpconnectionhandler.h" #include "httpresponse.h" -#include "httplistenersettings.h" using namespace qtwebapp; @@ -15,7 +14,6 @@ HttpConnectionHandler::HttpConnectionHandler(QSettings* settings, HttpRequestHan Q_ASSERT(settings!=0); Q_ASSERT(requestHandler!=0); this->settings=settings; - this->listenerSettings=0; this->requestHandler=requestHandler; this->sslConfiguration=sslConfiguration; currentRequest=0; @@ -39,13 +37,12 @@ HttpConnectionHandler::HttpConnectionHandler(QSettings* settings, HttpRequestHan this->start(); } -HttpConnectionHandler::HttpConnectionHandler(HttpListenerSettings* settings, HttpRequestHandler* requestHandler, QSslConfiguration* sslConfiguration) +HttpConnectionHandler::HttpConnectionHandler(const HttpListenerSettings& settings, HttpRequestHandler* requestHandler, QSslConfiguration* sslConfiguration) : QThread(), useQtSettings(false) { - Q_ASSERT(settings!=0); Q_ASSERT(requestHandler!=0); this->settings=0; - this->listenerSettings=settings; + listenerSettings=settings; this->requestHandler=requestHandler; this->sslConfiguration=sslConfiguration; currentRequest=0; @@ -141,7 +138,7 @@ void HttpConnectionHandler::handleConnection(tSocketDescriptor socketDescriptor) #endif // Start timer for read timeout - int readTimeout = useQtSettings ? settings->value("readTimeout",10000).toInt() : listenerSettings->readTimeout; + int readTimeout = useQtSettings ? settings->value("readTimeout",10000).toInt() : listenerSettings.readTimeout; readTimer.start(readTimeout); // delete previous request delete currentRequest; @@ -205,7 +202,7 @@ void HttpConnectionHandler::read() { // Restart timer for read timeout, otherwise it would // expire during large file uploads. - int readTimeout = useQtSettings ? settings->value("readTimeout",10000).toInt() : listenerSettings->readTimeout; + int readTimeout = useQtSettings ? settings->value("readTimeout",10000).toInt() : listenerSettings.readTimeout; readTimer.start(readTimeout); } } @@ -299,7 +296,7 @@ void HttpConnectionHandler::read() else { // Start timer for next request - int readTimeout = useQtSettings ? settings->value("readTimeout",10000).toInt() : listenerSettings->readTimeout; + int readTimeout = useQtSettings ? settings->value("readTimeout",10000).toInt() : listenerSettings.readTimeout; readTimer.start(readTimeout); } delete currentRequest; diff --git a/httpserver/httpconnectionhandler.h b/httpserver/httpconnectionhandler.h index 52c6f9f1c..685c9e118 100644 --- a/httpserver/httpconnectionhandler.h +++ b/httpserver/httpconnectionhandler.h @@ -16,11 +16,10 @@ #include "httpglobal.h" #include "httprequest.h" #include "httprequesthandler.h" +#include "httplistenersettings.h" namespace qtwebapp { -class HttpListenerSettings; - /** Alias type definition, for compatibility to different Qt versions */ #if QT_VERSION >= 0x050000 typedef qintptr tSocketDescriptor; @@ -56,12 +55,19 @@ public: /** Constructor. - @param settings Configuration settings of the HTTP webserver + @param settings Configuration settings of the HTTP webserver as Qt settings @param requestHandler Handler that will process each incoming HTTP request @param sslConfiguration SSL (HTTPS) will be used if not NULL */ HttpConnectionHandler(QSettings* settings, HttpRequestHandler* requestHandler, QSslConfiguration* sslConfiguration=NULL); - HttpConnectionHandler(HttpListenerSettings* settings, HttpRequestHandler* requestHandler, QSslConfiguration* sslConfiguration=NULL); + + /** + Constructor. + @param settings Configuration settings of the HTTP webserver as a structure + @param requestHandler Handler that will process each incoming HTTP request + @param sslConfiguration SSL (HTTPS) will be used if not NULL + */ + HttpConnectionHandler(const HttpListenerSettings& settings, HttpRequestHandler* requestHandler, QSslConfiguration* sslConfiguration=NULL); /** Destructor */ virtual ~HttpConnectionHandler(); @@ -72,11 +78,26 @@ public: /** Mark this handler as busy */ void setBusy(); + /** + * Get a listener settings copy + * @return The current listener settings + */ + HttpListenerSettings getListenerSettings() const { return listenerSettings; } + + /** + * Set new listener settings data + * @param Listener settings to replace current data + */ + void setListenerSettings(const HttpListenerSettings& settings) { listenerSettings = settings; } + + private: /** Configuration settings */ QSettings* settings; - HttpListenerSettings* listenerSettings; + + /** Configuration settings */ + HttpListenerSettings listenerSettings; /** TCP socket of the current connection */ QTcpSocket* socket; diff --git a/httpserver/httpconnectionhandlerpool.cpp b/httpserver/httpconnectionhandlerpool.cpp index 5e10ec902..7634f940e 100644 --- a/httpserver/httpconnectionhandlerpool.cpp +++ b/httpserver/httpconnectionhandlerpool.cpp @@ -6,7 +6,6 @@ #endif #include #include "httpconnectionhandlerpool.h" -#include "httplistenersettings.h" using namespace qtwebapp; @@ -15,7 +14,6 @@ HttpConnectionHandlerPool::HttpConnectionHandlerPool(QSettings* settings, HttpRe { Q_ASSERT(settings!=0); this->settings=settings; - this->listenerSettings=0; this->requestHandler=requestHandler; this->sslConfiguration=NULL; loadSslConfig(); @@ -23,16 +21,15 @@ HttpConnectionHandlerPool::HttpConnectionHandlerPool(QSettings* settings, HttpRe connect(&cleanupTimer, SIGNAL(timeout()), SLOT(cleanup())); } -HttpConnectionHandlerPool::HttpConnectionHandlerPool(HttpListenerSettings* settings, HttpRequestHandler* requestHandler) - : QObject() +HttpConnectionHandlerPool::HttpConnectionHandlerPool(const HttpListenerSettings& settings, HttpRequestHandler* requestHandler) + : QObject(), useQtSettings(false) { - Q_ASSERT(settings!=0); this->settings=0; - this->listenerSettings=settings; + listenerSettings=settings; this->requestHandler=requestHandler; this->sslConfiguration=NULL; loadSslConfig(); - cleanupTimer.start(settings->cleanupInterval); + cleanupTimer.start(settings.cleanupInterval); connect(&cleanupTimer, SIGNAL(timeout()), SLOT(cleanup())); } @@ -66,7 +63,7 @@ HttpConnectionHandler* HttpConnectionHandlerPool::getConnectionHandler() // create a new handler, if necessary if (!freeHandler) { - int maxConnectionHandlers = useQtSettings ? settings->value("maxThreads",100).toInt() : listenerSettings->maxThreads; + int maxConnectionHandlers = useQtSettings ? settings->value("maxThreads",100).toInt() : listenerSettings.maxThreads; if (pool.count()value("minThreads",1).toInt() : listenerSettings->minThreads; + int maxIdleHandlers = useQtSettings ? settings->value("minThreads",1).toInt() : listenerSettings.minThreads; int idleCounter=0; mutex.lock(); foreach(HttpConnectionHandler* handler, pool) @@ -104,8 +101,8 @@ void HttpConnectionHandlerPool::cleanup() void HttpConnectionHandlerPool::loadSslConfig() { // If certificate and key files are configured, then load them - QString sslKeyFileName = useQtSettings ? settings->value("sslKeyFile","").toString() : listenerSettings->sslKeyFile; - QString sslCertFileName = useQtSettings ? settings->value("sslCertFile","").toString() : listenerSettings->sslCertFile; + QString sslKeyFileName = useQtSettings ? settings->value("sslKeyFile","").toString() : listenerSettings.sslKeyFile; + QString sslCertFileName = useQtSettings ? settings->value("sslCertFile","").toString() : listenerSettings.sslCertFile; if (!sslKeyFileName.isEmpty() && !sslCertFileName.isEmpty()) { #ifdef QT_NO_OPENSSL diff --git a/httpserver/httpconnectionhandlerpool.h b/httpserver/httpconnectionhandlerpool.h index 6c695a924..748fc1298 100644 --- a/httpserver/httpconnectionhandlerpool.h +++ b/httpserver/httpconnectionhandlerpool.h @@ -7,6 +7,7 @@ #include #include "httpglobal.h" #include "httpconnectionhandler.h" +#include "httplistenersettings.h" namespace qtwebapp { @@ -45,8 +46,6 @@ namespace qtwebapp { @see HttpRequest for description of config settings maxRequestSize and maxMultiPartSize */ -class HttpListenerSettings; - class DECLSPEC HttpConnectionHandlerPool : public QObject { Q_OBJECT Q_DISABLE_COPY(HttpConnectionHandlerPool) @@ -59,7 +58,14 @@ public: @warning The requestMapper gets deleted by the destructor of this pool */ HttpConnectionHandlerPool(QSettings* settings, HttpRequestHandler* requestHandler); - HttpConnectionHandlerPool(HttpListenerSettings* settings, HttpRequestHandler* requestHandler); + + /** + Constructor. + @param settings Configuration settings for the HTTP server as structure + @param requestHandler The handler that will process each received HTTP request. + @warning The requestMapper gets deleted by the destructor of this pool + */ + HttpConnectionHandlerPool(const HttpListenerSettings& settings, HttpRequestHandler* requestHandler); /** Destructor */ virtual ~HttpConnectionHandlerPool(); @@ -67,11 +73,25 @@ public: /** Get a free connection handler, or 0 if not available. */ HttpConnectionHandler* getConnectionHandler(); + /** + * Get a listener settings copy + * @return The current listener settings + */ + HttpListenerSettings getListenerSettings() const { return listenerSettings; } + + /** + * Set new listener settings data + * @param Listener settings to replace current data + */ + void setListenerSettings(const HttpListenerSettings& settings) { listenerSettings = settings; } + private: - /** Settings for this pool */ + /** Settings for this pool as Qt settings*/ QSettings* settings; - HttpListenerSettings* listenerSettings; + + /** Settings for this pool as structure*/ + HttpListenerSettings listenerSettings; /** Will be assigned to each Connectionhandler during their creation */ HttpRequestHandler* requestHandler; diff --git a/httpserver/httplistener.cpp b/httpserver/httplistener.cpp index 80d549615..35407deda 100644 --- a/httpserver/httplistener.cpp +++ b/httpserver/httplistener.cpp @@ -6,7 +6,6 @@ #include "httplistener.h" #include "httpconnectionhandler.h" #include "httpconnectionhandlerpool.h" -#include "httplistenersettings.h" #include @@ -19,7 +18,6 @@ HttpListener::HttpListener(QSettings* settings, HttpRequestHandler* requestHandl Q_ASSERT(requestHandler != 0); pool = 0; this->settings = settings; - this->listenerSettings = 0; this->requestHandler = requestHandler; // Reqister type of socketDescriptor for signal/slot handling qRegisterMetaType("tSocketDescriptor"); @@ -27,14 +25,13 @@ HttpListener::HttpListener(QSettings* settings, HttpRequestHandler* requestHandl listen(); } -HttpListener::HttpListener(HttpListenerSettings* settings, HttpRequestHandler* requestHandler, QObject *parent) +HttpListener::HttpListener(const HttpListenerSettings& settings, HttpRequestHandler* requestHandler, QObject *parent) : QTcpServer(parent), useQtSettings(false) { - Q_ASSERT(settings != 0); Q_ASSERT(requestHandler != 0); pool = 0; this->settings = 0; - this->listenerSettings = settings; + listenerSettings = settings; this->requestHandler = requestHandler; // Reqister type of socketDescriptor for signal/slot handling qRegisterMetaType("tSocketDescriptor"); @@ -56,8 +53,8 @@ void HttpListener::listen() { pool=new HttpConnectionHandlerPool(settings,requestHandler); } - QString host = useQtSettings ? settings->value("host").toString() : listenerSettings->host; - int port = useQtSettings ? settings->value("port").toInt() : listenerSettings->port; + QString host = useQtSettings ? settings->value("host").toString() : listenerSettings.host; + int port = useQtSettings ? settings->value("port").toInt() : listenerSettings.port; QTcpServer::listen(host.isEmpty() ? QHostAddress::Any : QHostAddress(host), port); if (!isListening()) { diff --git a/httpserver/httplistener.h b/httpserver/httplistener.h index 57d4b87cd..aa3168de8 100644 --- a/httpserver/httplistener.h +++ b/httpserver/httplistener.h @@ -13,6 +13,7 @@ #include "httpconnectionhandler.h" #include "httpconnectionhandlerpool.h" #include "httprequesthandler.h" +#include "httplistenersettings.h" namespace qtwebapp { @@ -41,8 +42,6 @@ namespace qtwebapp { @see HttpRequest for description of config settings maxRequestSize and maxMultiPartSize */ -class HttpListenerSettings; - class DECLSPEC HttpListener : public QTcpServer { Q_OBJECT Q_DISABLE_COPY(HttpListener) @@ -57,7 +56,16 @@ public: @warning Ensure to close or delete the listener before deleting the request handler. */ HttpListener(QSettings* settings, HttpRequestHandler* requestHandler, QObject* parent = NULL); - HttpListener(HttpListenerSettings* settings, HttpRequestHandler* requestHandler, QObject* parent = NULL); + + /** + Constructor. + Creates a connection pool and starts listening on the configured host and port. + @param settings Configuration settings for the HTTP server as a structure. + @param requestHandler Processes each received HTTP request, usually by dispatching to controller classes. + @param parent Parent object. + @warning Ensure to close or delete the listener before deleting the request handler. + */ + HttpListener(const HttpListenerSettings& settings, HttpRequestHandler* requestHandler, QObject* parent = NULL); /** Destructor */ virtual ~HttpListener(); @@ -73,6 +81,18 @@ public: */ void close(); + /** + * Get a listener settings copy + * @return The current listener settings + */ + HttpListenerSettings getListenerSettings() const { return listenerSettings; } + + /** + * Set new listener settings data + * @param Listener settings to replace current data + */ + void setListenerSettings(const HttpListenerSettings& settings) { listenerSettings = settings; } + protected: /** Serves new incoming connection requests */ @@ -82,7 +102,9 @@ private: /** Configuration settings for the HTTP server */ QSettings* settings; - HttpListenerSettings* listenerSettings; + + /** Configuration settings for the HTTP server as a structure */ + HttpListenerSettings listenerSettings; /** Point to the reuqest handler which processes all HTTP requests */ HttpRequestHandler* requestHandler; diff --git a/httpserver/httprequest.cpp b/httpserver/httprequest.cpp index 8b0a6dc91..8d0e45ba5 100644 --- a/httpserver/httprequest.cpp +++ b/httpserver/httprequest.cpp @@ -12,24 +12,24 @@ using namespace qtwebapp; -HttpRequest::HttpRequest(QSettings* settings) : useQtSettings(true) +HttpRequest::HttpRequest(QSettings* settings) { status=waitForRequest; currentSize=0; expectedBodySize=0; maxSize=settings->value("maxRequestSize","16000").toInt(); maxMultiPartSize=settings->value("maxMultiPartSize","1000000").toInt(); - tempFile=NULL; + tempFile=0; } -HttpRequest::HttpRequest(HttpListenerSettings* settings) : useQtSettings(false) +HttpRequest::HttpRequest(const HttpListenerSettings& settings) { status=waitForRequest; currentSize=0; expectedBodySize=0; - maxSize=settings->maxRequestSize; - maxMultiPartSize=settings->maxMultiPartSize; - tempFile=NULL; + maxSize=settings.maxRequestSize; + maxMultiPartSize=settings.maxMultiPartSize; + tempFile=0; } diff --git a/httpserver/httprequest.h b/httpserver/httprequest.h index 9dd7852c0..e764b60ce 100644 --- a/httpserver/httprequest.h +++ b/httpserver/httprequest.h @@ -15,6 +15,7 @@ #include #include #include "httpglobal.h" +#include "httplistenersettings.h" namespace qtwebapp { @@ -35,8 +36,6 @@ namespace qtwebapp { The body is always a little larger than the file itself. */ -class HttpListenerSettings; - class DECLSPEC HttpRequest { Q_DISABLE_COPY(HttpRequest) friend class HttpSessionStore; @@ -51,7 +50,12 @@ public: @param settings Configuration settings */ HttpRequest(QSettings* settings); - HttpRequest(HttpListenerSettings* settings); + + /** + Constructor. + @param settings Configuration settings as a structure + */ + HttpRequest(const HttpListenerSettings& settings); /** Destructor. @@ -235,9 +239,6 @@ private: /** Buffer for collecting characters of request and header lines */ QByteArray lineBuffer; - /** settings flag */ - bool useQtSettings; - }; } // end of namespace diff --git a/httpserver/httpsessionstore.cpp b/httpserver/httpsessionstore.cpp index fd665c3b7..70a36309d 100644 --- a/httpserver/httpsessionstore.cpp +++ b/httpserver/httpsessionstore.cpp @@ -4,7 +4,6 @@ */ #include "httpsessionstore.h" -#include "httpsessionssettings.h" #include #include @@ -12,7 +11,7 @@ using namespace qtwebapp; HttpSessionStore::HttpSessionStore(QSettings* settings, QObject* parent) - :QObject(parent), sessionsSettings(0), useQtSettings(true) + :QObject(parent), useQtSettings(true) { this->settings=settings; connect(&cleanupTimer,SIGNAL(timeout()),this,SLOT(sessionTimerEvent())); @@ -22,14 +21,14 @@ HttpSessionStore::HttpSessionStore(QSettings* settings, QObject* parent) qDebug("HttpSessionStore: Sessions expire after %i milliseconds",expirationTime); } -HttpSessionStore::HttpSessionStore(HttpSessionsSettings* settings, QObject* parent) +HttpSessionStore::HttpSessionStore(const HttpSessionsSettings& settings, QObject* parent) :QObject(parent), settings(0), useQtSettings(false) { - this->sessionsSettings=settings; + sessionsSettings=settings; connect(&cleanupTimer,SIGNAL(timeout()),this,SLOT(sessionTimerEvent())); cleanupTimer.start(60000); - cookieName=QByteArray(qPrintable(settings->cookieName)); - expirationTime=settings->expirationTime; + cookieName=QByteArray(qPrintable(settings.cookieName)); + expirationTime=settings.expirationTime; qDebug("HttpSessionStore: Sessions expire after %i milliseconds",expirationTime); } @@ -73,10 +72,10 @@ HttpSession HttpSessionStore::getSession(HttpRequest& request, HttpResponse& res { mutex.unlock(); // Refresh the session cookie - QByteArray cookieName = useQtSettings ? settings->value("cookieName","sessionid").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookieName)); - QByteArray cookiePath = useQtSettings ? settings->value("cookiePath").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookiePath)); - QByteArray cookieComment = useQtSettings ? settings->value("cookieComment").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookieComment)); - QByteArray cookieDomain = useQtSettings ? settings->value("cookieDomain").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookieDomain)); + QByteArray cookieName = useQtSettings ? settings->value("cookieName","sessionid").toByteArray() : QByteArray(qPrintable(sessionsSettings.cookieName)); + QByteArray cookiePath = useQtSettings ? settings->value("cookiePath").toByteArray() : QByteArray(qPrintable(sessionsSettings.cookiePath)); + QByteArray cookieComment = useQtSettings ? settings->value("cookieComment").toByteArray() : QByteArray(qPrintable(sessionsSettings.cookieComment)); + QByteArray cookieDomain = useQtSettings ? settings->value("cookieDomain").toByteArray() : QByteArray(qPrintable(sessionsSettings.cookieDomain)); response.setCookie(HttpCookie(cookieName,session.getId(),expirationTime/1000,cookiePath,cookieComment,cookieDomain)); session.setLastAccess(); return session; @@ -85,10 +84,10 @@ HttpSession HttpSessionStore::getSession(HttpRequest& request, HttpResponse& res // Need to create a new session if (allowCreate) { - QByteArray cookieName = useQtSettings ? settings->value("cookieName","sessionid").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookieName)); - QByteArray cookiePath = useQtSettings ? settings->value("cookiePath").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookiePath)); - QByteArray cookieComment = useQtSettings ? settings->value("cookieComment").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookieComment)); - QByteArray cookieDomain = useQtSettings ? settings->value("cookieDomain").toByteArray() : QByteArray(qPrintable(sessionsSettings->cookieDomain)); + QByteArray cookieName = useQtSettings ? settings->value("cookieName","sessionid").toByteArray() : QByteArray(qPrintable(sessionsSettings.cookieName)); + QByteArray cookiePath = useQtSettings ? settings->value("cookiePath").toByteArray() : QByteArray(qPrintable(sessionsSettings.cookiePath)); + QByteArray cookieComment = useQtSettings ? settings->value("cookieComment").toByteArray() : QByteArray(qPrintable(sessionsSettings.cookieComment)); + QByteArray cookieDomain = useQtSettings ? settings->value("cookieDomain").toByteArray() : QByteArray(qPrintable(sessionsSettings.cookieDomain)); HttpSession session(true); qDebug("HttpSessionStore: create new session with ID %s",session.getId().data()); sessions.insert(session.getId(),session); diff --git a/httpserver/httpsessionstore.h b/httpserver/httpsessionstore.h index f86322a2b..395ff8530 100644 --- a/httpserver/httpsessionstore.h +++ b/httpserver/httpsessionstore.h @@ -14,11 +14,10 @@ #include "httpsession.h" #include "httpresponse.h" #include "httprequest.h" +#include "httpsessionssettings.h" namespace qtwebapp { -class HttpSessionsSettings; - /** Stores HTTP sessions and deletes them when they have expired. The following configuration settings are required in the config file: @@ -39,9 +38,11 @@ class DECLSPEC HttpSessionStore : public QObject { Q_DISABLE_COPY(HttpSessionStore) public: - /** Constructor. */ + /** Constructor with Qt settings. */ HttpSessionStore(QSettings* settings, QObject* parent=NULL); - HttpSessionStore(HttpSessionsSettings* settings, QObject* parent=NULL); + + /** Constructor with settings structure. */ + HttpSessionStore(const HttpSessionsSettings& settings, QObject* parent=NULL); /** Destructor */ virtual ~HttpSessionStore(); @@ -81,15 +82,29 @@ public: /** Delete a session */ void removeSession(HttpSession session); + /** + * Get a sessions settings copy + * @return The current sessions settings + */ + HttpSessionsSettings getListenerSettings() const { return sessionsSettings; } + + /** + * Set new sessions settings data + * @param sessions settings to replace current data + */ + void setListenerSettings(const HttpSessionsSettings& settings) { sessionsSettings = settings; } + protected: /** Storage for the sessions */ QMap sessions; private: - /** Configuration settings */ + /** Configuration settings as Qt settings*/ QSettings* settings; - HttpSessionsSettings *sessionsSettings; + + /** Configuration settings as a structure*/ + HttpSessionsSettings sessionsSettings; /** Timer to remove expired sessions */ QTimer cleanupTimer; diff --git a/httpserver/staticfilecontroller.cpp b/httpserver/staticfilecontroller.cpp index 1f80aa06f..56dc8255e 100644 --- a/httpserver/staticfilecontroller.cpp +++ b/httpserver/staticfilecontroller.cpp @@ -38,12 +38,12 @@ StaticFileController::StaticFileController(QSettings* settings, QObject* parent) qDebug("StaticFileController: cache timeout=%i, size=%i",cacheTimeout,cache.maxCost()); } -StaticFileController::StaticFileController(HttpDocrootSettings* settings, QObject* parent) +StaticFileController::StaticFileController(const HttpDocrootSettings& settings, QObject* parent) :HttpRequestHandler(parent), useQtSettings(false) { - maxAge=settings->maxAge; - encoding=settings->encoding; - docroot=settings->path; + maxAge=settings.maxAge; + encoding=settings.encoding; + docroot=settings.path; if(!(docroot.startsWith(":/") || docroot.startsWith("qrc://"))) { // Convert relative path to absolute, based on the directory of the config file. @@ -53,9 +53,9 @@ StaticFileController::StaticFileController(HttpDocrootSettings* settings, QObjec } } qDebug("StaticFileController: docroot=%s, encoding=%s, maxAge=%i",qPrintable(docroot),qPrintable(encoding),maxAge); - maxCachedFileSize=settings->maxCachedFileSize; - cache.setMaxCost(settings->cacheSize); - cacheTimeout=settings->cacheTime; + maxCachedFileSize=settings.maxCachedFileSize; + cache.setMaxCost(settings.cacheSize); + cacheTimeout=settings.cacheTime; qDebug("StaticFileController: cache timeout=%i, size=%i",cacheTimeout,cache.maxCost()); } diff --git a/httpserver/staticfilecontroller.h b/httpserver/staticfilecontroller.h index 950ae3ac0..d7e5d4361 100644 --- a/httpserver/staticfilecontroller.h +++ b/httpserver/staticfilecontroller.h @@ -49,11 +49,11 @@ class DECLSPEC StaticFileController : public HttpRequestHandler { Q_DISABLE_COPY(StaticFileController) public: - /** Constructor */ + /** Constructor with Qt settings*/ StaticFileController(QSettings* settings, QObject* parent = NULL); - /** Constructor */ - StaticFileController(HttpDocrootSettings* settings, QObject* parent = NULL); + /** Constructor with settings structure */ + StaticFileController(const HttpDocrootSettings& settings, QObject* parent = NULL); /** Generates the response */ void service(HttpRequest& request, HttpResponse& response);