blob: e8211a24d995d4b2798292f8b4a4a20e97af6b0c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
//
// 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);
}
|