aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/basetypes
diff options
context:
space:
mode:
authorGravatar Luca <luca@aroundmeapp.com>2014-03-10 14:35:16 +0100
committerGravatar Luca <luca@aroundmeapp.com>2014-03-10 14:35:16 +0100
commitd997af05ff2b042fcb418dc8dfc1ed73b917c7a3 (patch)
tree314b98f325bd3e6a6dbd3ead397e601926fff850 /src/core/basetypes
parent3ccaad6f0219ca7da49306eed9661575b61dc120 (diff)
Cancel all operations
Diffstat (limited to 'src/core/basetypes')
-rw-r--r--src/core/basetypes/MCOperationQueue.cc13
-rw-r--r--src/core/basetypes/MCOperationQueue.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/src/core/basetypes/MCOperationQueue.cc b/src/core/basetypes/MCOperationQueue.cc
index 73b62f19..2e1f03b1 100644
--- a/src/core/basetypes/MCOperationQueue.cc
+++ b/src/core/basetypes/MCOperationQueue.cc
@@ -49,6 +49,19 @@ void OperationQueue::addOperation(Operation * op)
startThread();
}
+void OperationQueue::cancelAllOperations()
+{
+ pthread_mutex_lock(&mLock);
+ for (int i=0 ; i<mOperations->count(); i++)
+ {
+ Operation * op = (Operation *) mOperations->objectAtIndex(i);
+ if (op!=NULL) {
+ op->cancel();
+ }
+ }
+ pthread_mutex_unlock(&mLock);
+}
+
void OperationQueue::runOperationsOnThread(OperationQueue * queue)
{
queue->runOperations();
diff --git a/src/core/basetypes/MCOperationQueue.h b/src/core/basetypes/MCOperationQueue.h
index 202dec40..b5f29143 100644
--- a/src/core/basetypes/MCOperationQueue.h
+++ b/src/core/basetypes/MCOperationQueue.h
@@ -21,6 +21,7 @@ namespace mailcore {
virtual ~OperationQueue();
virtual void addOperation(Operation * op);
+ virtual void cancelAllOperations();
virtual unsigned int count();