1 | // Copyright (C) 2016 The Qt Company Ltd. |
2 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only |
3 | |
4 | #ifndef QABSTRACTNETWORKCACHE_H |
5 | #define QABSTRACTNETWORKCACHE_H |
6 | |
7 | #include <QtNetwork/qtnetworkglobal.h> |
8 | #include <QtCore/qobject.h> |
9 | #include <QtCore/qshareddata.h> |
10 | #include <QtCore/qpair.h> |
11 | #include <QtNetwork/qnetworkrequest.h> |
12 | |
13 | QT_BEGIN_NAMESPACE |
14 | |
15 | |
16 | class QIODevice; |
17 | class QDateTime; |
18 | class QUrl; |
19 | |
20 | class QNetworkCacheMetaDataPrivate; |
21 | class Q_NETWORK_EXPORT QNetworkCacheMetaData |
22 | { |
23 | |
24 | public: |
25 | typedef QPair<QByteArray, QByteArray> ; |
26 | typedef QList<RawHeader> ; |
27 | typedef QHash<QNetworkRequest::Attribute, QVariant> AttributesMap; |
28 | |
29 | QNetworkCacheMetaData(); |
30 | QNetworkCacheMetaData(const QNetworkCacheMetaData &other); |
31 | ~QNetworkCacheMetaData(); |
32 | |
33 | QNetworkCacheMetaData &operator=(QNetworkCacheMetaData &&other) noexcept { swap(other); return *this; } |
34 | QNetworkCacheMetaData &operator=(const QNetworkCacheMetaData &other); |
35 | |
36 | void swap(QNetworkCacheMetaData &other) noexcept |
37 | { d.swap(other&: other.d); } |
38 | |
39 | bool operator==(const QNetworkCacheMetaData &other) const; |
40 | inline bool operator!=(const QNetworkCacheMetaData &other) const |
41 | { return !(*this == other); } |
42 | |
43 | bool isValid() const; |
44 | |
45 | QUrl url() const; |
46 | void setUrl(const QUrl &url); |
47 | |
48 | RawHeaderList () const; |
49 | void (const RawHeaderList &); |
50 | |
51 | QHttpHeaders () const; |
52 | void (const QHttpHeaders &); |
53 | |
54 | QDateTime lastModified() const; |
55 | void setLastModified(const QDateTime &dateTime); |
56 | |
57 | QDateTime expirationDate() const; |
58 | void setExpirationDate(const QDateTime &dateTime); |
59 | |
60 | bool saveToDisk() const; |
61 | void setSaveToDisk(bool allow); |
62 | |
63 | AttributesMap attributes() const; |
64 | void setAttributes(const AttributesMap &attributes); |
65 | |
66 | private: |
67 | friend class QNetworkCacheMetaDataPrivate; |
68 | QSharedDataPointer<QNetworkCacheMetaDataPrivate> d; |
69 | }; |
70 | |
71 | Q_DECLARE_SHARED(QNetworkCacheMetaData) |
72 | |
73 | Q_NETWORK_EXPORT QDataStream &operator<<(QDataStream &, const QNetworkCacheMetaData &); |
74 | Q_NETWORK_EXPORT QDataStream &operator>>(QDataStream &, QNetworkCacheMetaData &); |
75 | |
76 | |
77 | class QAbstractNetworkCachePrivate; |
78 | class Q_NETWORK_EXPORT QAbstractNetworkCache : public QObject |
79 | { |
80 | Q_OBJECT |
81 | |
82 | public: |
83 | virtual ~QAbstractNetworkCache(); |
84 | |
85 | virtual QNetworkCacheMetaData metaData(const QUrl &url) = 0; |
86 | virtual void updateMetaData(const QNetworkCacheMetaData &metaData) = 0; |
87 | virtual QIODevice *data(const QUrl &url) = 0; |
88 | virtual bool remove(const QUrl &url) = 0; |
89 | virtual qint64 cacheSize() const = 0; |
90 | |
91 | virtual QIODevice *prepare(const QNetworkCacheMetaData &metaData) = 0; |
92 | virtual void insert(QIODevice *device) = 0; |
93 | |
94 | public Q_SLOTS: |
95 | virtual void clear() = 0; |
96 | |
97 | protected: |
98 | explicit QAbstractNetworkCache(QObject *parent = nullptr); |
99 | QAbstractNetworkCache(QAbstractNetworkCachePrivate &dd, QObject *parent); |
100 | |
101 | private: |
102 | Q_DECLARE_PRIVATE(QAbstractNetworkCache) |
103 | Q_DISABLE_COPY(QAbstractNetworkCache) |
104 | }; |
105 | |
106 | QT_END_NAMESPACE |
107 | |
108 | #endif |
109 | |