From 9b2257d680a5e4fa2fda8cf3302f25054a06710e Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sun, 28 Dec 2014 14:44:50 +0100 Subject: Buffers wrapped into entity buffer, async command progress tracking. --- common/entitybuffer.cpp | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 common/entitybuffer.cpp (limited to 'common/entitybuffer.cpp') diff --git a/common/entitybuffer.cpp b/common/entitybuffer.cpp new file mode 100644 index 0000000..a78e91d --- /dev/null +++ b/common/entitybuffer.cpp @@ -0,0 +1,53 @@ +#include "entitybuffer.h" + +#include "entity_generated.h" +#include "metadata_generated.h" +#include + +using namespace Akonadi2; + +EntityBuffer::EntityBuffer(void *dataValue, int dataSize) + : mEntity(nullptr) +{ + flatbuffers::Verifier verifyer(reinterpret_cast(dataValue), dataSize); + // Q_ASSERT(Akonadi2::VerifyEntity(verifyer)); + if (!Akonadi2::VerifyEntityBuffer(verifyer)) { + qWarning() << "invalid buffer"; + } else { + mEntity = Akonadi2::GetEntity(dataValue); + } +} + +const flatbuffers::Vector* EntityBuffer::resourceBuffer() +{ + if (!mEntity) { + qDebug() << "no buffer"; + return nullptr; + } + return mEntity->resource(); +} + +const flatbuffers::Vector* EntityBuffer::metadataBuffer() +{ + if (!mEntity) { + return nullptr; + } + return mEntity->metadata(); +} + +const flatbuffers::Vector* EntityBuffer::localBuffer() +{ + if (!mEntity) { + return nullptr; + } + return mEntity->local(); +} + +void EntityBuffer::extractResourceBuffer(void *dataValue, int dataSize, const std::function *)> &handler) +{ + Akonadi2::EntityBuffer buffer(dataValue, dataSize); + if (auto resourceData = buffer.resourceBuffer()) { + handler(resourceData); + } +} + -- cgit v1.2.3