diff options
author | Markus Goetz <Markus.Goetz@nokia.com> | 2011-01-28 12:53:12 (GMT) |
---|---|---|
committer | Markus Goetz <Markus.Goetz@nokia.com> | 2011-02-21 10:52:15 (GMT) |
commit | f085092a48966a81315a021367086eb69c02e6a6 (patch) | |
tree | df6cdfc7a161d754323296ee5e7e6926a9d972fc /src/network/access/qnetworkaccessmanager.cpp | |
parent | b8fddce9e6f8dbd30e21cc2d8b20bb1bb0bccba8 (diff) | |
download | Qt-f085092a48966a81315a021367086eb69c02e6a6.zip Qt-f085092a48966a81315a021367086eb69c02e6a6.tar.gz Qt-f085092a48966a81315a021367086eb69c02e6a6.tar.bz2 |
QNAM: Threaded HTTP implementation
HTTP requests are run in a separate thread now.
This required some big changes in the QNetworkAccessHttpBackend.
There is a new class QHttpThreadDelegate which lives in the
HTTP thread and is the communication layer between HTTP code
and QNetworkAccessHttpBackend. Communication is done
via signals/slots.
The synchronous HTTP code (private QtWebKit API) also had to
be completely re-worked and uses its own thread now.
Reviewed-by: Peter Hartmann
Task-number: QTBUG-14162
Diffstat (limited to 'src/network/access/qnetworkaccessmanager.cpp')
-rw-r--r-- | src/network/access/qnetworkaccessmanager.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 562141b..ca8ea0e 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -65,6 +65,8 @@ #include "QtNetwork/qsslconfiguration.h" #include "QtNetwork/qnetworkconfigmanager.h" +#include "qthread.h" + QT_BEGIN_NAMESPACE #ifndef QT_NO_HTTP @@ -1099,10 +1101,21 @@ void QNetworkAccessManagerPrivate::clearCache(QNetworkAccessManager *manager) { manager->d_func()->objectCache.clear(); manager->d_func()->authenticationManager->clearCache(); + + if (manager->d_func()->httpThread) { + // The thread will deleteLater() itself from its finished() signal + manager->d_func()->httpThread->quit(); + manager->d_func()->httpThread = 0; + } } QNetworkAccessManagerPrivate::~QNetworkAccessManagerPrivate() { + if (httpThread) { + // The thread will deleteLater() itself from its finished() signal + httpThread->quit(); + httpThread = 0; + } } #ifndef QT_NO_BEARERMANAGEMENT |