diff options
Diffstat (limited to 'src/async')
-rw-r--r-- | src/async/imap/MCIMAPAsyncConnection.cc | 41 | ||||
-rw-r--r-- | src/async/imap/MCIMAPAsyncConnection.h | 9 | ||||
-rw-r--r-- | src/async/imap/MCIMAPAsyncSession.cpp | 23 | ||||
-rw-r--r-- | src/async/imap/MCIMAPAsyncSession.h | 8 | ||||
-rw-r--r-- | src/async/imap/MCIMAPFetchMessagesOperation.cc | 37 | ||||
-rw-r--r-- | src/async/imap/MCIMAPFetchMessagesOperation.h | 7 |
6 files changed, 123 insertions, 2 deletions
diff --git a/src/async/imap/MCIMAPAsyncConnection.cc b/src/async/imap/MCIMAPAsyncConnection.cc index 18922f37..1c82d07a 100644 --- a/src/async/imap/MCIMAPAsyncConnection.cc +++ b/src/async/imap/MCIMAPAsyncConnection.cc @@ -265,6 +265,7 @@ IMAPOperation * IMAPAsyncConnection::expungeOperation(String * folder) return op; } +#if 0 IMAPFetchMessagesOperation * IMAPAsyncConnection::fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind, uint32_t firstUID, uint32_t lastUID) { @@ -345,6 +346,46 @@ IMAPFetchMessagesOperation * IMAPAsyncConnection::syncMessagesByUIDForModSeqOper op->autorelease(); return op; } +#endif + +IMAPFetchMessagesOperation * IMAPAsyncConnection::fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind, + IndexSet * indexes) +{ + IMAPFetchMessagesOperation * op = new IMAPFetchMessagesOperation(); + op->setSession(this); + op->setFolder(folder); + op->setKind(requestKind); + op->setFetchByUidEnabled(true); + op->setIndexes(indexes); + op->autorelease(); + return op; +} + +IMAPFetchMessagesOperation * IMAPAsyncConnection::fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind, + IndexSet * indexes) +{ + IMAPFetchMessagesOperation * op = new IMAPFetchMessagesOperation(); + op->setSession(this); + op->setFolder(folder); + op->setKind(requestKind); + op->setIndexes(indexes); + op->autorelease(); + return op; +} + +IMAPFetchMessagesOperation * IMAPAsyncConnection::syncMessagesByUID(String * folder, IMAPMessagesRequestKind requestKind, + IndexSet * indexes, uint64_t modSeq) +{ + IMAPFetchMessagesOperation * op = new IMAPFetchMessagesOperation(); + op->setSession(this); + op->setFolder(folder); + op->setKind(requestKind); + op->setFetchByUidEnabled(true); + op->setIndexes(indexes); + op->setModSequenceValue(modSeq); + op->autorelease(); + return op; +} IMAPFetchContentOperation * IMAPAsyncConnection::fetchMessageByUIDOperation(String * folder, uint32_t uid) { diff --git a/src/async/imap/MCIMAPAsyncConnection.h b/src/async/imap/MCIMAPAsyncConnection.h index 9772b5b3..b791617b 100644 --- a/src/async/imap/MCIMAPAsyncConnection.h +++ b/src/async/imap/MCIMAPAsyncConnection.h @@ -81,6 +81,7 @@ namespace mailcore { virtual IMAPOperation * expungeOperation(String * folder); +#if 0 virtual IMAPFetchMessagesOperation * fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind, uint32_t firstUID, uint32_t lastUID); virtual IMAPFetchMessagesOperation * fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind, @@ -93,6 +94,14 @@ namespace mailcore { uint32_t firstUID, uint32_t lastUID, uint64_t modSeq); virtual IMAPFetchMessagesOperation * syncMessagesByUIDForModSeqOperation(String * folder, IMAPMessagesRequestKind requestKind, Array * uids, uint64_t modSeq); +#endif + virtual IMAPFetchMessagesOperation * fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind, + IndexSet * indexes); + virtual IMAPFetchMessagesOperation * fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind, + IndexSet * indexes); + virtual IMAPFetchMessagesOperation * syncMessagesByUID(String * folder, IMAPMessagesRequestKind requestKind, + IndexSet * indexes, uint64_t modSeq); + virtual IMAPFetchContentOperation * fetchMessageByUIDOperation(String * folder, uint32_t uid); virtual IMAPFetchContentOperation * fetchMessageAttachmentByUIDOperation(String * folder, uint32_t uid, String * partID, Encoding encoding); diff --git a/src/async/imap/MCIMAPAsyncSession.cpp b/src/async/imap/MCIMAPAsyncSession.cpp index b2d31b0e..151e9dad 100644 --- a/src/async/imap/MCIMAPAsyncSession.cpp +++ b/src/async/imap/MCIMAPAsyncSession.cpp @@ -333,6 +333,7 @@ IMAPOperation * IMAPAsyncSession::expungeOperation(String * folder) return session->expungeOperation(folder); } +#if 0 IMAPFetchMessagesOperation * IMAPAsyncSession::fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind, uint32_t firstUID, uint32_t lastUID) { @@ -374,6 +375,28 @@ IMAPFetchMessagesOperation * IMAPAsyncSession::syncMessagesByUIDForModSeqOperati IMAPAsyncConnection * session = sessionForFolder(folder); return session->syncMessagesByUIDForModSeqOperation(folder, requestKind, uids, modSeq); } +#endif + +IMAPFetchMessagesOperation * IMAPAsyncSession::fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind, + IndexSet * indexes) +{ + IMAPAsyncConnection * session = sessionForFolder(folder); + return session->fetchMessagesByUIDOperation(folder, requestKind, indexes); +} + +IMAPFetchMessagesOperation * IMAPAsyncSession::fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind, + IndexSet * indexes) +{ + IMAPAsyncConnection * session = sessionForFolder(folder); + return session->fetchMessagesByNumberOperation(folder, requestKind, indexes); +} + +IMAPFetchMessagesOperation * IMAPAsyncSession::syncMessagesByUID(String * folder, IMAPMessagesRequestKind requestKind, + IndexSet * indexes, uint64_t modSeq) +{ + IMAPAsyncConnection * session = sessionForFolder(folder); + return session->syncMessagesByUID(folder, requestKind, indexes, modSeq); +} IMAPFetchContentOperation * IMAPAsyncSession::fetchMessageByUIDOperation(String * folder, uint32_t uid, bool urgent) { diff --git a/src/async/imap/MCIMAPAsyncSession.h b/src/async/imap/MCIMAPAsyncSession.h index e8d45f6b..1722b2b1 100644 --- a/src/async/imap/MCIMAPAsyncSession.h +++ b/src/async/imap/MCIMAPAsyncSession.h @@ -94,6 +94,7 @@ namespace mailcore { virtual IMAPOperation * expungeOperation(String * folder); +#if 0 virtual IMAPFetchMessagesOperation * fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind, uint32_t firstUID, uint32_t lastUID); virtual IMAPFetchMessagesOperation * fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind, @@ -106,6 +107,13 @@ namespace mailcore { uint32_t firstUID, uint32_t lastUID, uint64_t modSeq); virtual IMAPFetchMessagesOperation * syncMessagesByUIDForModSeqOperation(String * folder, IMAPMessagesRequestKind requestKind, Array * uids, uint64_t modSeq); +#endif + virtual IMAPFetchMessagesOperation * fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind, + IndexSet * indexes); + virtual IMAPFetchMessagesOperation * fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind, + IndexSet * indexes); + virtual IMAPFetchMessagesOperation * syncMessagesByUID(String * folder, IMAPMessagesRequestKind requestKind, + IndexSet * indexes, uint64_t modSeq); virtual IMAPFetchContentOperation * fetchMessageByUIDOperation(String * folder, uint32_t uid, bool urgent = false); virtual IMAPFetchContentOperation * fetchMessageAttachmentByUIDOperation(String * folder, uint32_t uid, String * partID, diff --git a/src/async/imap/MCIMAPFetchMessagesOperation.cc b/src/async/imap/MCIMAPFetchMessagesOperation.cc index 21db5219..fcc67be5 100644 --- a/src/async/imap/MCIMAPFetchMessagesOperation.cc +++ b/src/async/imap/MCIMAPFetchMessagesOperation.cc @@ -17,10 +17,13 @@ using namespace mailcore; IMAPFetchMessagesOperation::IMAPFetchMessagesOperation() { mFetchByUidEnabled = false; +#if 0 mFirst = 0; mLast = 0; mUids = NULL; mNumbers = NULL; +#endif + mIndexes = NULL; mMessages = NULL; mVanishedMessages = NULL; mModSequenceValue = 0; @@ -28,8 +31,11 @@ IMAPFetchMessagesOperation::IMAPFetchMessagesOperation() IMAPFetchMessagesOperation::~IMAPFetchMessagesOperation() { +#if 0 MC_SAFE_RELEASE(mNumbers); MC_SAFE_RELEASE(mUids); +#endif + MC_SAFE_RELEASE(mIndexes); MC_SAFE_RELEASE(mMessages); MC_SAFE_RELEASE(mVanishedMessages); } @@ -44,6 +50,7 @@ bool IMAPFetchMessagesOperation::isFetchByUidEnabled() return mFetchByUidEnabled; } +#if 0 void IMAPFetchMessagesOperation::setFirst(uint32_t first) { mFirst = first; @@ -83,6 +90,17 @@ Array * IMAPFetchMessagesOperation::numbers() { return mNumbers; } +#endif + +void IMAPFetchMessagesOperation::setIndexes(IndexSet * indexes) +{ + MC_SAFE_REPLACE_RETAIN(IndexSet, mIndexes, indexes); +} + +IndexSet * IMAPFetchMessagesOperation::indexes() +{ + return mIndexes; +} void IMAPFetchMessagesOperation::setModSequenceValue(uint64_t modseq) { @@ -119,10 +137,11 @@ void IMAPFetchMessagesOperation::main() ErrorCode error; if (mFetchByUidEnabled) { if (mModSequenceValue != 0) { +#if 0 if (mUids != NULL) { IMAPSyncResult * syncResult; - syncResult = session()->session()->syncMessagesByUIDForModSeq(folder(), mKind, mUids, mModSequenceValue, this, &error); + syncResult = session()->session()->syncMessagesByUID(folder(), mKind, mUids, mModSequenceValue, this, &error); if (syncResult != NULL) { mMessages = syncResult->modifiedOrAddedMessages(); mVanishedMessages = syncResult->modifiedOrAddedMessages(); @@ -131,29 +150,43 @@ void IMAPFetchMessagesOperation::main() else { IMAPSyncResult * syncResult; - syncResult = session()->session()->syncMessagesByUIDForModSeq(folder(), mKind, mFirst, mLast, mModSequenceValue, this, &error); + syncResult = session()->session()->syncMessagesByUID(folder(), mKind, mFirst, mLast, mModSequenceValue, this, &error); if (syncResult != NULL) { mMessages = syncResult->modifiedOrAddedMessages(); mVanishedMessages = syncResult->modifiedOrAddedMessages(); } } +#endif + IMAPSyncResult * syncResult; + + syncResult = session()->session()->syncMessagesByUID(folder(), mKind, mIndexes, mModSequenceValue, this, &error); + if (syncResult != NULL) { + mMessages = syncResult->modifiedOrAddedMessages(); + mVanishedMessages = syncResult->modifiedOrAddedMessages(); + } } else { +#if 0 if (mUids != NULL) { mMessages = session()->session()->fetchMessagesByUID(folder(), mKind, mUids, this, &error); } else { mMessages = session()->session()->fetchMessagesByUID(folder(), mKind, mFirst, mLast, this, &error); } +#endif + mMessages = session()->session()->fetchMessagesByUID(folder(), mKind, mIndexes, this, &error); } } else { +#if 0 if (mNumbers != NULL) { mMessages = session()->session()->fetchMessagesByNumber(folder(), mKind, mNumbers, this, &error); } else { mMessages = session()->session()->fetchMessagesByNumber(folder(), mKind, mFirst, mLast, this, &error); } +#endif + mMessages = session()->session()->fetchMessagesByNumber(folder(), mKind, mIndexes, this, &error); } MC_SAFE_RETAIN(mMessages); MC_SAFE_RETAIN(mVanishedMessages); diff --git a/src/async/imap/MCIMAPFetchMessagesOperation.h b/src/async/imap/MCIMAPFetchMessagesOperation.h index 24cd5be8..9f13159c 100644 --- a/src/async/imap/MCIMAPFetchMessagesOperation.h +++ b/src/async/imap/MCIMAPFetchMessagesOperation.h @@ -23,6 +23,7 @@ namespace mailcore { virtual void setFetchByUidEnabled(bool enabled); virtual bool isFetchByUidEnabled(); +#if 0 virtual void setFirst(uint32_t first); virtual uint32_t first(); @@ -34,6 +35,9 @@ namespace mailcore { virtual void setNumbers(Array * numbers); virtual Array * numbers(); +#endif + virtual void setIndexes(IndexSet * indexes); + virtual IndexSet * indexes(); virtual void setModSequenceValue(uint64_t modseq); virtual uint64_t modSequenceValue(); @@ -50,10 +54,13 @@ namespace mailcore { private: bool mFetchByUidEnabled; +#if 0 uint32_t mFirst; uint32_t mLast; Array * mUids; Array * mNumbers; +#endif + IndexSet * mIndexes; IMAPMessagesRequestKind mKind; Array * mMessages; Array * mVanishedMessages; |