From 47567ba91907c2fe35c73a7d28915aee497e39fd Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 8 Sep 2015 23:03:29 +0200 Subject: DummyStore that is not overly complicated by using flatbuffers. --- examples/dummyresource/dummystore.cpp | 63 ++++++++++-------------------- examples/dummyresource/dummystore.h | 5 ++- examples/dummyresource/resourcefactory.cpp | 22 +++++------ examples/dummyresource/resourcefactory.h | 4 +- 4 files changed, 34 insertions(+), 60 deletions(-) (limited to 'examples') 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 @@ #include -#include "dummycalendar_generated.h" -#include "mail_generated.h" - -static std::string createEvent(int i) +static QMap createEvent(int i) { + QMap event; + event.insert("summary", QString("summary%1").arg(i)); static const size_t attachmentSize = 1024*2; // 2KB - static uint8_t rawData[attachmentSize]; - static flatbuffers::FlatBufferBuilder fbb; - fbb.Clear(); - { - uint8_t *rawDataPtr = nullptr; - auto summary = fbb.CreateString("summary" + std::to_string(i)); - auto data = fbb.CreateUninitializedVector(attachmentSize, &rawDataPtr); - DummyCalendar::DummyEventBuilder eventBuilder(fbb); - eventBuilder.add_summary(summary); - eventBuilder.add_attachment(data); - auto eventLocation = eventBuilder.Finish(); - DummyCalendar::FinishDummyEventBuffer(fbb, eventLocation); - memcpy((void*)rawDataPtr, rawData, attachmentSize); - } - - return std::string(reinterpret_cast(fbb.GetBufferPointer()), fbb.GetSize()); + event.insert("attachment", QByteArray(attachmentSize, 'c')); + return event; } -static std::string createMail(int i) +static QMap createMail(int i) { - static flatbuffers::FlatBufferBuilder fbb; - fbb.Clear(); - { - auto subject = fbb.CreateString("summary" + std::to_string(i)); - Akonadi2::ApplicationDomain::Buffer::MailBuilder mailBuilder(fbb); - mailBuilder.add_subject(subject); - Akonadi2::ApplicationDomain::Buffer::FinishMailBuffer(fbb, mailBuilder.Finish()); - } - - return std::string(reinterpret_cast(fbb.GetBufferPointer()), fbb.GetSize()); + QMap mail; + mail.insert("subject", QString("subject%1").arg(i)); + return mail; } -QMap populate() +QMap > populateEvents() { - QMap content; + QMap> content; for (int i = 0; i < 2; i++) { - auto event = createEvent(i); - content.insert(QString("key%1").arg(i), QString::fromStdString(event)); + content.insert(QString("key%1").arg(i), createEvent(i)); } return content; } -QMap populateMails() +QMap > populateMails() { - QMap content; + QMap> content; for (int i = 0; i < 2; i++) { - content.insert(QString("key%1").arg(i), QString::fromStdString(createMail(i))); + content.insert(QString("key%1").arg(i), createMail(i)); } return content; } -static QMap s_dataSource = populate(); -static QMap s_mailSource = populateMails(); +static QMap > s_eventSource = populateEvents(); +static QMap > s_mailSource = populateMails(); -QMap DummyStore::events() const +QMap > DummyStore::events() const { - return s_dataSource; + return s_eventSource; } -QMap DummyStore::mails() const +QMap > DummyStore::mails() const { return s_mailSource; } 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 @@ */ #pragma once #include +#include class DummyStore { @@ -29,6 +30,6 @@ public: return instance; } - QMap events() const; - QMap mails() const; + QMap > events() const; + QMap > mails() const; }; 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 } } -void DummyResource::createEvent(const QByteArray &ridBuffer, const QByteArray &data, flatbuffers::FlatBufferBuilder &entityFbb) +void DummyResource::createEvent(const QByteArray &ridBuffer, const QMap &data, flatbuffers::FlatBufferBuilder &entityFbb) { - auto eventBuffer = DummyCalendar::GetDummyEvent(data.data()); - //Map the source format to the buffer format (which happens to be an exact copy here) - auto summary = m_fbb.CreateString(eventBuffer->summary()->c_str()); + auto summary = m_fbb.CreateString(data.value("summary").toString().toStdString()); auto rid = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size())); auto description = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size())); static uint8_t rawData[100]; @@ -102,16 +100,14 @@ void DummyResource::createEvent(const QByteArray &ridBuffer, const QByteArray &d Akonadi2::EntityBuffer::assembleEntityBuffer(entityFbb, 0, 0, m_fbb.GetBufferPointer(), m_fbb.GetSize(), 0, 0); } -void DummyResource::createMail(const QByteArray &ridBuffer, const QByteArray &data, flatbuffers::FlatBufferBuilder &entityFbb) +void DummyResource::createMail(const QByteArray &ridBuffer, const QMap &data, flatbuffers::FlatBufferBuilder &entityFbb) { - auto mailBuffer = Akonadi2::ApplicationDomain::Buffer::GetMail(data.data()); - //Map the source format to the buffer format (which happens to be an exact copy here) - auto subject = m_fbb.CreateString(mailBuffer->subject()->c_str()); + auto subject = m_fbb.CreateString(data.value("subject").toString().toStdString()); auto rid = m_fbb.CreateString(std::string(ridBuffer.constData(), ridBuffer.size())); - auto sender = m_fbb.CreateString(std::string("sender@example.org")); - auto senderName = m_fbb.CreateString(std::string("Sender Name")); - auto date = m_fbb.CreateString(std::string("2004")); + auto sender = m_fbb.CreateString(data.value("sender").toString().toStdString()); + auto senderName = m_fbb.CreateString(data.value("senderName").toString().toStdString()); + auto date = m_fbb.CreateString(data.value("date").toString().toStdString()); auto folder = m_fbb.CreateString(std::string("inbox")); auto builder = Akonadi2::ApplicationDomain::Buffer::MailBuilder(m_fbb); @@ -148,7 +144,7 @@ KAsync::Job DummyResource::synchronizeWithSource() m_fbb.Clear(); flatbuffers::FlatBufferBuilder entityFbb; - createEvent(it.key().toUtf8(), it.value().toUtf8(), entityFbb); + createEvent(it.key().toUtf8(), it.value(), entityFbb); flatbuffers::FlatBufferBuilder fbb; //This is the resource type and not the domain type @@ -179,7 +175,7 @@ KAsync::Job DummyResource::synchronizeWithSource() m_fbb.Clear(); flatbuffers::FlatBufferBuilder entityFbb; - createMail(it.key().toUtf8(), it.value().toUtf8(), entityFbb); + createMail(it.key().toUtf8(), it.value(), entityFbb); flatbuffers::Verifier verifyer(reinterpret_cast(entityFbb.GetBufferPointer()), entityFbb.GetSize()); 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: DummyResource(const QByteArray &instanceIdentifier, const QSharedPointer &pipeline = QSharedPointer()); KAsync::Job synchronizeWithSource() Q_DECL_OVERRIDE; private: - void createEvent(const QByteArray &rid, const QByteArray &data, flatbuffers::FlatBufferBuilder &entityFbb); - void createMail(const QByteArray &rid, const QByteArray &data, flatbuffers::FlatBufferBuilder &entityFbb); + void createEvent(const QByteArray &rid, const QMap &data, flatbuffers::FlatBufferBuilder &entityFbb); + void createMail(const QByteArray &rid, const QMap &data, flatbuffers::FlatBufferBuilder &entityFbb); }; class DummyResourceFactory : public Akonadi2::ResourceFactory -- cgit v1.2.3