diff options
-rw-r--r-- | tests/hawd/dataset.cpp | 29 | ||||
-rw-r--r-- | tests/hawd/dataset.h | 3 |
2 files changed, 15 insertions, 17 deletions
diff --git a/tests/hawd/dataset.cpp b/tests/hawd/dataset.cpp index b068b66..96479e0 100644 --- a/tests/hawd/dataset.cpp +++ b/tests/hawd/dataset.cpp | |||
@@ -94,7 +94,7 @@ qint64 Dataset::Row::key() const | |||
94 | return m_key; | 94 | return m_key; |
95 | } | 95 | } |
96 | 96 | ||
97 | void Dataset::Row::fromBinary(QByteArray &data) | 97 | void Dataset::Row::fromBinary(QByteArray data) |
98 | { | 98 | { |
99 | QVariant value; | 99 | QVariant value; |
100 | QString key; | 100 | QString key; |
@@ -210,14 +210,14 @@ QString Dataset::Row::toString(const QStringList &cols, int standardCols, const | |||
210 | Dataset::Dataset(const QString &name, const State &state) | 210 | Dataset::Dataset(const QString &name, const State &state) |
211 | : m_definition(state.datasetDefinition(name)), | 211 | : m_definition(state.datasetDefinition(name)), |
212 | m_storage(state.resultsPath(), name, Akonadi2::Storage::ReadWrite), | 212 | m_storage(state.resultsPath(), name, Akonadi2::Storage::ReadWrite), |
213 | m_commitHash(state.commitHash()) | 213 | m_commitHash(state.commitHash()), |
214 | m_transaction(std::move(m_storage.createTransaction())) | ||
214 | { | 215 | { |
215 | m_storage.startTransaction(); | ||
216 | } | 216 | } |
217 | 217 | ||
218 | Dataset::~Dataset() | 218 | Dataset::~Dataset() |
219 | { | 219 | { |
220 | m_storage.commitTransaction(); | 220 | m_transaction.commit(); |
221 | } | 221 | } |
222 | 222 | ||
223 | bool Dataset::isValid() const | 223 | bool Dataset::isValid() const |
@@ -237,8 +237,7 @@ qint64 Dataset::insertRow(const Row &row) | |||
237 | } | 237 | } |
238 | 238 | ||
239 | qint64 key = row.key(); | 239 | qint64 key = row.key(); |
240 | QByteArray data = row.toBinary(); | 240 | m_transaction.write(QByteArray::fromRawData((const char *)&key, sizeof(qint64)), row.toBinary()); |
241 | m_storage.write((const char *)&key, sizeof(qint64), data.constData(), data.size()); | ||
242 | return key; | 241 | return key; |
243 | } | 242 | } |
244 | 243 | ||
@@ -254,15 +253,14 @@ void Dataset::eachRow(const std::function<void(const Row &row)> &resultHandler) | |||
254 | } | 253 | } |
255 | 254 | ||
256 | Row row(*this); | 255 | Row row(*this); |
257 | m_storage.scan("", | 256 | m_transaction.scan("", |
258 | [&](void *key, int keySize, void *data, int dataSize) -> bool { | 257 | [&](const QByteArray &key, const QByteArray &value) -> bool { |
259 | if (keySize != sizeof(qint64)) { | 258 | if (key.size() != sizeof(qint64)) { |
260 | return true; | 259 | return true; |
261 | } | 260 | } |
262 | 261 | ||
263 | QByteArray array((const char*)data, dataSize); | 262 | row.fromBinary(value); |
264 | row.fromBinary(array); | 263 | row.m_key = *(qint64 *)key.data(); |
265 | row.m_key = *(qint64 *)key; | ||
266 | resultHandler(row); | 264 | resultHandler(row); |
267 | return true; | 265 | return true; |
268 | }, | 266 | }, |
@@ -278,10 +276,9 @@ Dataset::Row Dataset::row(qint64 key) | |||
278 | } | 276 | } |
279 | 277 | ||
280 | Row row(*this, key); | 278 | Row row(*this, key); |
281 | m_storage.scan(QByteArray::fromRawData((const char *)&key, sizeof(qint64)), | 279 | m_transaction.scan(QByteArray::fromRawData((const char *)&key, sizeof(qint64)), |
282 | [&row](void *keyPtr, int keyLength, void *valuePtr, int valueSize) -> bool { | 280 | [&row](const QByteArray &key, const QByteArray &value) -> bool { |
283 | QByteArray array((const char*)valuePtr, valueSize); | 281 | row.fromBinary(value); |
284 | row.fromBinary(array); | ||
285 | return true; | 282 | return true; |
286 | }, | 283 | }, |
287 | Akonadi2::Storage::basicErrorHandler() | 284 | Akonadi2::Storage::basicErrorHandler() |
diff --git a/tests/hawd/dataset.h b/tests/hawd/dataset.h index 9ef162c..b6aa863 100644 --- a/tests/hawd/dataset.h +++ b/tests/hawd/dataset.h | |||
@@ -57,7 +57,7 @@ public: | |||
57 | private: | 57 | private: |
58 | Row(); | 58 | Row(); |
59 | Row(const Dataset &dataset, qint64 key = 0); | 59 | Row(const Dataset &dataset, qint64 key = 0); |
60 | void fromBinary(QByteArray &binary); | 60 | void fromBinary(QByteArray binary); |
61 | 61 | ||
62 | qint64 m_key; | 62 | qint64 m_key; |
63 | QHash<QString, DataDefinition> m_columns; | 63 | QHash<QString, DataDefinition> m_columns; |
@@ -85,6 +85,7 @@ public: | |||
85 | private: | 85 | private: |
86 | DatasetDefinition m_definition; | 86 | DatasetDefinition m_definition; |
87 | Akonadi2::Storage m_storage; | 87 | Akonadi2::Storage m_storage; |
88 | Akonadi2::Storage::Transaction m_transaction; | ||
88 | QString m_commitHash; | 89 | QString m_commitHash; |
89 | }; | 90 | }; |
90 | 91 | ||