summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/dummyresource/dummystore.cpp63
-rw-r--r--examples/dummyresource/dummystore.h5
-rw-r--r--examples/dummyresource/resourcefactory.cpp22
-rw-r--r--examples/dummyresource/resourcefactory.h4
4 files changed, 34 insertions, 60 deletions
diff --git a/examples/dummyresource/dummystore.cpp b/examples/dummyresource/dummystore.cpp
index 41b48ed..0356ec0 100644
--- a/examples/dummyresource/dummystore.cpp
+++ b/examples/dummyresource/dummystore.cpp
@@ -20,72 +20,49 @@
20 20
21#include <QString> 21#include <QString>
22 22
23#include "dummycalendar_generated.h" 23static QMap<QString, QVariant> createEvent(int i)
24#include "mail_generated.h"
25
26static std::string createEvent(int i)
27{ 24{
25 QMap<QString, QVariant> event;
26 event.insert("summary", QString("summary%1").arg(i));
28 static const size_t attachmentSize = 1024*2; // 2KB 27 static const size_t attachmentSize = 1024*2; // 2KB
29 static uint8_t rawData[attachmentSize]; 28 event.insert("attachment", QByteArray(attachmentSize, 'c'));
30 static flatbuffers::FlatBufferBuilder fbb; 29 return event;
31 fbb.Clear();
32 {
33 uint8_t *rawDataPtr = nullptr;
34 auto summary = fbb.CreateString("summary" + std::to_string(i));
35 auto data = fbb.CreateUninitializedVector<uint8_t>(attachmentSize, &rawDataPtr);
36 DummyCalendar::DummyEventBuilder eventBuilder(fbb);
37 eventBuilder.add_summary(summary);
38 eventBuilder.add_attachment(data);
39 auto eventLocation = eventBuilder.Finish();
40 DummyCalendar::FinishDummyEventBuffer(fbb, eventLocation);
41 memcpy((void*)rawDataPtr, rawData, attachmentSize);
42 }
43
44 return std::string(reinterpret_cast<const char *>(fbb.GetBufferPointer()), fbb.GetSize());
45} 30}
46 31
47static std::string createMail(int i) 32static QMap<QString, QVariant> createMail(int i)
48{ 33{
49 static flatbuffers::FlatBufferBuilder fbb; 34 QMap<QString, QVariant> mail;
50 fbb.Clear(); 35 mail.insert("subject", QString("subject%1").arg(i));
51 { 36 return mail;
52 auto subject = fbb.CreateString("summary" + std::to_string(i));
53 Akonadi2::ApplicationDomain::Buffer::MailBuilder mailBuilder(fbb);
54 mailBuilder.add_subject(subject);
55 Akonadi2::ApplicationDomain::Buffer::FinishMailBuffer(fbb, mailBuilder.Finish());
56 }
57
58 return std::string(reinterpret_cast<const char *>(fbb.GetBufferPointer()), fbb.GetSize());
59} 37}
60 38
61QMap<QString, QString> populate() 39QMap<QString, QMap<QString, QVariant> > populateEvents()
62{ 40{
63 QMap<QString, QString> content; 41 QMap<QString, QMap<QString, QVariant>> content;
64 for (int i = 0; i < 2; i++) { 42 for (int i = 0; i < 2; i++) {
65 auto event = createEvent(i); 43 content.insert(QString("key%1").arg(i), createEvent(i));
66 content.insert(QString("key%1").arg(i), QString::fromStdString(event));
67 } 44 }
68 return content; 45 return content;
69} 46}
70 47
71QMap<QString, QString> populateMails() 48QMap<QString, QMap<QString, QVariant> > populateMails()
72{ 49{
73 QMap<QString, QString> content; 50 QMap<QString, QMap<QString, QVariant>> content;
74 for (int i = 0; i < 2; i++) { 51 for (int i = 0; i < 2; i++) {
75 content.insert(QString("key%1").arg(i), QString::fromStdString(createMail(i))); 52 content.insert(QString("key%1").arg(i), createMail(i));
76 } 53 }
77 return content; 54 return content;
78} 55}
79 56
80static QMap<QString, QString> s_dataSource = populate(); 57static QMap<QString, QMap<QString, QVariant> > s_eventSource = populateEvents();
81static QMap<QString, QString> s_mailSource = populateMails(); 58static QMap<QString, QMap<QString, QVariant> > s_mailSource = populateMails();
82 59
83QMap<QString, QString> DummyStore::events() const 60QMap<QString, QMap<QString, QVariant> > DummyStore::events() const
84{ 61{
85 return s_dataSource; 62 return s_eventSource;
86} 63}
87 64
88QMap<QString, QString> DummyStore::mails() const 65QMap<QString, QMap<QString, QVariant> > DummyStore::mails() const
89{ 66{
90 return s_mailSource; 67 return s_mailSource;
91} 68}
diff --git a/examples/dummyresource/dummystore.h b/examples/dummyresource/dummystore.h
index ba1c0ae..4ecd5ea 100644
--- a/examples/dummyresource/dummystore.h
+++ b/examples/dummyresource/dummystore.h
@@ -18,6 +18,7 @@
18 */ 18 */
19#pragma once 19#pragma once
20#include <QMap> 20#include <QMap>
21#include <QVariant>
21 22
22class DummyStore 23class DummyStore
23{ 24{
@@ -29,6 +30,6 @@ public:
29 return instance; 30 return instance;
30 } 31 }
31 32
32 QMap<QString, QString> events() const; 33 QMap<QString, QMap<QString, QVariant> > events() const;
33 QMap<QString, QString> mails() const; 34 QMap<QString, QMap<QString, QVariant> > mails() const;
34}; 35};
diff --git a/examples/dummyresource/resourcefactory.cpp b/examples/dummyresource/resourcefactory.cpp
index 147cb22..9bb20e5 100644
--- a/examples/dummyresource/resourcefactory.cpp
+++ b/examples/dummyresource/resourcefactory.cpp
@@ -81,12 +81,10 @@ DummyResource::DummyResource(const QByteArray &instanceIdentifier, const QShared
81 } 81 }
82} 82}
83 83
84void DummyResource::createEvent(const QByteArray &ridBuffer, const QByteArray &data, flatbuffers::FlatBufferBuilder &entityFbb) 84void DummyResource::createEvent(const QByteArray &ridBuffer, const QMap<QString, QVariant> &data, flatbuffers::FlatBufferBuilder &entityFbb)
85{ 85{
86 auto eventBuffer = DummyCalendar::GetDummyEvent(data.data());
87
88 //Map the source format to the buffer format (which happens to be an exact copy here) 86 //Map the source format to the buffer format (which happens to be an exact copy here)
89 auto summary = m_fbb.CreateString(eventBuffer->summary()->c_str()); 87 auto summary = m_fbb.CreateString(data.value("summary").toString().toStdString());
90 auto rid = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size())); 88 auto rid = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size()));
91 auto description = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size())); 89 auto description = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size()));
92 static uint8_t rawData[100]; 90 static uint8_t rawData[100];
@@ -102,16 +100,14 @@ void DummyResource::createEvent(const QByteArray &ridBuffer, const QByteArray &d
102 Akonadi2::EntityBuffer::assembleEntityBuffer(entityFbb, 0, 0, m_fbb.GetBufferPointer(), m_fbb.GetSize(), 0, 0); 100 Akonadi2::EntityBuffer::assembleEntityBuffer(entityFbb, 0, 0, m_fbb.GetBufferPointer(), m_fbb.GetSize(), 0, 0);
103} 101}
104 102
105void DummyResource::createMail(const QByteArray &ridBuffer, const QByteArray &data, flatbuffers::FlatBufferBuilder &entityFbb) 103void DummyResource::createMail(const QByteArray &ridBuffer, const QMap<QString, QVariant> &data, flatbuffers::FlatBufferBuilder &entityFbb)
106{ 104{
107 auto mailBuffer = Akonadi2::ApplicationDomain::Buffer::GetMail(data.data());
108
109 //Map the source format to the buffer format (which happens to be an exact copy here) 105 //Map the source format to the buffer format (which happens to be an exact copy here)
110 auto subject = m_fbb.CreateString(mailBuffer->subject()->c_str()); 106 auto subject = m_fbb.CreateString(data.value("subject").toString().toStdString());
111 auto rid = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size())); 107 auto rid = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size()));
112 auto sender = m_fbb.CreateString(std::string("sender@example.org")); 108 auto sender = m_fbb.CreateString(data.value("sender").toString().toStdString());
113 auto senderName = m_fbb.CreateString(std::string("Sender Name")); 109 auto senderName = m_fbb.CreateString(data.value("senderName").toString().toStdString());
114 auto date = m_fbb.CreateString(std::string("2004")); 110 auto date = m_fbb.CreateString(data.value("date").toString().toStdString());
115 auto folder = m_fbb.CreateString(std::string("inbox")); 111 auto folder = m_fbb.CreateString(std::string("inbox"));
116 112
117 auto builder = Akonadi2::ApplicationDomain::Buffer::MailBuilder(m_fbb); 113 auto builder = Akonadi2::ApplicationDomain::Buffer::MailBuilder(m_fbb);
@@ -148,7 +144,7 @@ KAsync::Job<void> DummyResource::synchronizeWithSource()
148 m_fbb.Clear(); 144 m_fbb.Clear();
149 145
150 flatbuffers::FlatBufferBuilder entityFbb; 146 flatbuffers::FlatBufferBuilder entityFbb;
151 createEvent(it.key().toUtf8(), it.value().toUtf8(), entityFbb); 147 createEvent(it.key().toUtf8(), it.value(), entityFbb);
152 148
153 flatbuffers::FlatBufferBuilder fbb; 149 flatbuffers::FlatBufferBuilder fbb;
154 //This is the resource type and not the domain type 150 //This is the resource type and not the domain type
@@ -179,7 +175,7 @@ KAsync::Job<void> DummyResource::synchronizeWithSource()
179 m_fbb.Clear(); 175 m_fbb.Clear();
180 176
181 flatbuffers::FlatBufferBuilder entityFbb; 177 flatbuffers::FlatBufferBuilder entityFbb;
182 createMail(it.key().toUtf8(), it.value().toUtf8(), entityFbb); 178 createMail(it.key().toUtf8(), it.value(), entityFbb);
183 179
184 flatbuffers::Verifier verifyer(reinterpret_cast<const uint8_t *>(entityFbb.GetBufferPointer()), entityFbb.GetSize()); 180 flatbuffers::Verifier verifyer(reinterpret_cast<const uint8_t *>(entityFbb.GetBufferPointer()), entityFbb.GetSize());
185 if (!Akonadi2::ApplicationDomain::Buffer::VerifyMailBuffer(verifyer)) { 181 if (!Akonadi2::ApplicationDomain::Buffer::VerifyMailBuffer(verifyer)) {
diff --git a/examples/dummyresource/resourcefactory.h b/examples/dummyresource/resourcefactory.h
index cf0f624..55d84d3 100644
--- a/examples/dummyresource/resourcefactory.h
+++ b/examples/dummyresource/resourcefactory.h
@@ -35,8 +35,8 @@ public:
35 DummyResource(const QByteArray &instanceIdentifier, const QSharedPointer<Akonadi2::Pipeline> &pipeline = QSharedPointer<Akonadi2::Pipeline>()); 35 DummyResource(const QByteArray &instanceIdentifier, const QSharedPointer<Akonadi2::Pipeline> &pipeline = QSharedPointer<Akonadi2::Pipeline>());
36 KAsync::Job<void> synchronizeWithSource() Q_DECL_OVERRIDE; 36 KAsync::Job<void> synchronizeWithSource() Q_DECL_OVERRIDE;
37private: 37private:
38 void createEvent(const QByteArray &rid, const QByteArray &data, flatbuffers::FlatBufferBuilder &entityFbb); 38 void createEvent(const QByteArray &rid, const QMap<QString, QVariant> &data, flatbuffers::FlatBufferBuilder &entityFbb);
39 void createMail(const QByteArray &rid, const QByteArray &data, flatbuffers::FlatBufferBuilder &entityFbb); 39 void createMail(const QByteArray &rid, const QMap<QString, QVariant> &data, flatbuffers::FlatBufferBuilder &entityFbb);
40}; 40};
41 41
42class DummyResourceFactory : public Akonadi2::ResourceFactory 42class DummyResourceFactory : public Akonadi2::ResourceFactory