![]() |
Qt 6.x
The Qt SDK
|
The QNetworkDiskCache class provides a very basic disk cache. More...
#include <qnetworkdiskcache.h>
Public Slots | |
void | clear () override |
\reimp | |
![]() | |
virtual void | clear ()=0 |
Removes all items from the cache. | |
![]() | |
void | deleteLater () |
\threadsafe | |
Public Member Functions | |
QNetworkDiskCache (QObject *parent=nullptr) | |
Creates a new disk cache. | |
~QNetworkDiskCache () | |
Destroys the cache object. | |
QString | cacheDirectory () const |
Returns the location where cached files will be stored. | |
void | setCacheDirectory (const QString &cacheDir) |
Sets the directory where cached files will be stored to cacheDir. | |
qint64 | maximumCacheSize () const |
Returns the current maximum size for the disk cache. | |
void | setMaximumCacheSize (qint64 size) |
Sets the maximum size of the disk cache to be size. | |
qint64 | cacheSize () const override |
\reimp | |
QNetworkCacheMetaData | metaData (const QUrl &url) override |
\reimp | |
void | updateMetaData (const QNetworkCacheMetaData &metaData) override |
\reimp | |
QIODevice * | data (const QUrl &url) override |
\reimp | |
bool | remove (const QUrl &url) override |
\reimp | |
QIODevice * | prepare (const QNetworkCacheMetaData &metaData) override |
\reimp | |
void | insert (QIODevice *device) override |
\reimp | |
QNetworkCacheMetaData | fileMetaData (const QString &fileName) const |
Returns the QNetworkCacheMetaData for the cache file fileName. | |
![]() | |
virtual | ~QAbstractNetworkCache () |
Destroys the cache. | |
virtual QNetworkCacheMetaData | metaData (const QUrl &url)=0 |
Returns the meta data for the url url. | |
virtual void | updateMetaData (const QNetworkCacheMetaData &metaData)=0 |
Updates the cache meta date for the metaData's url to metaData. | |
virtual QIODevice * | data (const QUrl &url)=0 |
Returns the data associated with url. | |
virtual bool | remove (const QUrl &url)=0 |
Removes the cache entry for url, returning true if success otherwise false. | |
virtual qint64 | cacheSize () const =0 |
Returns the current size taken up by the cache. | |
virtual QIODevice * | prepare (const QNetworkCacheMetaData &metaData)=0 |
Returns the device that should be populated with the data for the cache item metaData. | |
virtual void | insert (QIODevice *device)=0 |
Inserts the data in device and the prepared meta data into the cache. | |
![]() | |
Q_INVOKABLE | QObject (QObject *parent=nullptr) |
Constructs an object with parent object parent. | |
virtual | ~QObject () |
Destroys the object, deleting all its child objects. | |
virtual bool | event (QEvent *event) |
This virtual function receives events to an object and should return true if the event e was recognized and processed. | |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
Filters events if this object has been installed as an event filter for the watched object. | |
QString | objectName () const |
Q_WEAK_OVERLOAD void | setObjectName (const QString &name) |
Sets the object's name to name. | |
void | setObjectName (QAnyStringView name) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
QBindable< QString > | bindableObjectName () |
bool | isWidgetType () const |
Returns true if the object is a widget; otherwise returns false . | |
bool | isWindowType () const |
Returns true if the object is a window; otherwise returns false . | |
bool | isQuickItemType () const |
Returns true if the object is a QQuickItem; otherwise returns false . | |
bool | signalsBlocked () const noexcept |
Returns true if signals are blocked; otherwise returns false . | |
bool | blockSignals (bool b) noexcept |
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). | |
QThread * | thread () const |
Returns the thread in which the object lives. | |
void | moveToThread (QThread *thread) |
Changes the thread affinity for this object and its children. | |
int | startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer) |
This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds. | |
int | startTimer (std::chrono::milliseconds time, Qt::TimerType timerType=Qt::CoarseTimer) |
void | killTimer (int id) |
Kills the timer with timer identifier, id. | |
template<typename T > | |
T | findChild (const QString &aName=QString(), Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object. | |
template<typename T > | |
QList< T > | findChildren (const QString &aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. | |
template<typename T > | |
QList< T > | findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
const QObjectList & | children () const |
Returns a list of child objects. | |
void | setParent (QObject *parent) |
Makes the object a child of parent. | |
void | installEventFilter (QObject *filterObj) |
Installs an event filter filterObj on this object. | |
void | removeEventFilter (QObject *obj) |
Removes an event filter object obj from this object. | |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const |
bool | disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const |
bool | disconnect (const QObject *receiver, const char *member=nullptr) const |
void | dumpObjectTree () const |
Dumps a tree of children to the debug output. | |
void | dumpObjectInfo () const |
Dumps information about signal connections, etc. | |
bool | setProperty (const char *name, const QVariant &value) |
Sets the value of the object's name property to value. | |
bool | setProperty (const char *name, QVariant &&value) |
QVariant | property (const char *name) const |
Returns the value of the object's name property. | |
QList< QByteArray > | dynamicPropertyNames () const |
QBindingStorage * | bindingStorage () |
const QBindingStorage * | bindingStorage () const |
QObject * | parent () const |
Returns a pointer to the parent object. | |
bool | inherits (const char *classname) const |
Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false . | |
Protected Member Functions | |
virtual qint64 | expire () |
Cleans the cache so that its size is under the maximum cache size. | |
![]() | |
QAbstractNetworkCache (QObject *parent=nullptr) | |
Constructs an abstract network cache with the given parent. | |
QAbstractNetworkCache (QAbstractNetworkCachePrivate &dd, QObject *parent) | |
![]() | |
QObject * | sender () const |
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr. | |
int | senderSignalIndex () const |
int | receivers (const char *signal) const |
Returns the number of receivers connected to the signal. | |
bool | isSignalConnected (const QMetaMethod &signal) const |
virtual void | timerEvent (QTimerEvent *event) |
This event handler can be reimplemented in a subclass to receive timer events for the object. | |
virtual void | childEvent (QChildEvent *event) |
This event handler can be reimplemented in a subclass to receive child events. | |
virtual void | customEvent (QEvent *event) |
This event handler can be reimplemented in a subclass to receive custom events. | |
virtual void | connectNotify (const QMetaMethod &signal) |
virtual void | disconnectNotify (const QMetaMethod &signal) |
QObject (QObjectPrivate &dd, QObject *parent=nullptr) | |
Additional Inherited Members | |
![]() | |
void | destroyed (QObject *=nullptr) |
This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked. | |
void | objectNameChanged (const QString &objectName, QPrivateSignal) |
This signal is emitted after the object's name has been changed. | |
![]() | |
static QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection) |
\threadsafe | |
static QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot) |
static bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member) |
\threadsafe | |
static bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) |
static bool | disconnect (const QMetaObject::Connection &) |
Disconnect a connection. | |
template<typename Func1 , typename Func2 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot) |
template<typename Func1 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero) |
![]() | |
QScopedPointer< QObjectData > | d_ptr |
![]() | |
QString | objectName |
the name of this object | |
![]() | |
template< class T > T | qobject_cast (const QObject *object) |
Returns the given object cast to type T if the object is of type T (or of a subclass); otherwise returns \nullptr. | |
template< typename T > T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
template< typename T > QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QObjectList | |
\macro Q_CLASSINFO(Name, Value) | |
The QNetworkDiskCache class provides a very basic disk cache.
QNetworkDiskCache stores each url in its own file inside of the cacheDirectory using QDataStream. Files with a text MimeType are compressed using qCompress. Data is written to disk only in insert() and updateMetaData().
Currently you cannot share the same cache files with more than one disk cache.
QNetworkDiskCache by default limits the amount of space that the cache will use on the system to 50MB.
Note you have to set the cache directory before it will work.
A network disk cache can be enabled by:
When sending requests, to control the preference of when to use the cache and when to use the network, consider the following:
To check whether the response came from the cache or from the network, the following can be applied:
Definition at line 15 of file qnetworkdiskcache.h.
Creates a new disk cache.
The parent argument is passed to QAbstractNetworkCache's constructor.
Definition at line 71 of file qnetworkdiskcache.cpp.
QNetworkDiskCache::~QNetworkDiskCache | ( | ) |
Destroys the cache object.
This does not clear the disk cache.
Definition at line 79 of file qnetworkdiskcache.cpp.
References d, and qDeleteAll().
QString QNetworkDiskCache::cacheDirectory | ( | ) | const |
Returns the location where cached files will be stored.
Definition at line 88 of file qnetworkdiskcache.cpp.
References d.
Referenced by expire().
|
overridevirtual |
\reimp
Implements QAbstractNetworkCache.
Definition at line 125 of file qnetworkdiskcache.cpp.
References d, expire(), and qDebug.
|
overrideslot |
\reimp
Definition at line 537 of file qnetworkdiskcache.cpp.
References d, expire(), and qDebug.
\reimp
Implements QAbstractNetworkCache.
Definition at line 357 of file qnetworkdiskcache.cpp.
References QFileDevice::close(), d, file, QUrl::isValid(), QFile::open(), qDebug, QIODevice::readAll(), QIODeviceBase::ReadOnly, remove(), QIODeviceBase::Unbuffered, and url.
|
protectedvirtual |
Cleans the cache so that its size is under the maximum cache size.
Returns the current size of the cache.
When the current size of the cache is greater than the maximumCacheSize() older cache files are removed until the total size is less then 90% of maximumCacheSize() starting with the oldest ones first using the file creation date to determine how old a cache file is.
Subclasses can reimplement this function to change the order that cache files are removed taking into account information in the application knows about that QNetworkDiskCache does not, for example the number of times a cache is accessed.
Definition at line 470 of file qnetworkdiskcache.cpp.
References QDir::AllDirs, QFileInfo::birthTime(), CACHE_POSTFIX, cacheDirectory(), d, QString::endsWith(), QFileInfo::fileName(), QFileInfo::filePath(), QDir::Files, filters, info, QDateTime::isValid(), it, maximumCacheSize(), QFileInfo::metadataChangeTime(), QDir::NoDotAndDotDot, qDebug, qWarning, QFile::remove(), QFileInfo::size(), QDirIterator::Subdirectories, QDateTime::toMSecsSinceEpoch(), and QTimeZone::UTC.
Referenced by cacheSize(), clear(), and setMaximumCacheSize().
QNetworkCacheMetaData QNetworkDiskCache::fileMetaData | ( | const QString & | fileName | ) | const |
Returns the QNetworkCacheMetaData for the cache file fileName.
If fileName is not a cache file QNetworkCacheMetaData will be invalid.
Definition at line 337 of file qnetworkdiskcache.cpp.
References QFileDevice::close(), d, file, fileName, QFile::open(), qDebug, QIODeviceBase::ReadOnly, and QNetworkDiskCachePrivate::removeFile().
Referenced by metaData().
\reimp
Implements QAbstractNetworkCache.
Definition at line 195 of file qnetworkdiskcache.cpp.
References d, device, it, Q_UNLIKELY, qDebug, and qWarning.
Referenced by updateMetaData().
qint64 QNetworkDiskCache::maximumCacheSize | ( | ) | const |
Returns the current maximum size for the disk cache.
Definition at line 430 of file qnetworkdiskcache.cpp.
References d.
Referenced by expire(), and prepare().
|
overridevirtual |
\reimp
Implements QAbstractNetworkCache.
Definition at line 321 of file qnetworkdiskcache.cpp.
References d, fileMetaData(), qDebug, and url.
Referenced by prepare(), and updateMetaData().
|
overridevirtual |
\reimp
Implements QAbstractNetworkCache.
Definition at line 143 of file qnetworkdiskcache.cpp.
References Qt::CaseInsensitive, QString::compare(), d, device, fileName, QString::first(), header(), QUrl::isValid(), QNetworkCacheMetaData::isValid(), maximumCacheSize(), metaData(), qDebug, QT_CATCH, QT_TRY, qWarning, QNetworkCacheMetaData::rawHeaders(), QIODeviceBase::ReadWrite, QNetworkCacheMetaData::saveToDisk(), QString::toLongLong(), QNetworkCacheMetaData::url(), and QIODeviceBase::WriteOnly.
Referenced by updateMetaData().
|
overridevirtual |
\reimp
Implements QAbstractNetworkCache.
Definition at line 274 of file qnetworkdiskcache.cpp.
References d, it, item, qDebug, and url.
Referenced by data().
Sets the directory where cached files will be stored to cacheDir.
QNetworkDiskCache will create this directory if it does not exists.
Prepared cache items will be stored in the new cache directory when they are inserted.
Definition at line 104 of file qnetworkdiskcache.cpp.
References CACHE_VERSION, d, DATA_DIR, dir, QString::isEmpty(), QString::number(), and qDebug.
Referenced by QGeoTiledMappingManagerEngineOsm::QGeoTiledMappingManagerEngineOsm(), and CachingNetworkAccessManagerFactory::create().
Sets the maximum size of the disk cache to be size.
If the new size is smaller then the current cache size then the cache will call expire().
Definition at line 443 of file qnetworkdiskcache.cpp.
Referenced by QGeoTiledMappingManagerEngineOsm::QGeoTiledMappingManagerEngineOsm().
|
overridevirtual |
\reimp
Implements QAbstractNetworkCache.
Definition at line 395 of file qnetworkdiskcache.cpp.
References QIODevice::atEnd(), insert(), metaData(), prepare(), qDebug, QIODevice::read(), url, QNetworkCacheMetaData::url(), and QIODevice::write().