summaryrefslogtreecommitdiffstats
path: root/synchronizer
diff options
context:
space:
mode:
Diffstat (limited to 'synchronizer')
-rw-r--r--synchronizer/listener.cpp38
-rw-r--r--synchronizer/listener.h4
2 files changed, 16 insertions, 26 deletions
diff --git a/synchronizer/listener.cpp b/synchronizer/listener.cpp
index 2e1e918..7481537 100644
--- a/synchronizer/listener.cpp
+++ b/synchronizer/listener.cpp
@@ -35,7 +35,7 @@
35#include <QLocalSocket> 35#include <QLocalSocket>
36#include <QTimer> 36#include <QTimer>
37 37
38Listener::Listener(const QString &resourceName, QObject *parent) 38Listener::Listener(const QByteArray &resourceName, QObject *parent)
39 : QObject(parent), 39 : QObject(parent),
40 m_server(new QLocalServer(this)), 40 m_server(new QLocalServer(this)),
41 m_resourceName(resourceName), 41 m_resourceName(resourceName),
@@ -48,11 +48,11 @@ Listener::Listener(const QString &resourceName, QObject *parent)
48 this, &Listener::refreshRevision); 48 this, &Listener::refreshRevision);
49 connect(m_server, &QLocalServer::newConnection, 49 connect(m_server, &QLocalServer::newConnection,
50 this, &Listener::acceptConnection); 50 this, &Listener::acceptConnection);
51 Log() << QString("Trying to open %1").arg(resourceName); 51 Log() << "Trying to open " << m_resourceName;
52 if (!m_server->listen(resourceName)) { 52 if (!m_server->listen(QString::fromLatin1(resourceName))) {
53 // FIXME: multiple starts need to be handled here 53 // FIXME: multiple starts need to be handled here
54 m_server->removeServer(resourceName); 54 m_server->removeServer(resourceName);
55 if (!m_server->listen(resourceName)) { 55 if (!m_server->listen(QString::fromLatin1(resourceName))) {
56 Warning() << "Utter failure to start server"; 56 Warning() << "Utter failure to start server";
57 exit(-1); 57 exit(-1);
58 } 58 }
@@ -212,26 +212,16 @@ void Listener::processCommand(int commandId, uint messageId, Client &client, uin
212 Warning() << "No resource loaded"; 212 Warning() << "No resource loaded";
213 break; 213 break;
214 } 214 }
215 //TODO a more elegant composition of jobs should be possible 215 auto job = Async::null<void>();
216 if (buffer->sourceSync()) { 216 if (buffer->sourceSync()) {
217 bool localSync = buffer->localSync(); 217 job = m_resource->synchronizeWithSource(m_pipeline);
218 m_resource->synchronizeWithSource(m_pipeline).then<void>([callback, localSync, this](Async::Future<void> &f){
219 if (localSync) {
220 m_resource->processAllMessages().then<void>([callback](Async::Future<void> &f){
221 callback();
222 f.setFinished();
223 }).exec();
224 } else {
225 callback();
226 f.setFinished();
227 }
228 }).exec();
229 } else if (buffer->localSync()) {
230 m_resource->processAllMessages().then<void>([callback](Async::Future<void> &f){
231 callback();
232 f.setFinished();
233 }).exec();
234 } 218 }
219 if (buffer->localSync()) {
220 job = job.then<void>(m_resource->processAllMessages());
221 }
222 job.then<void>([callback]() {
223 callback();
224 }).exec();
235 return; 225 return;
236 } else { 226 } else {
237 Warning() << "received invalid command"; 227 Warning() << "received invalid command";
@@ -375,10 +365,10 @@ void Listener::loadResource()
375 Log() << QString("Resource factory: %1").arg((qlonglong)resourceFactory); 365 Log() << QString("Resource factory: %1").arg((qlonglong)resourceFactory);
376 Log() << QString("\tResource: %1").arg((qlonglong)m_resource); 366 Log() << QString("\tResource: %1").arg((qlonglong)m_resource);
377 //TODO: this doesn't really list all the facades .. fix 367 //TODO: this doesn't really list all the facades .. fix
378 Log() << QString("\tFacades: %1").arg(Akonadi2::FacadeFactory::instance().getFacade<Akonadi2::Domain::Event>(m_resourceName)->type()); 368 Log() << "\tFacades: " << Akonadi2::FacadeFactory::instance().getFacade<Akonadi2::ApplicationDomain::Event>(m_resourceName)->type();
379 m_resource->configurePipeline(m_pipeline); 369 m_resource->configurePipeline(m_pipeline);
380 } else { 370 } else {
381 Error() << QString("Failed to load resource %1").arg(m_resourceName); 371 Error() << "Failed to load resource " << m_resourceName;
382 } 372 }
383 //TODO: on failure ... what? 373 //TODO: on failure ... what?
384 //Enter broken state? 374 //Enter broken state?
diff --git a/synchronizer/listener.h b/synchronizer/listener.h
index 8dad3a4..d2ef0fc 100644
--- a/synchronizer/listener.h
+++ b/synchronizer/listener.h
@@ -58,7 +58,7 @@ class Listener : public QObject
58 Q_OBJECT 58 Q_OBJECT
59 59
60public: 60public:
61 Listener(const QString &resourceName, QObject *parent = 0); 61 Listener(const QByteArray &resourceName, QObject *parent = 0);
62 ~Listener(); 62 ~Listener();
63 63
64Q_SIGNALS: 64Q_SIGNALS:
@@ -87,7 +87,7 @@ private:
87 QLocalServer *m_server; 87 QLocalServer *m_server;
88 QVector<Client> m_connections; 88 QVector<Client> m_connections;
89 flatbuffers::FlatBufferBuilder m_fbb; 89 flatbuffers::FlatBufferBuilder m_fbb;
90 const QString m_resourceName; 90 const QByteArray m_resourceName;
91 Akonadi2::Resource *m_resource; 91 Akonadi2::Resource *m_resource;
92 Akonadi2::Pipeline *m_pipeline; 92 Akonadi2::Pipeline *m_pipeline;
93 QTimer *m_clientBufferProcessesTimer; 93 QTimer *m_clientBufferProcessesTimer;