From kde-commits Thu Sep 13 16:14:15 2018 From: Christian Mollekopf Date: Thu, 13 Sep 2018 16:14:15 +0000 To: kde-commits Subject: [sink/develop] common: Prepared aborting of synchronization commands Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=153685526829217 Git commit 08ec317e913f2679bf10329cd1a7423964266b46 by Christian Mollekopf. Committed on 13/09/2018 at 16:14. Pushed by cmollekopf into branch 'develop'. Prepared aborting of synchronization commands M +3 -0 common/commandprocessor.cpp M +2 -0 common/commands.cpp M +1 -0 common/commands.h M +1 -0 common/listener.cpp M +14 -0 common/store.cpp M +5 -0 common/store.h M +6 -0 common/synchronizer.cpp M +3 -0 common/synchronizer.h https://commits.kde.org/sink/08ec317e913f2679bf10329cd1a7423964266b46 diff --git a/common/commandprocessor.cpp b/common/commandprocessor.cpp index 8b6e685..c57ded8 100644 --- a/common/commandprocessor.cpp +++ b/common/commandprocessor.cpp @@ -79,6 +79,9 @@ void CommandProcessor::processCommand(int commandId, cons= t QByteArray &data) case Commands::SynchronizeCommand: processSynchronizeCommand(data); break; + case Commands::AbortSynchronizationCommand: + mSynchronizer->abort(); + break; // case Commands::RevisionReplayedCommand: // processRevisionReplayedCommand(data); // break; diff --git a/common/commands.cpp b/common/commands.cpp index 0ec2c7b..18508da 100644 --- a/common/commands.cpp +++ b/common/commands.cpp @@ -67,6 +67,8 @@ QByteArray name(int commandId) return "Secret"; case UpgradeCommand: return "Upgrade"; + case AbortSynchronizationCommand: + return "AbortSynchronization"; case CustomCommand: return "Custom"; }; diff --git a/common/commands.h b/common/commands.h index 9ca92a3..2eb5ec5 100644 --- a/common/commands.h +++ b/common/commands.h @@ -50,6 +50,7 @@ enum CommandIds FlushCommand, SecretCommand, UpgradeCommand, + AbortSynchronizationCommand, CustomCommand =3D 0xffff }; = diff --git a/common/listener.cpp b/common/listener.cpp index ffc25c8..7b8fb8a 100644 --- a/common/listener.cpp +++ b/common/listener.cpp @@ -268,6 +268,7 @@ void Listener::processCommand(int commandId, uint messa= geId, const QByteArray &c case Sink::Commands::ModifyEntityCommand: case Sink::Commands::CreateEntityCommand: case Sink::Commands::FlushCommand: + case Sink::Commands::AbortSynchronizationCommand: SinkTrace() << "Command id " << messageId << " of type \"" <<= Sink::Commands::name(commandId) << "\" from " << client.name; loadResource().processCommand(commandId, commandBuffer); break; diff --git a/common/store.cpp b/common/store.cpp index b68cb68..38d8a7a 100644 --- a/common/store.cpp +++ b/common/store.cpp @@ -420,6 +420,20 @@ KAsync::Job Store::synchronize(const Sink::SyncS= cope &scope) }); } = +KAsync::Job Store::abortSynchronization(const QByteArray &identifier) +{ + auto resourceAccess =3D ResourceAccessFactory::instance().getAccess(id= entifier, ResourceConfig::getResourceType(identifier)); + return resourceAccess->sendCommand(Sink::Commands::AbortSynchronizatio= nCommand) + .addToContext(resourceAccess) + .then([=3D](const KAsync::Error &error) { + if (error) { + SinkWarning() << "Error aborting synchronization."; + return KAsync::error(error); + } + return KAsync::null(); + }); +} + template KAsync::Job Store::fetchOne(const Sink::Query &query) { diff --git a/common/store.h b/common/store.h index fb9c3fe..f200132 100644 --- a/common/store.h +++ b/common/store.h @@ -113,6 +113,11 @@ KAsync::Job SINK_EXPORT copy(const DomainType &d= omainObject, const QByteAr KAsync::Job SINK_EXPORT synchronize(const Sink::Query &query); KAsync::Job SINK_EXPORT synchronize(const Sink::SyncScope &query); = +/** + * Abort all running synchronization commands. + */ +KAsync::Job SINK_EXPORT abortSynchronization(const QByteArray &resou= rceIdentifier); + /** * Removes all resource data from disk. * diff --git a/common/synchronizer.cpp b/common/synchronizer.cpp index 7ae22d0..7f382ed 100644 --- a/common/synchronizer.cpp +++ b/common/synchronizer.cpp @@ -332,6 +332,12 @@ void Synchronizer::synchronize(const Sink::QueryBase &= query) processSyncQueue().exec(); } = +void Synchronizer::abort() +{ + SinkTraceCtx(mLogCtx) << "Aborting all running synchronization request= s"; + mSyncRequestQueue.clear(); +} + void Synchronizer::flush(int commandId, const QByteArray &flushId) { Q_ASSERT(!flushId.isEmpty()); diff --git a/common/synchronizer.h b/common/synchronizer.h index d1420e6..7b5c141 100644 --- a/common/synchronizer.h +++ b/common/synchronizer.h @@ -62,6 +62,9 @@ public: = void setSecret(const QString &s); = + //Abort all running synchronization requests + void abort(); + signals: void notify(Notification); =20