aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/async
diff options
context:
space:
mode:
authorGravatar DINH Viet Hoa <dinh.viet.hoa@gmail.com>2013-03-10 22:39:15 -0700
committerGravatar DINH Viet Hoa <dinh.viet.hoa@gmail.com>2013-03-10 22:39:15 -0700
commit8c92ac7a4b67d4ebb4dd177cf70aef73278d2baa (patch)
tree8f410ca690418cb89c2bbc84e74cffa67a504235 /src/async
parent3288fbac4090ecf5ea490ba72e5c3c01a4233e21 (diff)
now uses IndexSet for message uids and numbers
Diffstat (limited to 'src/async')
-rw-r--r--src/async/imap/MCIMAPAsyncConnection.cc41
-rw-r--r--src/async/imap/MCIMAPAsyncConnection.h9
-rw-r--r--src/async/imap/MCIMAPAsyncSession.cpp23
-rw-r--r--src/async/imap/MCIMAPAsyncSession.h8
-rw-r--r--src/async/imap/MCIMAPFetchMessagesOperation.cc37
-rw-r--r--src/async/imap/MCIMAPFetchMessagesOperation.h7
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;