diff options
author | DINH Viet Hoa <hoa@sprw.me> | 2013-01-16 01:07:32 -0800 |
---|---|---|
committer | DINH Viet Hoa <hoa@sprw.me> | 2013-01-16 01:07:32 -0800 |
commit | e75be6c8b9a9b694e86c4054b4493f8ec405df2f (patch) | |
tree | c74257540dca069ece8178d2afa03a3ee45d7781 /src/async/imap/MCIMAPFetchMessagesOperation.cc | |
parent | 70f53398659fb9305f6bf88e33c84327c61829d5 (diff) |
Implemented async IMAP
Diffstat (limited to 'src/async/imap/MCIMAPFetchMessagesOperation.cc')
-rw-r--r-- | src/async/imap/MCIMAPFetchMessagesOperation.cc | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/src/async/imap/MCIMAPFetchMessagesOperation.cc b/src/async/imap/MCIMAPFetchMessagesOperation.cc new file mode 100644 index 00000000..c08d1c52 --- /dev/null +++ b/src/async/imap/MCIMAPFetchMessagesOperation.cc @@ -0,0 +1,137 @@ +// +// IMAPFetchMessagesOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPFetchMessagesOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncSession.h" + +using namespace mailcore; + +IMAPFetchMessagesOperation::IMAPFetchMessagesOperation() +{ + mFolder = NULL; + mFetchByUidEnabled = false; + mFirst = 0; + mLast = 0; + mUids = NULL; + mNumbers = NULL; + mMessages = NULL; +} + +IMAPFetchMessagesOperation::~IMAPFetchMessagesOperation() +{ + MC_SAFE_RELEASE(mFolder); + MC_SAFE_RELEASE(mNumbers); + MC_SAFE_RELEASE(mUids); + MC_SAFE_RELEASE(mMessages); +} + +void IMAPFetchMessagesOperation::setFolder(String * folder) +{ + MC_SAFE_REPLACE_COPY(String, mFolder, folder); +} + +String * IMAPFetchMessagesOperation::folder() +{ + return mFolder; +} + +void IMAPFetchMessagesOperation::setFetchByUidEnabled(bool enabled) +{ + mFetchByUidEnabled = enabled; +} + +bool IMAPFetchMessagesOperation::isFetchByUidEnabled() +{ + return mFetchByUidEnabled; +} + +void IMAPFetchMessagesOperation::setFirst(uint32_t first) +{ + mFirst = first; +} + +uint32_t IMAPFetchMessagesOperation::first() +{ + return mFirst; +} + +void IMAPFetchMessagesOperation::setLast(uint32_t last) +{ + mLast = last; +} + +uint32_t IMAPFetchMessagesOperation::last() +{ + return mLast; +} + +void IMAPFetchMessagesOperation::setUids(Array * uids) +{ + MC_SAFE_REPLACE_RETAIN(Array, mUids, uids); +} + +Array * IMAPFetchMessagesOperation::uids() +{ + return mUids; +} + +void IMAPFetchMessagesOperation::setNumbers(Array * numbers) +{ + MC_SAFE_REPLACE_RETAIN(Array, mNumbers, numbers); +} + +Array * IMAPFetchMessagesOperation::numbers() +{ + return mNumbers; +} + +void IMAPFetchMessagesOperation::setKind(IMAPMessagesRequestKind kind) +{ + mKind = kind; +} + +IMAPMessagesRequestKind IMAPFetchMessagesOperation::kind() +{ + return mKind; +} + +Array * IMAPFetchMessagesOperation::messages() +{ + return mMessages; +} + +void IMAPFetchMessagesOperation::main() +{ + ErrorCode error; + MCLog("1"); + if (mFetchByUidEnabled) { + MCLog("2"); + if (mUids != NULL) { + MCLog("3"); + mMessages = session()->session()->fetchMessagesByUID(mFolder, mKind, mUids, this, &error); + } + else { + MCLog("4"); + mMessages = session()->session()->fetchMessagesByUID(mFolder, mKind, mFirst, mLast, this, &error); + } + } + else { + MCLog("5"); + if (mNumbers != NULL) { + MCLog("6"); + mMessages = session()->session()->fetchMessagesByNumber(mFolder, mKind, mNumbers, this, &error); + } + else { + MCLog("7"); + mMessages = session()->session()->fetchMessagesByNumber(mFolder, mKind, mFirst, mLast, this, &error); + } + } + setError(error); +} |