// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QNETWORKDISKCACHE_P_H #define QNETWORKDISKCACHE_P_H // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #include #include "private/qabstractnetworkcache_p.h" #include #include #include QT_REQUIRE_CONFIG(networkdiskcache); QT_BEGIN_NAMESPACE class QFile; class QCacheItem { public: QCacheItem() : file(nullptr) { } ~QCacheItem() { reset(); } QNetworkCacheMetaData metaData; QBuffer data; QTemporaryFile *file; inline qint64 size() const { return file ? file->size() : data.size(); } inline void reset() { metaData = QNetworkCacheMetaData(); data.close(); delete file; file = nullptr; } void writeHeader(QFile *device) const; void writeCompressedData(QFile *device) const; bool read(QFile *device, bool readData); bool canCompress() const; }; class QNetworkDiskCachePrivate : public QAbstractNetworkCachePrivate { public: QNetworkDiskCachePrivate() : QAbstractNetworkCachePrivate() , maximumCacheSize(1024 * 1024 * 50) , currentCacheSize(-1) {} static QString uniqueFileName(const QUrl &url); QString cacheFileName(const QUrl &url) const; QString tmpCacheFileName() const; bool removeFile(const QString &file); void storeItem(QCacheItem *item); void prepareLayout(); static quint32 crc32(const char *data, uint len); mutable QCacheItem lastItem; QString cacheDirectory; QString dataDirectory; qint64 maximumCacheSize; qint64 currentCacheSize; QHash inserting; Q_DECLARE_PUBLIC(QNetworkDiskCache) }; QT_END_NAMESPACE #endif // QNETWORKDISKCACHE_P_H