From a638278ede2d7af9a073da6ca11ba2efee2a934b Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 7 Jan 2015 01:01:42 +0100 Subject: Made the domain adaptor actually work. We can read stuff now. --- common/clientapi.h | 21 ++++++++++++++++++++- common/entitybuffer.cpp | 18 +++++++++--------- common/entitybuffer.h | 8 ++++---- 3 files changed, 33 insertions(+), 14 deletions(-) (limited to 'common') diff --git a/common/clientapi.h b/common/clientapi.h index ba0cb19..d2b1c9c 100644 --- a/common/clientapi.h +++ b/common/clientapi.h @@ -178,8 +178,27 @@ namespace Domain { */ class BufferAdaptor { public: - virtual QVariant getProperty(const QString &key) { return QVariant(); } + virtual QVariant getProperty(const QString &key) const { return QVariant(); } virtual void setProperty(const QString &key, const QVariant &value) {} + virtual QStringList availableProperties() const { return QStringList(); } +}; + +class MemoryBufferAdaptor : public BufferAdaptor { +public: + MemoryBufferAdaptor(const BufferAdaptor &buffer) + : BufferAdaptor() + { + for(const auto &property : buffer.availableProperties()) { + mValues.insert(property, buffer.getProperty(property)); + } + } + + virtual QVariant getProperty(const QString &key) const { return mValues.value(key); } + virtual void setProperty(const QString &key, const QVariant &value) { mValues.insert(key, value); } + virtual QStringList availableProperties() const { return mValues.keys(); } + +private: + QHash mValues; }; /** diff --git a/common/entitybuffer.cpp b/common/entitybuffer.cpp index c5d6bce..aa5847c 100644 --- a/common/entitybuffer.cpp +++ b/common/entitybuffer.cpp @@ -23,36 +23,36 @@ const Akonadi2::Entity &EntityBuffer::entity() return *mEntity; } -const flatbuffers::Vector* EntityBuffer::resourceBuffer() +const uint8_t* EntityBuffer::resourceBuffer() { if (!mEntity) { qDebug() << "no buffer"; return nullptr; } - return mEntity->resource(); + return mEntity->resource()->Data(); } -const flatbuffers::Vector* EntityBuffer::metadataBuffer() +const uint8_t* EntityBuffer::metadataBuffer() { if (!mEntity) { return nullptr; } - return mEntity->metadata(); + return mEntity->metadata()->Data(); } -const flatbuffers::Vector* EntityBuffer::localBuffer() +const uint8_t* EntityBuffer::localBuffer() { if (!mEntity) { return nullptr; } - return mEntity->local(); + return mEntity->local()->Data(); } -void EntityBuffer::extractResourceBuffer(void *dataValue, int dataSize, const std::function *)> &handler) +void EntityBuffer::extractResourceBuffer(void *dataValue, int dataSize, const std::function &handler) { Akonadi2::EntityBuffer buffer(dataValue, dataSize); - if (auto resourceData = buffer.resourceBuffer()) { - handler(resourceData); + if (auto resourceData = buffer.entity().resource()) { + handler(resourceData->Data(), resourceData->size()); } } diff --git a/common/entitybuffer.h b/common/entitybuffer.h index bd9360d..600b04d 100644 --- a/common/entitybuffer.h +++ b/common/entitybuffer.h @@ -9,12 +9,12 @@ class Entity; class EntityBuffer { public: EntityBuffer(void *dataValue, int size); - const flatbuffers::Vector *resourceBuffer(); - const flatbuffers::Vector *metadataBuffer(); - const flatbuffers::Vector *localBuffer(); + const uint8_t *resourceBuffer(); + const uint8_t *metadataBuffer(); + const uint8_t *localBuffer(); const Entity &entity(); - static void extractResourceBuffer(void *dataValue, int dataSize, const std::function *)> &handler); + static void extractResourceBuffer(void *dataValue, int dataSize, const std::function &handler); static void assembleEntityBuffer(flatbuffers::FlatBufferBuilder &fbb, void *metadataData, size_t metadataSize, void *resourceData, size_t resourceSize, void *localData, size_t localSize); private: -- cgit v1.2.3