[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [sink/develop] common: Prepared aborting of synchronization commands
From:       Christian Mollekopf <null () kde ! org>
Date:       2018-09-13 16:14:15
Message-ID: E1g0UFz-0002eN-PF () code ! kde ! org
[Download RAW message or body]

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, const \
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 = 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 messageId, \
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<void> Store::synchronize(const Sink::SyncScope \
&scope)  });
 }
 
+KAsync::Job<void> Store::abortSynchronization(const QByteArray &identifier)
+{
+    auto resourceAccess = ResourceAccessFactory::instance().getAccess(identifier, \
ResourceConfig::getResourceType(identifier)); +    return \
resourceAccess->sendCommand(Sink::Commands::AbortSynchronizationCommand) +        \
.addToContext(resourceAccess) +        .then([=](const KAsync::Error &error) {
+            if (error) {
+                SinkWarning() << "Error aborting synchronization.";
+                return KAsync::error(error);
+            }
+            return KAsync::null();
+        });
+}
+
 template <class DomainType>
 KAsync::Job<DomainType> 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<void> SINK_EXPORT copy(const DomainType \
&domainObject, const QByteAr  KAsync::Job<void> SINK_EXPORT synchronize(const \
Sink::Query &query);  KAsync::Job<void> SINK_EXPORT synchronize(const Sink::SyncScope \
&query);  
+/**
+ * Abort all running synchronization commands.
+ */
+KAsync::Job<void> SINK_EXPORT abortSynchronization(const QByteArray \
&resourceIdentifier); +
 /**
  * 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 requests";
+    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);
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic