QGIS API Documentation 3.99.0-Master (a8f284845db)
Loading...
Searching...
No Matches
qgsnetworkdiskcache.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsnetworkdiskcache.h - Thread-safe interface for QNetworkDiskCache
3 -------------------
4 begin : 2016-03-05
5 copyright : (C) 2016 by Juergen E. Fischer
6 email : jef at norbit dot de
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSNETWORKDISKCACHE_H
19#define QGSNETWORKDISKCACHE_H
20
21
22#include "qgis_core.h"
23
24#include <QMutex>
25#include <QNetworkDiskCache>
26
27#define SIP_NO_FILE
28
29class QNetworkDiskCache;
30
32
33class ExpirableNetworkDiskCache : public QNetworkDiskCache
34{
35 Q_OBJECT
36
37 public:
38 explicit ExpirableNetworkDiskCache( QObject *parent = nullptr ) : QNetworkDiskCache( parent ) {}
39 qint64 runExpire() { return QNetworkDiskCache::expire(); }
40};
41
43
51class CORE_EXPORT QgsNetworkDiskCache : public QNetworkDiskCache
52{
53 Q_OBJECT
54
55 public:
56
58 QString cacheDirectory() const;
59
61 void setCacheDirectory( const QString &cacheDir );
62
64 qint64 maximumCacheSize() const;
65
67 void setMaximumCacheSize( qint64 size );
68
70 QNetworkCacheMetaData metaData( const QUrl &url ) override;
71
73 void updateMetaData( const QNetworkCacheMetaData &metaData ) override;
74
76 QIODevice *data( const QUrl &url ) override;
77
79 bool remove( const QUrl &url ) override;
80
82 qint64 cacheSize() const override;
83
85 QIODevice *prepare( const QNetworkCacheMetaData &metaData ) override;
86
88 void insert( QIODevice *device ) override;
89
91 QNetworkCacheMetaData fileMetaData( const QString &fileName ) const;
92
97 static qint64 smartCacheSize( const QString &path );
98
99 public slots:
101 void clear() override;
102
103 protected:
105 qint64 expire() override;
106
107 private:
108 explicit QgsNetworkDiskCache( QObject *parent );
109
110 static ExpirableNetworkDiskCache sDiskCache;
111 static QMutex sDiskCacheMutex;
112
114};
115
116#endif // QGSNETWORKDISKCACHE_H
void setCacheDirectory(const QString &cacheDir)
QIODevice * data(const QUrl &url) override
void updateMetaData(const QNetworkCacheMetaData &metaData) override
QNetworkCacheMetaData metaData(const QUrl &url) override
qint64 maximumCacheSize() const
QNetworkCacheMetaData fileMetaData(const QString &fileName) const
friend class QgsNetworkAccessManager
void insert(QIODevice *device) override
QIODevice * prepare(const QNetworkCacheMetaData &metaData) override
bool remove(const QUrl &url) override
void setMaximumCacheSize(qint64 size)
qint64 cacheSize() const override
QString cacheDirectory() const
static qint64 smartCacheSize(const QString &path)
Returns a smart cache size, in bytes, based on available free space.