From 342be3eaef91025928250a797fc489c7904366b2 Mon Sep 17 00:00:00 2001 From: CodaFi Date: Tue, 22 Oct 2013 19:41:54 -0600 Subject: Assume main, rather than current, queue for callbacks --- src/core/basetypes/MCOperation.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/basetypes/MCOperation.cc b/src/core/basetypes/MCOperation.cc index 5829d739..125f46b2 100644 --- a/src/core/basetypes/MCOperation.cc +++ b/src/core/basetypes/MCOperation.cc @@ -8,7 +8,7 @@ Operation::Operation() mCancelled = false; pthread_mutex_init(&mLock, NULL); #if __APPLE__ - mCallbackDispatchQueue = dispatch_get_current_queue(); + mCallbackDispatchQueue = dispatch_get_main_queue(); #else mCallbackDispatchQueue = NULL; #endif -- cgit v1.2.3 From aa26310060dc7db1bdaa9dbaceda1293ddd94346 Mon Sep 17 00:00:00 2001 From: CodaFi Date: Fri, 25 Oct 2013 16:51:59 -0600 Subject: Added ObjC-interface --- src/objc/utils/MCOOperation.mm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/objc/utils/MCOOperation.mm b/src/objc/utils/MCOOperation.mm index 37146b39..7502afae 100644 --- a/src/objc/utils/MCOOperation.mm +++ b/src/objc/utils/MCOOperation.mm @@ -81,6 +81,8 @@ public: return MCO_NATIVE_INSTANCE->isCancelled(); } +MCO_OBJC_SYNTHESIZE_SCALAR(dispatch_queue_t, dispatch_queue_t, setCallbackDispatchQueue, callbackDispatchQueue); + - (void) cancel { if (_started) { -- cgit v1.2.3 From c8f7c51fde01bf067ec18c3907508b923e61f200 Mon Sep 17 00:00:00 2001 From: CodaFi Date: Fri, 25 Oct 2013 16:52:06 -0600 Subject: Cleanup and documentation --- src/core/basetypes/MCOperation.cc | 28 +++++++++++++------------- src/core/basetypes/MCOperation.h | 42 +++++++++++++++++++-------------------- src/objc/utils/MCOOperation.h | 11 +++++++--- 3 files changed, 43 insertions(+), 38 deletions(-) diff --git a/src/core/basetypes/MCOperation.cc b/src/core/basetypes/MCOperation.cc index 125f46b2..0995340b 100644 --- a/src/core/basetypes/MCOperation.cc +++ b/src/core/basetypes/MCOperation.cc @@ -4,9 +4,9 @@ using namespace mailcore; Operation::Operation() { - mCallback = NULL; - mCancelled = false; - pthread_mutex_init(&mLock, NULL); + mCallback = NULL; + mCancelled = false; + pthread_mutex_init(&mLock, NULL); #if __APPLE__ mCallbackDispatchQueue = dispatch_get_main_queue(); #else @@ -16,33 +16,33 @@ Operation::Operation() Operation::~Operation() { - pthread_mutex_destroy(&mLock); + pthread_mutex_destroy(&mLock); } void Operation::setCallback(OperationCallback * callback) { - mCallback = callback; + mCallback = callback; } OperationCallback * Operation::callback() { - return mCallback; + return mCallback; } void Operation::cancel() { - pthread_mutex_lock(&mLock); - mCancelled = true; - pthread_mutex_unlock(&mLock); + pthread_mutex_lock(&mLock); + mCancelled = true; + pthread_mutex_unlock(&mLock); } bool Operation::isCancelled() { - pthread_mutex_lock(&mLock); - bool value = mCancelled; - pthread_mutex_unlock(&mLock); - - return value; + pthread_mutex_lock(&mLock); + bool value = mCancelled; + pthread_mutex_unlock(&mLock); + + return value; } void Operation::beforeMain() diff --git a/src/core/basetypes/MCOperation.h b/src/core/basetypes/MCOperation.h index db0e5b35..bd61e073 100644 --- a/src/core/basetypes/MCOperation.h +++ b/src/core/basetypes/MCOperation.h @@ -13,23 +13,23 @@ namespace mailcore { - class OperationCallback; - - class Operation : public Object { - public: - Operation(); - virtual ~Operation(); - - virtual void setCallback(OperationCallback * callback); - virtual OperationCallback * callback(); + class OperationCallback; + + class Operation : public Object { + public: + Operation(); + virtual ~Operation(); + + virtual void setCallback(OperationCallback * callback); + virtual OperationCallback * callback(); + + virtual void cancel(); + virtual bool isCancelled(); - virtual void cancel(); - virtual bool isCancelled(); - // Will be called on main thread. virtual void beforeMain(); - virtual void main(); + virtual void main(); // Will be called on main thread. virtual void afterMain(); @@ -40,17 +40,17 @@ namespace mailcore { virtual void setCallbackDispatchQueue(dispatch_queue_t callbackDispatchQueue); virtual dispatch_queue_t callbackDispatchQueue(); #endif - - private: - OperationCallback * mCallback; - bool mCancelled; - pthread_mutex_t mLock; + + private: + OperationCallback * mCallback; + bool mCancelled; + pthread_mutex_t mLock; #ifdef __APPLE__ dispatch_queue_t mCallbackDispatchQueue; #endif - - }; - + + }; + } #endif diff --git a/src/objc/utils/MCOOperation.h b/src/objc/utils/MCOOperation.h index 3f6b42c5..08e74d84 100644 --- a/src/objc/utils/MCOOperation.h +++ b/src/objc/utils/MCOOperation.h @@ -14,15 +14,20 @@ @interface MCOOperation : NSObject +/** Returns whether the operation is cancelled.*/ @property (readonly) BOOL isCancelled; -// This methods is called on the main thread when the asynchronous operation is finished. -// Needs to be overriden by subclasses. +/** The queue this operation dispatches the callback on. Defaults to the main queue.*/ +@property (nonatomic, assign) dispatch_queue_t callbackDispatchQueue; + +/** This methods is called on the main thread when the asynchronous operation is finished. + Needs to be overriden by subclasses.*/ - (void) operationCompleted; -// Cancel the operation. +/** Cancel the operation.*/ - (void) cancel; + @end #endif -- cgit v1.2.3