caching for network requests, regards #26

This commit is contained in:
Hauke Schade 2013-05-26 00:13:33 +02:00
parent d34e2e968a
commit bde317a1a3
2 changed files with 23 additions and 2 deletions

View file

@ -10,17 +10,28 @@
//in /usr/share/common-licenses. If not, see http://www.gnu.org/licenses/.
#include "mynetworkmanager.hh"
#include <QtNetwork/QNetworkDiskCache>
QNetworkAccessManager* MyNetworkManager::create(QObject *parent) {
QNetworkAccessManager *nam = new QNetworkAccessManager(parent);
QNetworkAccessManager *nam = new MyNetworkAccessManager(parent);
connect(nam, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)), this, SLOT(onSslErrors(QNetworkReply*,QList<QSslError>)));
// connect(nam, SIGNAL(finished(QNetworkReply*)), this, SLOT(onReplyFinished(QNetworkReply*)));
qDebug("new custom mynetworkManager :)");
QNetworkDiskCache* diskCache = new QNetworkDiskCache(parent);
diskCache->setCacheDirectory("/tmp");
diskCache->setMaximumCacheSize(5*1024*1024); // 5Mo
nam->setCache(diskCache);
return nam;
}
QNetworkReply *MyNetworkAccessManager::createRequest( QNetworkAccessManager::Operation op, const QNetworkRequest & req, QIODevice * outgoingData) {
QNetworkRequest request(req);
request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
return QNetworkAccessManager::createRequest(op, request, outgoingData);
}
void MyNetworkManager::onSslErrors(QNetworkReply *reply, const QList<QSslError> &errors) {
qDebug("onSslErrors");
reply->ignoreSslErrors(errors);

View file

@ -14,6 +14,7 @@
#include <qdeclarativenetworkaccessmanagerfactory.h>
#include <QtNetwork/qnetworkreply.h>
#include <QtNetwork/QNetworkAccessManager>
class MyNetworkManager : public QObject, public QDeclarativeNetworkAccessManagerFactory
{
@ -27,4 +28,13 @@ private slots:
// void onReplyFinished(QNetworkReply *reply);
};
class MyNetworkAccessManager : public QNetworkAccessManager {
Q_OBJECT
public:
MyNetworkAccessManager(QObject *parent = 0) : QNetworkAccessManager(parent) { }
protected:
QNetworkReply *createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData = 0);
};
#endif // MYNETWORKMANAGER_HH