#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); } }