summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/entitybuffer.cpp14
-rw-r--r--common/entitybuffer.h2
-rw-r--r--common/pipeline.cpp32
3 files changed, 24 insertions, 24 deletions
diff --git a/common/entitybuffer.cpp b/common/entitybuffer.cpp
index a78e91d..b9c9d76 100644
--- a/common/entitybuffer.cpp
+++ b/common/entitybuffer.cpp
@@ -51,3 +51,17 @@ void EntityBuffer::extractResourceBuffer(void *dataValue, int dataSize, const st
51 } 51 }
52} 52}
53 53
54void EntityBuffer::assembleEntityBuffer(flatbuffers::FlatBufferBuilder &fbb, void *metadataData, size_t metadataSize, void *resourceData, size_t resourceSize, void *localData, size_t localSize)
55{
56 auto metadata = fbb.CreateVector<uint8_t>(static_cast<uint8_t*>(metadataData), metadataSize);
57 auto resource = fbb.CreateVector<uint8_t>(static_cast<uint8_t*>(resourceData), resourceSize);
58 auto local = fbb.CreateVector<uint8_t>(static_cast<uint8_t*>(localData), localSize);
59 auto builder = Akonadi2::EntityBuilder(fbb);
60 builder.add_metadata(metadata);
61 builder.add_resource(resource);
62 builder.add_local(local);
63
64 auto buffer = builder.Finish();
65 Akonadi2::FinishEntityBuffer(fbb, buffer);
66}
67
diff --git a/common/entitybuffer.h b/common/entitybuffer.h
index 2a7150e..c072777 100644
--- a/common/entitybuffer.h
+++ b/common/entitybuffer.h
@@ -14,6 +14,8 @@ public:
14 const flatbuffers::Vector<uint8_t> *localBuffer(); 14 const flatbuffers::Vector<uint8_t> *localBuffer();
15 15
16 static void extractResourceBuffer(void *dataValue, int dataSize, const std::function<void(const flatbuffers::Vector<uint8_t> *)> &handler); 16 static void extractResourceBuffer(void *dataValue, int dataSize, const std::function<void(const flatbuffers::Vector<uint8_t> *)> &handler);
17 static void assembleEntityBuffer(flatbuffers::FlatBufferBuilder &fbb, void *metadataData, size_t metadataSize, void *resourceData, size_t resourceSize, void *localData, size_t localSize);
18
17private: 19private:
18 const Entity *mEntity; 20 const Entity *mEntity;
19}; 21};
diff --git a/common/pipeline.cpp b/common/pipeline.cpp
index dc6d389..04954ac 100644
--- a/common/pipeline.cpp
+++ b/common/pipeline.cpp
@@ -26,6 +26,7 @@
26#include <QDebug> 26#include <QDebug>
27#include "entity_generated.h" 27#include "entity_generated.h"
28#include "metadata_generated.h" 28#include "metadata_generated.h"
29#include "entitybuffer.h"
29 30
30namespace Akonadi2 31namespace Akonadi2
31{ 32{
@@ -76,33 +77,16 @@ void Pipeline::newEntity(const QByteArray &key, void *resourceBufferData, size_t
76{ 77{
77 const qint64 newRevision = storage().maxRevision() + 1; 78 const qint64 newRevision = storage().maxRevision() + 1;
78 79
79
80 std::vector<uint8_t> metadataData;
81 //Add metadata buffer 80 //Add metadata buffer
82 { 81 flatbuffers::FlatBufferBuilder metadataFbb;
83 flatbuffers::FlatBufferBuilder metadataFbb; 82 auto metadataBuilder = Akonadi2::MetadataBuilder(metadataFbb);
84 auto metadataBuilder = Akonadi2::MetadataBuilder(metadataFbb); 83 metadataBuilder.add_revision(newRevision);
85 metadataBuilder.add_revision(newRevision); 84 auto metadataBuffer = metadataBuilder.Finish();
86 auto metadataBuffer = metadataBuilder.Finish(); 85 Akonadi2::FinishMetadataBuffer(metadataFbb, metadataBuffer);
87 Akonadi2::FinishMetadataBuffer(metadataFbb, metadataBuffer);
88 metadataData.resize(metadataFbb.GetSize());
89 std::copy_n(metadataFbb.GetBufferPointer(), metadataFbb.GetSize(), back_inserter(metadataData));
90 }
91
92 86
93 flatbuffers::FlatBufferBuilder fbb; 87 flatbuffers::FlatBufferBuilder fbb;
94 auto metadata = fbb.CreateVector<uint8_t>(metadataData.data(), metadataData.size()); 88 EntityBuffer::assembleEntityBuffer(fbb, metadataFbb.GetBufferPointer(), metadataFbb.GetSize(), resourceBufferData, size, 0, 0);
95 auto resource = fbb.CreateVector<uint8_t>(static_cast<uint8_t*>(resourceBufferData), size); 89
96 auto builder = Akonadi2::EntityBuilder(fbb);
97 builder.add_metadata(metadata);
98 builder.add_resource(resource);
99 //We don't have a local buffer yet
100 // builder.add_local();
101
102 auto buffer = builder.Finish();
103 Akonadi2::FinishEntityBuffer(fbb, buffer);
104
105 qDebug() << "writing new entity" << key;
106 storage().write(key.data(), key.size(), fbb.GetBufferPointer(), fbb.GetSize()); 90 storage().write(key.data(), key.size(), fbb.GetBufferPointer(), fbb.GetSize());
107 storage().setMaxRevision(newRevision); 91 storage().setMaxRevision(newRevision);
108 92