diff options
author | 2013-01-12 00:41:23 -0800 | |
---|---|---|
committer | 2013-01-12 00:41:23 -0800 | |
commit | 70f53398659fb9305f6bf88e33c84327c61829d5 (patch) | |
tree | 8c3c5678a9934eac75c1a167e48e6a010e3a0d4e /src/async/smtp/MCSMTPOperation.cc | |
parent | 7b04566d191b27d8018fd486570a12b6f1049a16 (diff) |
added check SMTP account
Diffstat (limited to 'src/async/smtp/MCSMTPOperation.cc')
-rw-r--r-- | src/async/smtp/MCSMTPOperation.cc | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/async/smtp/MCSMTPOperation.cc b/src/async/smtp/MCSMTPOperation.cc new file mode 100644 index 00000000..532c6ab4 --- /dev/null +++ b/src/async/smtp/MCSMTPOperation.cc @@ -0,0 +1,85 @@ +// +// MCSMTPOperation.cpp +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/11/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCSMTPOperation.h" + +#include <stdlib.h> + +#include "MCSMTPAsyncSession.h" +#include "MCSMTPOperationCallback.h" + +using namespace mailcore; + +SMTPOperation::SMTPOperation() +{ + mSession = NULL; + mError = ErrorNone; +} + +SMTPOperation::~SMTPOperation() +{ + MC_SAFE_RELEASE(mSession); +} + +void SMTPOperation::setSession(SMTPAsyncSession * session) +{ + MC_SAFE_REPLACE_RETAIN(SMTPAsyncSession, mSession, session); +} + +SMTPAsyncSession * SMTPOperation::session() +{ + return mSession; +} + +void SMTPOperation::start() +{ + mSession->runOperation(this); +} + +void SMTPOperation::setSmtpCallback(SMTPOperationCallback * callback) +{ + mSmtpCallback = callback; +} + +SMTPOperationCallback * SMTPOperation::smtpCallback() +{ + return mSmtpCallback; +} + +void SMTPOperation::setError(ErrorCode error) +{ + mError = error; +} + +ErrorCode SMTPOperation::error() +{ + return mError; +} + +struct progressContext { + unsigned int current; + unsigned int maximum; +}; + +void SMTPOperation::bodyProgress(SMTPSession * session, unsigned int current, unsigned int maximum) +{ + struct progressContext * context = (struct progressContext *) calloc(sizeof(* context), 1); + context->current = current; + context->maximum = maximum; + performMethodOnMainThread((Object::Method) &SMTPOperation::bodyProgressOnMainThread, context); +} + +void SMTPOperation::bodyProgressOnMainThread(void * ctx) +{ + struct progressContext * context = (struct progressContext *) ctx; + if (mSmtpCallback != NULL) { + mSmtpCallback->bodyProgress(this, context->current, context->maximum); + } + free(context); +} + |