From 2d8f8861eeb1c7b5888a65ab07d51b0419feeb3e Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sun, 5 Jun 2016 21:32:21 +0200 Subject: A central place to generate uuid's --- common/domain/applicationdomaintype.h | 5 +++-- common/pipeline.cpp | 2 +- common/remoteidmap.cpp | 2 +- common/storage.h | 2 ++ common/storage_common.cpp | 6 ++++++ examples/mailtransportresource/facade.cpp | 2 +- tests/databasepopulationandfacadequerybenchmark.cpp | 2 +- 7 files changed, 15 insertions(+), 6 deletions(-) diff --git a/common/domain/applicationdomaintype.h b/common/domain/applicationdomaintype.h index c022cb4..a41882d 100644 --- a/common/domain/applicationdomaintype.h +++ b/common/domain/applicationdomaintype.h @@ -27,6 +27,7 @@ #include #include #include "bufferadaptor.h" +#include "storage.h" //for generateUid() #define SINK_ENTITY(TYPE) \ typedef QSharedPointer Ptr; \ @@ -105,7 +106,7 @@ public: static DomainType createEntity() { DomainType object; - object.mIdentifier = QUuid::createUuid().toByteArray(); + object.mIdentifier = Sink::Storage::generateUid(); return object; } @@ -113,7 +114,7 @@ public: static DomainType createEntity(const QByteArray &resourceInstanceIdentifier) { DomainType object(resourceInstanceIdentifier); - object.mIdentifier = QUuid::createUuid().toByteArray(); + object.mIdentifier = Sink::Storage::generateUid(); return object; } diff --git a/common/pipeline.cpp b/common/pipeline.cpp index 100f158..049d228 100644 --- a/common/pipeline.cpp +++ b/common/pipeline.cpp @@ -178,7 +178,7 @@ KAsync::Job Pipeline::newEntity(void const *command, size_t size) } if (key.isEmpty()) { - key = QUuid::createUuid().toString().toUtf8(); + key = Sink::Storage::generateUid(); } Q_ASSERT(!key.isEmpty()); const qint64 newRevision = Storage::maxRevision(d->transaction) + 1; diff --git a/common/remoteidmap.cpp b/common/remoteidmap.cpp index f72369d..bbcd641 100644 --- a/common/remoteidmap.cpp +++ b/common/remoteidmap.cpp @@ -56,7 +56,7 @@ QByteArray RemoteIdMap::resolveRemoteId(const QByteArray &bufferType, const QByt Index index("rid.mapping." + bufferType, mTransaction); QByteArray sinkId = index.lookup(remoteId); if (sinkId.isEmpty()) { - sinkId = QUuid::createUuid().toString().toUtf8(); + sinkId = Sink::Storage::generateUid(); index.add(remoteId, sinkId); Index("localid.mapping." + bufferType, mTransaction).add(sinkId, remoteId); } diff --git a/common/storage.h b/common/storage.h index a04969b..e7b4a3e 100644 --- a/common/storage.h +++ b/common/storage.h @@ -220,6 +220,8 @@ public: static NamedDatabase mainDatabase(const Sink::Storage::Transaction &, const QByteArray &type); + static QByteArray generateUid(); + private: std::function mErrorHandler; diff --git a/common/storage_common.cpp b/common/storage_common.cpp index 8227a98..9648ea6 100644 --- a/common/storage_common.cpp +++ b/common/storage_common.cpp @@ -22,6 +22,7 @@ #include "storage.h" #include "log.h" +#include namespace Sink { @@ -168,6 +169,11 @@ qint64 Storage::revisionFromKey(const QByteArray &key) return key.mid(39).toLongLong(); } +QByteArray Storage::generateUid() +{ + return QUuid::createUuid().toByteArray(); +} + Storage::NamedDatabase Storage::mainDatabase(const Sink::Storage::Transaction &t, const QByteArray &type) { return t.openDatabase(type + ".main"); diff --git a/examples/mailtransportresource/facade.cpp b/examples/mailtransportresource/facade.cpp index b90df16..cd0dd62 100644 --- a/examples/mailtransportresource/facade.cpp +++ b/examples/mailtransportresource/facade.cpp @@ -110,7 +110,7 @@ KAsync::Job MailtransportFacade::create(const Sink::ApplicationDomain::Mai return KAsync::start([mail, this]() { auto config = ResourceConfig::getConfiguration(mIdentifier); - auto identifier = QUuid::createUuid().toByteArray(); + auto identifier = Sink::Storage::generateUid(); Trace() << "Sending new message: " << identifier; Trace() << config.value("server").toByteArray() << config.value("username").toByteArray() << config.value("cacert").toByteArray(); diff --git a/tests/databasepopulationandfacadequerybenchmark.cpp b/tests/databasepopulationandfacadequerybenchmark.cpp index 4e886af..5efe292 100644 --- a/tests/databasepopulationandfacadequerybenchmark.cpp +++ b/tests/databasepopulationandfacadequerybenchmark.cpp @@ -58,7 +58,7 @@ class DatabasePopulationAndFacadeQueryBenchmark : public QObject flatbuffers::FlatBufferBuilder fbb; domainTypeAdaptorFactory->createBuffer(*domainObject, fbb); const auto buffer = QByteArray::fromRawData(reinterpret_cast(fbb.GetBufferPointer()), fbb.GetSize()); - const auto key = QUuid::createUuid().toString().toLatin1(); + const auto key = Sink::Storage::generateUid(); db.write(key, buffer); bufferSizeTotal += buffer.size(); keysSizeTotal += key.size(); -- cgit v1.2.3