EmailScheduler/MailCore.framework/Versions/A/Headers/MCOperation.h

60 lines
1.4 KiB
C
Raw Normal View History

2014-09-13 17:13:32 -05:00
#ifndef MAILCORE_MCOPERATION_H
#define MAILCORE_MCOPERATION_H
#include <pthread.h>
#include <MailCore/MCObject.h>
#ifdef __cplusplus
namespace mailcore {
class OperationCallback;
class Operation : public Object {
public:
Operation();
virtual ~Operation();
virtual void setCallback(OperationCallback * callback);
virtual OperationCallback * callback();
virtual void cancel();
virtual bool isCancelled();
// Will be called on main thread.
virtual void beforeMain();
virtual void main();
// Will be called on main thread.
virtual void afterMain();
virtual void start();
#ifdef __APPLE__
virtual void setCallbackDispatchQueue(dispatch_queue_t callbackDispatchQueue);
virtual dispatch_queue_t callbackDispatchQueue();
#endif
void performMethodOnCallbackThread(Method method, void * context, bool waitUntilDone = false);
virtual bool shouldRunWhenCancelled();
virtual void setShouldRunWhenCancelled(bool shouldRunWhenCancelled);
private:
OperationCallback * mCallback;
bool mCancelled;
bool mShouldRunWhenCancelled;
pthread_mutex_t mLock;
#ifdef __APPLE__
dispatch_queue_t mCallbackDispatchQueue;
#endif
};
}
#endif
#endif