aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/async
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2016-03-07 22:14:47 -0800
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2016-03-07 22:14:47 -0800
commitf3be74e24f4b460bf309e4b6289973c34b137382 (patch)
treeda08b5c577685b6fc395d87a287b8d8717cbb149 /src/async
parenta55c8f370bd663ea1d31fed230987711aa1cf176 (diff)
Improved error management
Diffstat (limited to 'src/async')
-rwxr-xr-xsrc/async/imap/MCAsyncIMAP.h1
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncSession.cpp2
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncSession.h3
-rw-r--r--src/async/imap/MCIMAPCheckAccountOperation.cpp21
-rw-r--r--src/async/imap/MCIMAPCheckAccountOperation.h9
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;
};
}