aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/async/smtp
diff options
context:
space:
mode:
Diffstat (limited to 'src/async/smtp')
-rw-r--r--src/async/smtp/MCSMTPAsyncSession.cpp (renamed from src/async/smtp/MCSMTPAsyncSession.cc)35
-rw-r--r--src/async/smtp/MCSMTPAsyncSession.h11
-rw-r--r--src/async/smtp/MCSMTPCheckAccountOperation.cpp (renamed from src/async/smtp/MCSMTPCheckAccountOperation.cc)0
-rw-r--r--src/async/smtp/MCSMTPCheckAccountOperation.h2
-rw-r--r--src/async/smtp/MCSMTPDisconnectOperation.cpp (renamed from src/async/smtp/MCSMTPDisconnectOperation.cc)0
-rw-r--r--src/async/smtp/MCSMTPDisconnectOperation.h2
-rw-r--r--src/async/smtp/MCSMTPLoginOperation.cpp29
-rw-r--r--src/async/smtp/MCSMTPLoginOperation.h34
-rw-r--r--src/async/smtp/MCSMTPNoopOperation.cpp (renamed from src/async/smtp/MCSMTPNoopOperation.cc)0
-rw-r--r--src/async/smtp/MCSMTPNoopOperation.h2
-rw-r--r--src/async/smtp/MCSMTPOperation.cpp (renamed from src/async/smtp/MCSMTPOperation.cc)0
-rw-r--r--src/async/smtp/MCSMTPOperation.h2
-rw-r--r--src/async/smtp/MCSMTPOperationCallback.h4
-rw-r--r--src/async/smtp/MCSMTPSendWithDataOperation.cpp (renamed from src/async/smtp/MCSMTPSendWithDataOperation.cc)0
-rw-r--r--src/async/smtp/MCSMTPSendWithDataOperation.h2
15 files changed, 115 insertions, 8 deletions
diff --git a/src/async/smtp/MCSMTPAsyncSession.cc b/src/async/smtp/MCSMTPAsyncSession.cpp
index 1964c944..9fe55e2e 100644
--- a/src/async/smtp/MCSMTPAsyncSession.cc
+++ b/src/async/smtp/MCSMTPAsyncSession.cpp
@@ -1,6 +1,7 @@
#include "MCSMTPAsyncSession.h"
#include "MCSMTPSession.h"
+#include "MCSMTPLoginOperation.h"
#include "MCSMTPSendWithDataOperation.h"
#include "MCSMTPCheckAccountOperation.h"
#include "MCSMTPDisconnectOperation.h"
@@ -23,9 +24,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->tryAutomaticDisconnect();
mSession->release();
}
@@ -64,6 +71,7 @@ SMTPAsyncSession::SMTPAsyncSession()
pthread_mutex_init(&mConnectionLoggerLock, NULL);
mInternalLogger = new SMTPConnectionLogger(this);
mSession->setConnectionLogger(mInternalLogger);
+ mOperationQueueCallback = NULL;
}
SMTPAsyncSession::~SMTPAsyncSession()
@@ -206,6 +214,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();
@@ -284,3 +299,23 @@ dispatch_queue_t SMTPAsyncSession::dispatchQueue()
return mQueue->dispatchQueue();
}
#endif
+
+void SMTPAsyncSession::setOperationQueueCallback(OperationQueueCallback * callback)
+{
+ mOperationQueueCallback = callback;
+}
+
+OperationQueueCallback * SMTPAsyncSession::operationQueueCallback()
+{
+ return mOperationQueueCallback;
+}
+
+bool SMTPAsyncSession::isOperationQueueRunning()
+{
+ return mQueue->count() > 0;
+}
+
+void SMTPAsyncSession::cancelAllOperations()
+{
+ mQueue->cancelAllOperations();
+}
diff --git a/src/async/smtp/MCSMTPAsyncSession.h b/src/async/smtp/MCSMTPAsyncSession.h
index fa0893d2..38da3717 100644
--- a/src/async/smtp/MCSMTPAsyncSession.h
+++ b/src/async/smtp/MCSMTPAsyncSession.h
@@ -16,7 +16,7 @@ namespace mailcore {
class SMTPOperationQueueCallback;
class SMTPConnectionLogger;
- class SMTPAsyncSession : public Object {
+ class MAILCORE_EXPORT SMTPAsyncSession : public Object {
public:
SMTPAsyncSession();
virtual ~SMTPAsyncSession();
@@ -58,7 +58,13 @@ 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 SMTPOperation * loginOperation();
virtual SMTPOperation * sendMessageOperation(Data * messageData);
virtual SMTPOperation * sendMessageOperation(Address * from, Array * recipients,
Data * messageData);
@@ -79,6 +85,7 @@ namespace mailcore {
ConnectionLogger * mConnectionLogger;
pthread_mutex_t mConnectionLoggerLock;
SMTPConnectionLogger * mInternalLogger;
+ OperationQueueCallback * mOperationQueueCallback;
virtual void tryAutomaticDisconnectAfterDelay(void * context);
};
diff --git a/src/async/smtp/MCSMTPCheckAccountOperation.cc b/src/async/smtp/MCSMTPCheckAccountOperation.cpp
index f711c6ec..f711c6ec 100644
--- a/src/async/smtp/MCSMTPCheckAccountOperation.cc
+++ b/src/async/smtp/MCSMTPCheckAccountOperation.cpp
diff --git a/src/async/smtp/MCSMTPCheckAccountOperation.h b/src/async/smtp/MCSMTPCheckAccountOperation.h
index e1fd373f..ad45d38b 100644
--- a/src/async/smtp/MCSMTPCheckAccountOperation.h
+++ b/src/async/smtp/MCSMTPCheckAccountOperation.h
@@ -17,7 +17,7 @@
namespace mailcore {
- class SMTPCheckAccountOperation : public SMTPOperation {
+ class MAILCORE_EXPORT SMTPCheckAccountOperation : public SMTPOperation {
public:
SMTPCheckAccountOperation();
virtual ~SMTPCheckAccountOperation();
diff --git a/src/async/smtp/MCSMTPDisconnectOperation.cc b/src/async/smtp/MCSMTPDisconnectOperation.cpp
index ba20567b..ba20567b 100644
--- a/src/async/smtp/MCSMTPDisconnectOperation.cc
+++ b/src/async/smtp/MCSMTPDisconnectOperation.cpp
diff --git a/src/async/smtp/MCSMTPDisconnectOperation.h b/src/async/smtp/MCSMTPDisconnectOperation.h
index 11853065..668e3c41 100644
--- a/src/async/smtp/MCSMTPDisconnectOperation.h
+++ b/src/async/smtp/MCSMTPDisconnectOperation.h
@@ -18,7 +18,7 @@
namespace mailcore {
- class SMTPDisconnectOperation : public SMTPOperation {
+ class MAILCORE_EXPORT SMTPDisconnectOperation : public SMTPOperation {
public:
SMTPDisconnectOperation();
virtual ~SMTPDisconnectOperation();
diff --git a/src/async/smtp/MCSMTPLoginOperation.cpp b/src/async/smtp/MCSMTPLoginOperation.cpp
new file mode 100644
index 00000000..58866df9
--- /dev/null
+++ b/src/async/smtp/MCSMTPLoginOperation.cpp
@@ -0,0 +1,29 @@
+//
+// MCSMTPLoginOperation.cc
+// mailcore2
+//
+// Created by Hironori Yoshida on 10/29/14.
+// Copyright (c) 2014 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..fd993459
--- /dev/null
+++ b/src/async/smtp/MCSMTPLoginOperation.h
@@ -0,0 +1,34 @@
+//
+// MCSMTPLoginOperation.h
+// mailcore2
+//
+// Created by Hironori Yoshida on 10/29/14.
+// Copyright (c) 2014 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 MAILCORE_EXPORT SMTPLoginOperation : public SMTPOperation {
+ public:
+ SMTPLoginOperation();
+ virtual ~SMTPLoginOperation();
+
+ public: // subclass behavior
+ virtual void main();
+ };
+
+}
+
+#endif
+
+#endif
diff --git a/src/async/smtp/MCSMTPNoopOperation.cc b/src/async/smtp/MCSMTPNoopOperation.cpp
index 310ccb8e..310ccb8e 100644
--- a/src/async/smtp/MCSMTPNoopOperation.cc
+++ b/src/async/smtp/MCSMTPNoopOperation.cpp
diff --git a/src/async/smtp/MCSMTPNoopOperation.h b/src/async/smtp/MCSMTPNoopOperation.h
index 09116758..ad194367 100644
--- a/src/async/smtp/MCSMTPNoopOperation.h
+++ b/src/async/smtp/MCSMTPNoopOperation.h
@@ -18,7 +18,7 @@
namespace mailcore {
- class SMTPNoopOperation : public SMTPOperation {
+ class MAILCORE_EXPORT SMTPNoopOperation : public SMTPOperation {
public:
SMTPNoopOperation();
virtual ~SMTPNoopOperation();
diff --git a/src/async/smtp/MCSMTPOperation.cc b/src/async/smtp/MCSMTPOperation.cpp
index 9ddcede2..9ddcede2 100644
--- a/src/async/smtp/MCSMTPOperation.cc
+++ b/src/async/smtp/MCSMTPOperation.cpp
diff --git a/src/async/smtp/MCSMTPOperation.h b/src/async/smtp/MCSMTPOperation.h
index 1d24f481..5978d3d6 100644
--- a/src/async/smtp/MCSMTPOperation.h
+++ b/src/async/smtp/MCSMTPOperation.h
@@ -20,7 +20,7 @@ namespace mailcore {
class SMTPAsyncSession;
class SMTPOperationCallback;
- class SMTPOperation : public Operation, public SMTPProgressCallback {
+ class MAILCORE_EXPORT SMTPOperation : public Operation, public SMTPProgressCallback {
public:
SMTPOperation();
virtual ~SMTPOperation();
diff --git a/src/async/smtp/MCSMTPOperationCallback.h b/src/async/smtp/MCSMTPOperationCallback.h
index 5a3d00df..a5cfdd84 100644
--- a/src/async/smtp/MCSMTPOperationCallback.h
+++ b/src/async/smtp/MCSMTPOperationCallback.h
@@ -10,13 +10,15 @@
#define MAILCORE_MCSMTPOPERATIONCALLBACK_H
+#include <MailCore/MCUtils.h>
+
#ifdef __cplusplus
namespace mailcore {
class SMTPOperation;
- class SMTPOperationCallback {
+ class MAILCORE_EXPORT SMTPOperationCallback {
public:
virtual void bodyProgress(SMTPOperation * session, unsigned int current, unsigned int maximum) {};
};
diff --git a/src/async/smtp/MCSMTPSendWithDataOperation.cc b/src/async/smtp/MCSMTPSendWithDataOperation.cpp
index 03f6a530..03f6a530 100644
--- a/src/async/smtp/MCSMTPSendWithDataOperation.cc
+++ b/src/async/smtp/MCSMTPSendWithDataOperation.cpp
diff --git a/src/async/smtp/MCSMTPSendWithDataOperation.h b/src/async/smtp/MCSMTPSendWithDataOperation.h
index 9d2f087a..a8ee2515 100644
--- a/src/async/smtp/MCSMTPSendWithDataOperation.h
+++ b/src/async/smtp/MCSMTPSendWithDataOperation.h
@@ -18,7 +18,7 @@
namespace mailcore {
- class SMTPSendWithDataOperation : public SMTPOperation {
+ class MAILCORE_EXPORT SMTPSendWithDataOperation : public SMTPOperation {
public:
SMTPSendWithDataOperation();
virtual ~SMTPSendWithDataOperation();