diff options
Diffstat (limited to 'src/async/pop/MCPOPAsyncSession.cpp')
-rw-r--r-- | src/async/pop/MCPOPAsyncSession.cpp | 27 |
1 files changed, 27 insertions, 0 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(); +} |