diff options
author | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2016-03-07 22:14:47 -0800 |
---|---|---|
committer | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2016-03-07 22:14:47 -0800 |
commit | f3be74e24f4b460bf309e4b6289973c34b137382 (patch) | |
tree | da08b5c577685b6fc395d87a287b8d8717cbb149 /src/async | |
parent | a55c8f370bd663ea1d31fed230987711aa1cf176 (diff) |
Improved error management
Diffstat (limited to 'src/async')
-rwxr-xr-x | src/async/imap/MCAsyncIMAP.h | 1 | ||||
-rwxr-xr-x | src/async/imap/MCIMAPAsyncSession.cpp | 2 | ||||
-rwxr-xr-x | src/async/imap/MCIMAPAsyncSession.h | 3 | ||||
-rw-r--r-- | src/async/imap/MCIMAPCheckAccountOperation.cpp | 21 | ||||
-rw-r--r-- | src/async/imap/MCIMAPCheckAccountOperation.h | 9 |
5 files changed, 33 insertions, 3 deletions
diff --git a/src/async/imap/MCAsyncIMAP.h b/src/async/imap/MCAsyncIMAP.h index 1fb51de0..e6d6d367 100755 --- a/src/async/imap/MCAsyncIMAP.h +++ b/src/async/imap/MCAsyncIMAP.h @@ -35,5 +35,6 @@ #include <MailCore/MCIMAPOperationCallback.h> #include <MailCore/MCIMAPMessageRenderingOperation.h> #include <MailCore/MCIMAPCustomCommandOperation.h> +#include <MailCore/MCIMAPCheckAccountOperation.h> #endif diff --git a/src/async/imap/MCIMAPAsyncSession.cpp b/src/async/imap/MCIMAPAsyncSession.cpp index 976dce95..aa7be032 100755 --- a/src/async/imap/MCIMAPAsyncSession.cpp +++ b/src/async/imap/MCIMAPAsyncSession.cpp @@ -719,7 +719,7 @@ IMAPOperation * IMAPAsyncSession::connectOperation() return op; } -IMAPOperation * IMAPAsyncSession::checkAccountOperation() +IMAPCheckAccountOperation * IMAPAsyncSession::checkAccountOperation() { IMAPCheckAccountOperation * op = new IMAPCheckAccountOperation(); op->setMainSession(this); diff --git a/src/async/imap/MCIMAPAsyncSession.h b/src/async/imap/MCIMAPAsyncSession.h index f5129a26..873c3dde 100755 --- a/src/async/imap/MCIMAPAsyncSession.h +++ b/src/async/imap/MCIMAPAsyncSession.h @@ -42,6 +42,7 @@ namespace mailcore { class IMAPIdentity; class OperationQueueCallback; class IMAPCustomCommandOperation; + class IMAPCheckAccountOperation; class MAILCORE_EXPORT IMAPAsyncSession : public Object { public: @@ -163,7 +164,7 @@ namespace mailcore { virtual IMAPIdentityOperation * identityOperation(IMAPIdentity * identity); virtual IMAPOperation * connectOperation(); - virtual IMAPOperation * checkAccountOperation(); + virtual IMAPCheckAccountOperation * checkAccountOperation(); virtual IMAPOperation * disconnectOperation(); virtual IMAPCapabilityOperation * capabilityOperation(); diff --git a/src/async/imap/MCIMAPCheckAccountOperation.cpp b/src/async/imap/MCIMAPCheckAccountOperation.cpp index 5baa89a9..4a833711 100644 --- a/src/async/imap/MCIMAPCheckAccountOperation.cpp +++ b/src/async/imap/MCIMAPCheckAccountOperation.cpp @@ -13,11 +13,30 @@ using namespace mailcore; +IMAPCheckAccountOperation::IMAPCheckAccountOperation() +{ + mLoginResponse = NULL; +} + +IMAPCheckAccountOperation::~IMAPCheckAccountOperation() +{ + MC_SAFE_RELEASE(mLoginResponse); +} + void IMAPCheckAccountOperation::main() { ErrorCode error; session()->session()->connectIfNeeded(&error); - if (error == ErrorNone) + if (error == ErrorNone) { session()->session()->login(&error); + if (error != ErrorNone) { + MC_SAFE_REPLACE_COPY(String, mLoginResponse, session()->session()->loginResponse()); + } + } setError(error); } + +String * IMAPCheckAccountOperation::loginResponse() +{ + return mLoginResponse; +} diff --git a/src/async/imap/MCIMAPCheckAccountOperation.h b/src/async/imap/MCIMAPCheckAccountOperation.h index 9c81f00e..b6ce9dbf 100644 --- a/src/async/imap/MCIMAPCheckAccountOperation.h +++ b/src/async/imap/MCIMAPCheckAccountOperation.h @@ -17,8 +17,17 @@ namespace mailcore { class MAILCORE_EXPORT IMAPCheckAccountOperation : public IMAPOperation { + public: + IMAPCheckAccountOperation(); + virtual ~IMAPCheckAccountOperation(); + + virtual String * loginResponse(); + public: // subclass behavior virtual void main(); + + private: + String * mLoginResponse; }; } |