aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/async
diff options
context:
space:
mode:
authorGravatar robario <webmaster@robario.com>2014-10-29 17:32:09 +0900
committerGravatar robario <webmaster@robario.com>2014-10-29 18:12:59 +0900
commitaeb15860575a764dd444108098dcb95c73d4d6df (patch)
tree222c675c1fbdf04d44c535d7bc6208c5869eb2c5 /src/async
parent2f6f1ca69d59e2692f85d56941e7d996195cd6e8 (diff)
Add a new operation for SMTP login.
Diffstat (limited to 'src/async')
-rw-r--r--src/async/smtp/MCSMTPAsyncSession.cc8
-rw-r--r--src/async/smtp/MCSMTPAsyncSession.h1
-rw-r--r--src/async/smtp/MCSMTPLoginOperation.cc29
-rw-r--r--src/async/smtp/MCSMTPLoginOperation.h34
4 files changed, 72 insertions, 0 deletions
diff --git a/src/async/smtp/MCSMTPAsyncSession.cc b/src/async/smtp/MCSMTPAsyncSession.cc
index 1964c944..8acfc9c5 100644
--- a/src/async/smtp/MCSMTPAsyncSession.cc
+++ b/src/async/smtp/MCSMTPAsyncSession.cc
@@ -1,6 +1,7 @@
#include "MCSMTPAsyncSession.h"
#include "MCSMTPSession.h"
+#include "MCSMTPLoginOperation.h"
#include "MCSMTPSendWithDataOperation.h"
#include "MCSMTPCheckAccountOperation.h"
#include "MCSMTPDisconnectOperation.h"
@@ -206,6 +207,13 @@ void SMTPAsyncSession::tryAutomaticDisconnectAfterDelay(void * context)
op->start();
}
+SMTPOperation * SMTPAsyncSession::loginOperation()
+{
+ SMTPLoginOperation * op = new SMTPLoginOperation();
+ op->setSession(this);
+ return (SMTPOperation *) op->autorelease();
+}
+
SMTPOperation * SMTPAsyncSession::sendMessageOperation(Data * messageData)
{
SMTPSendWithDataOperation * op = new SMTPSendWithDataOperation();
diff --git a/src/async/smtp/MCSMTPAsyncSession.h b/src/async/smtp/MCSMTPAsyncSession.h
index fa0893d2..a48b5c26 100644
--- a/src/async/smtp/MCSMTPAsyncSession.h
+++ b/src/async/smtp/MCSMTPAsyncSession.h
@@ -59,6 +59,7 @@ namespace mailcore {
virtual dispatch_queue_t dispatchQueue();
#endif
+ virtual SMTPOperation * loginOperation();
virtual SMTPOperation * sendMessageOperation(Data * messageData);
virtual SMTPOperation * sendMessageOperation(Address * from, Array * recipients,
Data * messageData);
diff --git a/src/async/smtp/MCSMTPLoginOperation.cc b/src/async/smtp/MCSMTPLoginOperation.cc
new file mode 100644
index 00000000..7740b54f
--- /dev/null
+++ b/src/async/smtp/MCSMTPLoginOperation.cc
@@ -0,0 +1,29 @@
+//
+// MCSMTPLoginOperation.cc
+// mailcore2
+//
+// Created by Robert Widmann on 9/24/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCSMTPLoginOperation.h"
+
+#include "MCSMTPAsyncSession.h"
+#include "MCSMTPSession.h"
+
+using namespace mailcore;
+
+SMTPLoginOperation::SMTPLoginOperation()
+{
+}
+
+SMTPLoginOperation::~SMTPLoginOperation()
+{
+}
+
+void SMTPLoginOperation::main()
+{
+ ErrorCode error;
+ session()->session()->loginIfNeeded(&error);
+ setError(error);
+}
diff --git a/src/async/smtp/MCSMTPLoginOperation.h b/src/async/smtp/MCSMTPLoginOperation.h
new file mode 100644
index 00000000..88b82641
--- /dev/null
+++ b/src/async/smtp/MCSMTPLoginOperation.h
@@ -0,0 +1,34 @@
+//
+// MCSMTPLoginOperation.h
+// mailcore2
+//
+// Created by Robert Widmann on 9/24/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef MAILCORE_MCSMTPLOGINOPERATION_H
+
+#define MAILCORE_MCSMTPLOGINOPERATION_H
+
+#include <MailCore/MCBaseTypes.h>
+#include <MailCore/MCAbstract.h>
+#include <MailCore/MCSMTPOperation.h>
+
+#ifdef __cplusplus
+
+namespace mailcore {
+
+ class SMTPLoginOperation : public SMTPOperation {
+ public:
+ SMTPLoginOperation();
+ virtual ~SMTPLoginOperation();
+
+ public: // subclass behavior
+ virtual void main();
+ };
+
+}
+
+#endif
+
+#endif