diff options
Diffstat (limited to 'common/storage.h')
-rw-r--r-- | common/storage.h | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/common/storage.h b/common/storage.h index 4ef20d5..e368b05 100644 --- a/common/storage.h +++ b/common/storage.h | |||
@@ -27,8 +27,9 @@ | |||
27 | #include <QString> | 27 | #include <QString> |
28 | 28 | ||
29 | namespace Sink { | 29 | namespace Sink { |
30 | namespace Storage { | ||
30 | 31 | ||
31 | class SINK_EXPORT Storage | 32 | class SINK_EXPORT DataStore |
32 | { | 33 | { |
33 | public: | 34 | public: |
34 | enum AccessMode | 35 | enum AccessMode |
@@ -66,16 +67,16 @@ public: | |||
66 | /** | 67 | /** |
67 | * Write a value | 68 | * Write a value |
68 | */ | 69 | */ |
69 | bool write(const QByteArray &key, const QByteArray &value, const std::function<void(const Storage::Error &error)> &errorHandler = std::function<void(const Storage::Error &error)>()); | 70 | bool write(const QByteArray &key, const QByteArray &value, const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()); |
70 | 71 | ||
71 | /** | 72 | /** |
72 | * Remove a key | 73 | * Remove a key |
73 | */ | 74 | */ |
74 | void remove(const QByteArray &key, const std::function<void(const Storage::Error &error)> &errorHandler = std::function<void(const Storage::Error &error)>()); | 75 | void remove(const QByteArray &key, const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()); |
75 | /** | 76 | /** |
76 | * Remove a key-value pair | 77 | * Remove a key-value pair |
77 | */ | 78 | */ |
78 | void remove(const QByteArray &key, const QByteArray &value, const std::function<void(const Storage::Error &error)> &errorHandler = std::function<void(const Storage::Error &error)>()); | 79 | void remove(const QByteArray &key, const QByteArray &value, const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()); |
79 | 80 | ||
80 | /** | 81 | /** |
81 | * Read values with a given key. | 82 | * Read values with a given key. |
@@ -87,7 +88,7 @@ public: | |||
87 | * @return The number of values retrieved. | 88 | * @return The number of values retrieved. |
88 | */ | 89 | */ |
89 | int scan(const QByteArray &key, const std::function<bool(const QByteArray &key, const QByteArray &value)> &resultHandler, | 90 | int scan(const QByteArray &key, const std::function<bool(const QByteArray &key, const QByteArray &value)> &resultHandler, |
90 | const std::function<void(const Storage::Error &error)> &errorHandler = std::function<void(const Storage::Error &error)>(), bool findSubstringKeys = false, bool skipInternalKeys = true) const; | 91 | const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>(), bool findSubstringKeys = false, bool skipInternalKeys = true) const; |
91 | 92 | ||
92 | /** | 93 | /** |
93 | * Finds the last value in a series matched by prefix. | 94 | * Finds the last value in a series matched by prefix. |
@@ -96,7 +97,7 @@ public: | |||
96 | * Note that this relies on a key scheme like $uid$revision. | 97 | * Note that this relies on a key scheme like $uid$revision. |
97 | */ | 98 | */ |
98 | void findLatest(const QByteArray &uid, const std::function<void(const QByteArray &key, const QByteArray &value)> &resultHandler, | 99 | void findLatest(const QByteArray &uid, const std::function<void(const QByteArray &key, const QByteArray &value)> &resultHandler, |
99 | const std::function<void(const Storage::Error &error)> &errorHandler = std::function<void(const Storage::Error &error)>()) const; | 100 | const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()) const; |
100 | 101 | ||
101 | /** | 102 | /** |
102 | * Returns true if the database contains the substring key. | 103 | * Returns true if the database contains the substring key. |
@@ -127,14 +128,14 @@ public: | |||
127 | public: | 128 | public: |
128 | Transaction(); | 129 | Transaction(); |
129 | ~Transaction(); | 130 | ~Transaction(); |
130 | bool commit(const std::function<void(const Storage::Error &error)> &errorHandler = std::function<void(const Storage::Error &error)>()); | 131 | bool commit(const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()); |
131 | void abort(); | 132 | void abort(); |
132 | 133 | ||
133 | QList<QByteArray> getDatabaseNames() const; | 134 | QList<QByteArray> getDatabaseNames() const; |
134 | bool validateNamedDatabases(); | 135 | bool validateNamedDatabases(); |
135 | 136 | ||
136 | NamedDatabase openDatabase(const QByteArray &name = QByteArray("default"), | 137 | NamedDatabase openDatabase(const QByteArray &name = QByteArray("default"), |
137 | const std::function<void(const Storage::Error &error)> &errorHandler = std::function<void(const Storage::Error &error)>(), bool allowDuplicates = false) const; | 138 | const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>(), bool allowDuplicates = false) const; |
138 | 139 | ||
139 | Transaction(Transaction &&other); | 140 | Transaction(Transaction &&other); |
140 | Transaction &operator=(Transaction &&other); | 141 | Transaction &operator=(Transaction &&other); |
@@ -144,29 +145,29 @@ public: | |||
144 | private: | 145 | private: |
145 | Transaction(Transaction &other); | 146 | Transaction(Transaction &other); |
146 | Transaction &operator=(Transaction &other); | 147 | Transaction &operator=(Transaction &other); |
147 | friend Storage; | 148 | friend DataStore; |
148 | class Private; | 149 | class Private; |
149 | Transaction(Private *); | 150 | Transaction(Private *); |
150 | Private *d; | 151 | Private *d; |
151 | }; | 152 | }; |
152 | 153 | ||
153 | Storage(const QString &storageRoot, const QString &name, AccessMode mode = ReadOnly); | 154 | DataStore(const QString &storageRoot, const QString &name, AccessMode mode = ReadOnly); |
154 | ~Storage(); | 155 | ~DataStore(); |
155 | 156 | ||
156 | Transaction createTransaction(AccessMode mode = ReadWrite, const std::function<void(const Storage::Error &error)> &errorHandler = std::function<void(const Storage::Error &error)>()); | 157 | Transaction createTransaction(AccessMode mode = ReadWrite, const std::function<void(const DataStore::Error &error)> &errorHandler = std::function<void(const DataStore::Error &error)>()); |
157 | 158 | ||
158 | /** | 159 | /** |
159 | * Set the default error handler. | 160 | * Set the default error handler. |
160 | */ | 161 | */ |
161 | void setDefaultErrorHandler(const std::function<void(const Storage::Error &error)> &errorHandler); | 162 | void setDefaultErrorHandler(const std::function<void(const DataStore::Error &error)> &errorHandler); |
162 | std::function<void(const Storage::Error &error)> defaultErrorHandler() const; | 163 | std::function<void(const DataStore::Error &error)> defaultErrorHandler() const; |
163 | 164 | ||
164 | /** | 165 | /** |
165 | * A basic error handler that writes to std::cerr. | 166 | * A basic error handler that writes to std::cerr. |
166 | * | 167 | * |
167 | * Used if nothing else is configured. | 168 | * Used if nothing else is configured. |
168 | */ | 169 | */ |
169 | static std::function<void(const Storage::Error &error)> basicErrorHandler(); | 170 | static std::function<void(const DataStore::Error &error)> basicErrorHandler(); |
170 | 171 | ||
171 | qint64 diskUsage() const; | 172 | qint64 diskUsage() const; |
172 | void removeFromDisk() const; | 173 | void removeFromDisk() const; |
@@ -178,16 +179,16 @@ public: | |||
178 | */ | 179 | */ |
179 | static void clearEnv(); | 180 | static void clearEnv(); |
180 | 181 | ||
181 | static qint64 maxRevision(const Sink::Storage::Transaction &); | 182 | static qint64 maxRevision(const Transaction &); |
182 | static void setMaxRevision(Sink::Storage::Transaction &, qint64 revision); | 183 | static void setMaxRevision(Transaction &, qint64 revision); |
183 | 184 | ||
184 | static qint64 cleanedUpRevision(const Sink::Storage::Transaction &); | 185 | static qint64 cleanedUpRevision(const Transaction &); |
185 | static void setCleanedUpRevision(Sink::Storage::Transaction &, qint64 revision); | 186 | static void setCleanedUpRevision(Transaction &, qint64 revision); |
186 | 187 | ||
187 | static QByteArray getUidFromRevision(const Sink::Storage::Transaction &, qint64 revision); | 188 | static QByteArray getUidFromRevision(const Transaction &, qint64 revision); |
188 | static QByteArray getTypeFromRevision(const Sink::Storage::Transaction &, qint64 revision); | 189 | static QByteArray getTypeFromRevision(const Transaction &, qint64 revision); |
189 | static void recordRevision(Sink::Storage::Transaction &, qint64 revision, const QByteArray &uid, const QByteArray &type); | 190 | static void recordRevision(Transaction &, qint64 revision, const QByteArray &uid, const QByteArray &type); |
190 | static void removeRevision(Sink::Storage::Transaction &, qint64 revision); | 191 | static void removeRevision(Transaction &, qint64 revision); |
191 | 192 | ||
192 | bool exists() const; | 193 | bool exists() const; |
193 | 194 | ||
@@ -199,16 +200,17 @@ public: | |||
199 | static QByteArray uidFromKey(const QByteArray &key); | 200 | static QByteArray uidFromKey(const QByteArray &key); |
200 | static qint64 revisionFromKey(const QByteArray &key); | 201 | static qint64 revisionFromKey(const QByteArray &key); |
201 | 202 | ||
202 | static NamedDatabase mainDatabase(const Sink::Storage::Transaction &, const QByteArray &type); | 203 | static NamedDatabase mainDatabase(const Transaction &, const QByteArray &type); |
203 | 204 | ||
204 | static QByteArray generateUid(); | 205 | static QByteArray generateUid(); |
205 | 206 | ||
206 | private: | 207 | private: |
207 | std::function<void(const Storage::Error &error)> mErrorHandler; | 208 | std::function<void(const DataStore::Error &error)> mErrorHandler; |
208 | 209 | ||
209 | private: | 210 | private: |
210 | class Private; | 211 | class Private; |
211 | Private *const d; | 212 | Private *const d; |
212 | }; | 213 | }; |
213 | 214 | ||
215 | } | ||
214 | } // namespace Sink | 216 | } // namespace Sink |