diff options
author | 2014-12-18 12:38:10 -0800 | |
---|---|---|
committer | 2014-12-18 12:38:10 -0800 | |
commit | 3dfb8a6907c66698700cfaf279d4f94e7cd0f21e (patch) | |
tree | fca8bf99786e56ddb3f2e3354a6ff13554c57b4b /src/async/pop | |
parent | c1607b6787a8430d32058c6ab430bcc75285a577 (diff) |
Fixed #1002: implemented operationqueue callback for smtp/nntp/pop
Diffstat (limited to 'src/async/pop')
-rw-r--r-- | src/async/pop/MCPOPAsyncSession.cpp | 27 | ||||
-rw-r--r-- | src/async/pop/MCPOPAsyncSession.h | 8 |
2 files changed, 34 insertions, 1 deletions
diff --git a/src/async/pop/MCPOPAsyncSession.cpp b/src/async/pop/MCPOPAsyncSession.cpp index 2a6bd3b0..dead660f 100644 --- a/src/async/pop/MCPOPAsyncSession.cpp +++ b/src/async/pop/MCPOPAsyncSession.cpp @@ -32,9 +32,15 @@ namespace mailcore { virtual void queueStartRunning() { mSession->retain(); + if (mSession->operationQueueCallback() != NULL) { + mSession->operationQueueCallback()->queueStartRunning(); + } } virtual void queueStoppedRunning() { + if (mSession->operationQueueCallback() != NULL) { + mSession->operationQueueCallback()->queueStoppedRunning(); + } mSession->release(); } @@ -72,6 +78,7 @@ POPAsyncSession::POPAsyncSession() pthread_mutex_init(&mConnectionLoggerLock, NULL); mInternalLogger = new POPConnectionLogger(this); mSession->setConnectionLogger(mInternalLogger); + mOperationQueueCallback = NULL; } POPAsyncSession::~POPAsyncSession() @@ -273,3 +280,23 @@ dispatch_queue_t POPAsyncSession::dispatchQueue() return mQueue->dispatchQueue(); } #endif + +void POPAsyncSession::setOperationQueueCallback(OperationQueueCallback * callback) +{ + mOperationQueueCallback = callback; +} + +OperationQueueCallback * POPAsyncSession::operationQueueCallback() +{ + return mOperationQueueCallback; +} + +bool POPAsyncSession::isOperationQueueRunning() +{ + return mQueue->count() > 0; +} + +void POPAsyncSession::cancelAllOperations() +{ + mQueue->cancelAllOperations(); +} diff --git a/src/async/pop/MCPOPAsyncSession.h b/src/async/pop/MCPOPAsyncSession.h index 2cc50e12..7dfe7931 100644 --- a/src/async/pop/MCPOPAsyncSession.h +++ b/src/async/pop/MCPOPAsyncSession.h @@ -61,7 +61,12 @@ namespace mailcore { virtual void setDispatchQueue(dispatch_queue_t dispatchQueue); virtual dispatch_queue_t dispatchQueue(); #endif - + + virtual void setOperationQueueCallback(OperationQueueCallback * callback); + virtual OperationQueueCallback * operationQueueCallback(); + virtual bool isOperationQueueRunning(); + virtual void cancelAllOperations(); + virtual POPFetchMessagesOperation * fetchMessagesOperation(); virtual POPFetchHeaderOperation * fetchHeaderOperation(unsigned int index); @@ -84,6 +89,7 @@ namespace mailcore { ConnectionLogger * mConnectionLogger; pthread_mutex_t mConnectionLoggerLock; POPConnectionLogger * mInternalLogger; + OperationQueueCallback * mOperationQueueCallback; public: // private virtual void runOperation(POPOperation * operation); |