aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--build-mac/mailcore2.xcodeproj/project.pbxproj176
-rw-r--r--src/async/imap/IMAPAsyncSession.h122
-rw-r--r--src/async/imap/MCAsyncIMAP.h29
-rw-r--r--src/async/imap/MCIMAPAppendMessageOperation.cc71
-rw-r--r--src/async/imap/MCIMAPAppendMessageOperation.h43
-rw-r--r--src/async/imap/MCIMAPAsyncSession.cc429
-rw-r--r--src/async/imap/MCIMAPAsyncSession.h121
-rw-r--r--src/async/imap/MCIMAPCheckAccountOperation.cc21
-rw-r--r--src/async/imap/MCIMAPCheckAccountOperation.h24
-rw-r--r--src/async/imap/MCIMAPCopyMessagesOperation.cc75
-rw-r--r--src/async/imap/MCIMAPCopyMessagesOperation.h42
-rw-r--r--src/async/imap/MCIMAPCreateFolderOperation.cc41
-rw-r--r--src/async/imap/MCIMAPCreateFolderOperation.h31
-rw-r--r--src/async/imap/MCIMAPDeleteFolderOperation.cc41
-rw-r--r--src/async/imap/MCIMAPDeleteFolderOperation.h31
-rw-r--r--src/async/imap/MCIMAPExpungeOperation.cc41
-rw-r--r--src/async/imap/MCIMAPExpungeOperation.h31
-rw-r--r--src/async/imap/MCIMAPFetchContentOperation.cc89
-rw-r--r--src/async/imap/MCIMAPFetchContentOperation.h46
-rw-r--r--src/async/imap/MCIMAPFetchFoldersOperation.cc77
-rw-r--r--src/async/imap/MCIMAPFetchFoldersOperation.h40
-rw-r--r--src/async/imap/MCIMAPFetchMessagesOperation.cc137
-rw-r--r--src/async/imap/MCIMAPFetchMessagesOperation.h58
-rw-r--r--src/async/imap/MCIMAPFetchNamespaceOperation.cc33
-rw-r--r--src/async/imap/MCIMAPFetchNamespaceOperation.h28
-rw-r--r--src/async/imap/MCIMAPFolderInfoOperation.cc60
-rw-r--r--src/async/imap/MCIMAPFolderInfoOperation.h39
-rw-r--r--src/async/imap/MCIMAPIdentityOperation.cc73
-rw-r--r--src/async/imap/MCIMAPIdentityOperation.h42
-rw-r--r--src/async/imap/MCIMAPIdleOperation.cc72
-rw-r--r--src/async/imap/MCIMAPIdleOperation.h39
-rw-r--r--src/async/imap/MCIMAPOperation.cc103
-rw-r--r--src/async/imap/MCIMAPOperation.h48
-rw-r--r--src/async/imap/MCIMAPOperationCallback.h24
-rw-r--r--src/async/imap/MCIMAPRenameFolderOperation.cc54
-rw-r--r--src/async/imap/MCIMAPRenameFolderOperation.h35
-rw-r--r--src/async/imap/MCIMAPSearchOperation.cc83
-rw-r--r--src/async/imap/MCIMAPSearchOperation.h46
-rw-r--r--src/async/imap/MCIMAPStoreFlagsOperation.cc75
-rw-r--r--src/async/imap/MCIMAPStoreFlagsOperation.h43
-rw-r--r--src/async/imap/MCIMAPStoreLabelsOperation.cc77
-rw-r--r--src/async/imap/MCIMAPStoreLabelsOperation.h43
-rw-r--r--src/async/imap/MCIMAPSubscribeFolderOperation.cc57
-rw-r--r--src/async/imap/MCIMAPSubscribeFolderOperation.h35
-rw-r--r--src/async/smtp/MCSMTPAsyncSession.cc14
-rw-r--r--src/async/smtp/MCSMTPAsyncSession.h12
-rw-r--r--src/async/smtp/MCSMTPSendWithDataOperation.cc1
-rw-r--r--src/async/smtp/MCSMTPSendWithDataOperation.h2
-rw-r--r--src/core/MCCore.h1
-rw-r--r--src/core/abstract/MCAbstractMessage.h1
-rw-r--r--src/core/abstract/MCAbstractMessagePart.h1
-rw-r--r--src/core/abstract/MCAbstractMultipart.h1
-rw-r--r--src/core/abstract/MCAbstractPart.h1
-rw-r--r--src/core/abstract/MCAddress.h1
-rw-r--r--src/core/abstract/MCMessageHeader.h1
-rw-r--r--src/core/basetypes/MCArray.h1
-rw-r--r--src/core/basetypes/MCData.h1
-rw-r--r--src/core/basetypes/MCHashMap.h1
-rw-r--r--src/core/basetypes/MCOperationQueue.cc6
-rw-r--r--src/core/basetypes/MCSet.h1
-rw-r--r--src/core/basetypes/MCString.h1
-rw-r--r--src/core/basetypes/MCValue.h1
-rw-r--r--src/core/imap/MCIMAPFolder.h1
-rw-r--r--src/core/imap/MCIMAPMessage.h1
-rw-r--r--src/core/imap/MCIMAPMessagePart.h1
-rw-r--r--src/core/imap/MCIMAPMultipart.h1
-rw-r--r--src/core/imap/MCIMAPNamespace.h1
-rw-r--r--src/core/imap/MCIMAPNamespaceItem.h1
-rw-r--r--src/core/imap/MCIMAPPart.h1
-rw-r--r--src/core/imap/MCIMAPSearchExpression.h3
-rw-r--r--src/core/imap/MCIMAPSession.cc11
-rw-r--r--src/core/imap/MCIMAPSession.h9
-rw-r--r--src/core/pop/MCPOPMessageInfo.h1
-rw-r--r--src/core/pop/MCPOPSession.h2
-rw-r--r--src/core/rfc822/MCAttachment.h1
-rw-r--r--src/core/rfc822/MCMessageBuilder.h1
-rw-r--r--src/core/rfc822/MCMessageParser.h1
-rw-r--r--src/core/rfc822/MCMessagePart.h1
-rw-r--r--src/core/rfc822/MCMultipart.h1
-rw-r--r--src/core/smtp/MCSMTPSession.h9
-rw-r--r--tests/main.mm47
81 files changed, 2866 insertions, 201 deletions
diff --git a/build-mac/mailcore2.xcodeproj/project.pbxproj b/build-mac/mailcore2.xcodeproj/project.pbxproj
index 921889e1..d4cfb285 100644
--- a/build-mac/mailcore2.xcodeproj/project.pbxproj
+++ b/build-mac/mailcore2.xcodeproj/project.pbxproj
@@ -7,6 +7,22 @@
objects = {
/* Begin PBXBuildFile section */
+ C62C6ED416A2A0E600737497 /* MCIMAPIdentityOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C62C6ED216A2A0E600737497 /* MCIMAPIdentityOperation.cc */; };
+ C62C6ED816A398FA00737497 /* MCIMAPFolderInfoOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C62C6ED616A398FA00737497 /* MCIMAPFolderInfoOperation.cc */; };
+ C62C6EDA16A3D60700737497 /* MCIMAPAsyncSession.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7FD16A295B500778456 /* MCIMAPAsyncSession.cc */; };
+ C62C6EDB16A3FC8700737497 /* MCIMAPOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7F016A15A4D00778456 /* MCIMAPOperation.h */; };
+ C62C6EE016A696AB00737497 /* MCAsyncIMAP.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7F916A15A9200778456 /* MCAsyncIMAP.h */; };
+ C62C6EE216A696B400737497 /* MCIMAPFetchFoldersOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7FB16A2959700778456 /* MCIMAPFetchFoldersOperation.h */; };
+ C62C6EE316A696EE00737497 /* MCIMAPAppendMessageOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA81016A299EB00778456 /* MCIMAPAppendMessageOperation.h */; };
+ C62C6EE416A696F600737497 /* MCIMAPCopyMessagesOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA81316A29A1000778456 /* MCIMAPCopyMessagesOperation.h */; };
+ C62C6EE516A6970400737497 /* MCIMAPFetchMessagesOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA81916A29ADB00778456 /* MCIMAPFetchMessagesOperation.h */; };
+ C62C6EE616A6970A00737497 /* MCIMAPFetchContentOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA81C16A29DC400778456 /* MCIMAPFetchContentOperation.h */; };
+ C62C6EE716A6971000737497 /* MCIMAPIdleOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA82816A29F0300778456 /* MCIMAPIdleOperation.h */; };
+ C62C6EE816A6971500737497 /* MCIMAPFolderInfoOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C62C6ED716A398FA00737497 /* MCIMAPFolderInfoOperation.h */; };
+ C62C6EE916A6971B00737497 /* MCIMAPSearchOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA82516A29EE300778456 /* MCIMAPSearchOperation.h */; };
+ C62C6EEA16A6972100737497 /* MCIMAPFetchNamespaceOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA82B16A2A01400778456 /* MCIMAPFetchNamespaceOperation.h */; };
+ C62C6EEB16A6972700737497 /* MCIMAPIdentityOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C62C6ED316A2A0E600737497 /* MCIMAPIdentityOperation.h */; };
+ C62C6EEC16A69D3D00737497 /* MCIMAPOperationCallback.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7F416A15A6300778456 /* MCIMAPOperationCallback.h */; };
C64EA6F4169E847800778456 /* MCAbstractMessage.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA694169E847800778456 /* MCAbstractMessage.cc */; };
C64EA6F6169E847800778456 /* MCAbstractMessagePart.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA696169E847800778456 /* MCAbstractMessagePart.cc */; };
C64EA6F8169E847800778456 /* MCAbstractMultipart.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA698169E847800778456 /* MCAbstractMultipart.cc */; };
@@ -44,7 +60,7 @@
C64EA740169E847800778456 /* MCMessageParser.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA6E4169E847800778456 /* MCMessageParser.cc */; };
C64EA742169E847800778456 /* MCMessagePart.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA6E6169E847800778456 /* MCMessagePart.cc */; };
C64EA744169E847800778456 /* MCMultipart.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA6E8169E847800778456 /* MCMultipart.cc */; };
- C64EA74C169E859600778456 /* IMAPAsyncSession.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA68C169E847800778456 /* IMAPAsyncSession.h */; };
+ C64EA74C169E859600778456 /* MCIMAPAsyncSession.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA68C169E847800778456 /* MCIMAPAsyncSession.h */; };
C64EA74D169E859600778456 /* MCSMTPAsyncSession.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA690169E847800778456 /* MCSMTPAsyncSession.h */; };
C64EA74E169E859600778456 /* MCAbstract.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA693169E847800778456 /* MCAbstract.h */; };
C64EA74F169E859600778456 /* MCAbstractMessage.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA695169E847800778456 /* MCAbstractMessage.h */; };
@@ -99,11 +115,9 @@
C64EA781169E89F600778456 /* MCSMTPSession.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA6EE169E847800778456 /* MCSMTPSession.cc */; };
C64EA783169F241300778456 /* MCCore.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA782169F23AB00778456 /* MCCore.h */; };
C64EA784169F24E400778456 /* MCSMTPAsyncSession.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA68F169E847800778456 /* MCSMTPAsyncSession.cc */; };
- C64EA787169F252C00778456 /* MCSMTPSendWithRecipientOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA785169F252C00778456 /* MCSMTPSendWithRecipientOperation.cc */; };
C64EA790169F259200778456 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C64EA78F169F259200778456 /* Foundation.framework */; };
C64EA79B169F259F00778456 /* libmailcore2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C64EA537169E772200778456 /* libmailcore2.a */; };
C64EA79E169F29A700778456 /* MCSMTPSendWithDataOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA79C169F29A700778456 /* MCSMTPSendWithDataOperation.cc */; };
- C64EA7A1169F29D900778456 /* MCSMTPSendWithBuilderOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA79F169F29D900778456 /* MCSMTPSendWithBuilderOperation.cc */; };
C64EA7A5169F2A6100778456 /* mailcore.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7A4169F2A3E00778456 /* mailcore.h */; };
C64EA7AB16A00AF600778456 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7AA16A00AF600778456 /* main.mm */; };
C64EA7B116A00BBB00778456 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C64EA7B016A00BBB00778456 /* CoreServices.framework */; };
@@ -113,6 +127,23 @@
C64EA7E616A14A6A00778456 /* MCAsyncSMTP.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7E316A149EF00778456 /* MCAsyncSMTP.h */; };
C64EA7E716A14A7400778456 /* MCSMTPOperationCallback.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64EA7E116A1425400778456 /* MCSMTPOperationCallback.h */; };
C64EA7EA16A154B300778456 /* MCSMTPCheckAccountOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7E816A154B000778456 /* MCSMTPCheckAccountOperation.cc */; };
+ C64EA7F116A15A4D00778456 /* MCIMAPOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7EF16A15A4D00778456 /* MCIMAPOperation.cc */; };
+ C64EA7F816A15A7800778456 /* MCIMAPCheckAccountOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7F616A15A7800778456 /* MCIMAPCheckAccountOperation.cc */; };
+ C64EA7FC16A2959800778456 /* MCIMAPFetchFoldersOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7FA16A2959700778456 /* MCIMAPFetchFoldersOperation.cc */; };
+ C64EA80216A295E400778456 /* MCIMAPRenameFolderOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA80016A295E200778456 /* MCIMAPRenameFolderOperation.cc */; };
+ C64EA80516A2997E00778456 /* MCIMAPDeleteFolderOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA80316A2997B00778456 /* MCIMAPDeleteFolderOperation.cc */; };
+ C64EA80816A2999A00778456 /* MCIMAPCreateFolderOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA80616A2999800778456 /* MCIMAPCreateFolderOperation.cc */; };
+ C64EA80B16A299B700778456 /* MCIMAPSubscribeFolderOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA80916A299B500778456 /* MCIMAPSubscribeFolderOperation.cc */; };
+ C64EA81116A299ED00778456 /* MCIMAPAppendMessageOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA80F16A299EA00778456 /* MCIMAPAppendMessageOperation.cc */; };
+ C64EA81416A29A2300778456 /* MCIMAPCopyMessagesOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA81216A29A0A00778456 /* MCIMAPCopyMessagesOperation.cc */; };
+ C64EA81716A29A8700778456 /* MCIMAPExpungeOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA81516A29A8500778456 /* MCIMAPExpungeOperation.cc */; };
+ C64EA81A16A29AF200778456 /* MCIMAPFetchMessagesOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA81816A29AD400778456 /* MCIMAPFetchMessagesOperation.cc */; };
+ C64EA81D16A29DC500778456 /* MCIMAPFetchContentOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA81B16A29DC100778456 /* MCIMAPFetchContentOperation.cc */; };
+ C64EA82016A29E4100778456 /* MCIMAPStoreFlagsOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA81E16A29E3D00778456 /* MCIMAPStoreFlagsOperation.cc */; };
+ C64EA82316A29E5300778456 /* MCIMAPStoreLabelsOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA82116A29E4F00778456 /* MCIMAPStoreLabelsOperation.cc */; };
+ C64EA82616A29EE500778456 /* MCIMAPSearchOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA82416A29EE000778456 /* MCIMAPSearchOperation.cc */; };
+ C64EA82916A29F2200778456 /* MCIMAPIdleOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA82716A29EF400778456 /* MCIMAPIdleOperation.cc */; };
+ C64EA82C16A2A08B00778456 /* MCIMAPFetchNamespaceOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA82A16A29FAA00778456 /* MCIMAPFetchNamespaceOperation.cc */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -132,16 +163,29 @@
dstPath = include/mailcore;
dstSubfolderSpec = 16;
files = (
- C64EA74C169E859600778456 /* IMAPAsyncSession.h in CopyFiles */,
+ C64EA74C169E859600778456 /* MCIMAPAsyncSession.h in CopyFiles */,
+ C62C6EE016A696AB00737497 /* MCAsyncIMAP.h in CopyFiles */,
C64EA74E169E859600778456 /* MCAbstract.h in CopyFiles */,
+ C62C6EE216A696B400737497 /* MCIMAPFetchFoldersOperation.h in CopyFiles */,
C64EA74F169E859600778456 /* MCAbstractMessage.h in CopyFiles */,
C64EA7E516A14A5400778456 /* MCAsync.h in CopyFiles */,
C64EA750169E859600778456 /* MCAbstractMessagePart.h in CopyFiles */,
+ C62C6EDB16A3FC8700737497 /* MCIMAPOperation.h in CopyFiles */,
C64EA751169E859600778456 /* MCAbstractMultipart.h in CopyFiles */,
C64EA752169E859600778456 /* MCAbstractPart.h in CopyFiles */,
+ C62C6EEC16A69D3D00737497 /* MCIMAPOperationCallback.h in CopyFiles */,
+ C62C6EE816A6971500737497 /* MCIMAPFolderInfoOperation.h in CopyFiles */,
+ C62C6EE516A6970400737497 /* MCIMAPFetchMessagesOperation.h in CopyFiles */,
+ C62C6EE916A6971B00737497 /* MCIMAPSearchOperation.h in CopyFiles */,
C64EA7A5169F2A6100778456 /* mailcore.h in CopyFiles */,
+ C62C6EE616A6970A00737497 /* MCIMAPFetchContentOperation.h in CopyFiles */,
+ C62C6EEB16A6972700737497 /* MCIMAPIdentityOperation.h in CopyFiles */,
+ C62C6EE316A696EE00737497 /* MCIMAPAppendMessageOperation.h in CopyFiles */,
C64EA7E716A14A7400778456 /* MCSMTPOperationCallback.h in CopyFiles */,
C64EA7E616A14A6A00778456 /* MCAsyncSMTP.h in CopyFiles */,
+ C62C6EEA16A6972100737497 /* MCIMAPFetchNamespaceOperation.h in CopyFiles */,
+ C62C6EE716A6971000737497 /* MCIMAPIdleOperation.h in CopyFiles */,
+ C62C6EE416A696F600737497 /* MCIMAPCopyMessagesOperation.h in CopyFiles */,
C64EA753169E859600778456 /* MCAddress.h in CopyFiles */,
C64EA754169E859600778456 /* MCMessageConstants.h in CopyFiles */,
C64EA755169E859600778456 /* MCMessageHeader.h in CopyFiles */,
@@ -205,8 +249,12 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ C62C6ED216A2A0E600737497 /* MCIMAPIdentityOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPIdentityOperation.cc; sourceTree = "<group>"; };
+ C62C6ED316A2A0E600737497 /* MCIMAPIdentityOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPIdentityOperation.h; sourceTree = "<group>"; };
+ C62C6ED616A398FA00737497 /* MCIMAPFolderInfoOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPFolderInfoOperation.cc; sourceTree = "<group>"; };
+ C62C6ED716A398FA00737497 /* MCIMAPFolderInfoOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPFolderInfoOperation.h; sourceTree = "<group>"; };
C64EA537169E772200778456 /* libmailcore2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmailcore2.a; sourceTree = BUILT_PRODUCTS_DIR; };
- C64EA68C169E847800778456 /* IMAPAsyncSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IMAPAsyncSession.h; sourceTree = "<group>"; };
+ C64EA68C169E847800778456 /* MCIMAPAsyncSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPAsyncSession.h; sourceTree = "<group>"; };
C64EA68F169E847800778456 /* MCSMTPAsyncSession.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCSMTPAsyncSession.cc; sourceTree = "<group>"; };
C64EA690169E847800778456 /* MCSMTPAsyncSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCSMTPAsyncSession.h; sourceTree = "<group>"; };
C64EA693169E847800778456 /* MCAbstract.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCAbstract.h; sourceTree = "<group>"; };
@@ -316,6 +364,43 @@
C64EA7E416A14A4500778456 /* MCAsync.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCAsync.h; sourceTree = "<group>"; };
C64EA7E816A154B000778456 /* MCSMTPCheckAccountOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCSMTPCheckAccountOperation.cc; sourceTree = "<group>"; };
C64EA7E916A154B200778456 /* MCSMTPCheckAccountOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCSMTPCheckAccountOperation.h; sourceTree = "<group>"; };
+ C64EA7EF16A15A4D00778456 /* MCIMAPOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPOperation.cc; sourceTree = "<group>"; };
+ C64EA7F016A15A4D00778456 /* MCIMAPOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPOperation.h; sourceTree = "<group>"; };
+ C64EA7F416A15A6300778456 /* MCIMAPOperationCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPOperationCallback.h; sourceTree = "<group>"; };
+ C64EA7F616A15A7800778456 /* MCIMAPCheckAccountOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPCheckAccountOperation.cc; sourceTree = "<group>"; };
+ C64EA7F716A15A7800778456 /* MCIMAPCheckAccountOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPCheckAccountOperation.h; sourceTree = "<group>"; };
+ C64EA7F916A15A9200778456 /* MCAsyncIMAP.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCAsyncIMAP.h; sourceTree = "<group>"; };
+ C64EA7FA16A2959700778456 /* MCIMAPFetchFoldersOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPFetchFoldersOperation.cc; sourceTree = "<group>"; };
+ C64EA7FB16A2959700778456 /* MCIMAPFetchFoldersOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPFetchFoldersOperation.h; sourceTree = "<group>"; };
+ C64EA7FD16A295B500778456 /* MCIMAPAsyncSession.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPAsyncSession.cc; sourceTree = "<group>"; };
+ C64EA80016A295E200778456 /* MCIMAPRenameFolderOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPRenameFolderOperation.cc; sourceTree = "<group>"; };
+ C64EA80116A295E300778456 /* MCIMAPRenameFolderOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPRenameFolderOperation.h; sourceTree = "<group>"; };
+ C64EA80316A2997B00778456 /* MCIMAPDeleteFolderOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPDeleteFolderOperation.cc; sourceTree = "<group>"; };
+ C64EA80416A2997D00778456 /* MCIMAPDeleteFolderOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPDeleteFolderOperation.h; sourceTree = "<group>"; };
+ C64EA80616A2999800778456 /* MCIMAPCreateFolderOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPCreateFolderOperation.cc; sourceTree = "<group>"; };
+ C64EA80716A2999900778456 /* MCIMAPCreateFolderOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPCreateFolderOperation.h; sourceTree = "<group>"; };
+ C64EA80916A299B500778456 /* MCIMAPSubscribeFolderOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPSubscribeFolderOperation.cc; sourceTree = "<group>"; };
+ C64EA80A16A299B600778456 /* MCIMAPSubscribeFolderOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPSubscribeFolderOperation.h; sourceTree = "<group>"; };
+ C64EA80F16A299EA00778456 /* MCIMAPAppendMessageOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPAppendMessageOperation.cc; sourceTree = "<group>"; };
+ C64EA81016A299EB00778456 /* MCIMAPAppendMessageOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPAppendMessageOperation.h; sourceTree = "<group>"; };
+ C64EA81216A29A0A00778456 /* MCIMAPCopyMessagesOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPCopyMessagesOperation.cc; sourceTree = "<group>"; };
+ C64EA81316A29A1000778456 /* MCIMAPCopyMessagesOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPCopyMessagesOperation.h; sourceTree = "<group>"; };
+ C64EA81516A29A8500778456 /* MCIMAPExpungeOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPExpungeOperation.cc; sourceTree = "<group>"; };
+ C64EA81616A29A8600778456 /* MCIMAPExpungeOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPExpungeOperation.h; sourceTree = "<group>"; };
+ C64EA81816A29AD400778456 /* MCIMAPFetchMessagesOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPFetchMessagesOperation.cc; sourceTree = "<group>"; };
+ C64EA81916A29ADB00778456 /* MCIMAPFetchMessagesOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPFetchMessagesOperation.h; sourceTree = "<group>"; };
+ C64EA81B16A29DC100778456 /* MCIMAPFetchContentOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPFetchContentOperation.cc; sourceTree = "<group>"; };
+ C64EA81C16A29DC400778456 /* MCIMAPFetchContentOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPFetchContentOperation.h; sourceTree = "<group>"; };
+ C64EA81E16A29E3D00778456 /* MCIMAPStoreFlagsOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPStoreFlagsOperation.cc; sourceTree = "<group>"; };
+ C64EA81F16A29E3F00778456 /* MCIMAPStoreFlagsOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPStoreFlagsOperation.h; sourceTree = "<group>"; };
+ C64EA82116A29E4F00778456 /* MCIMAPStoreLabelsOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPStoreLabelsOperation.cc; sourceTree = "<group>"; };
+ C64EA82216A29E5200778456 /* MCIMAPStoreLabelsOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPStoreLabelsOperation.h; sourceTree = "<group>"; };
+ C64EA82416A29EE000778456 /* MCIMAPSearchOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPSearchOperation.cc; sourceTree = "<group>"; };
+ C64EA82516A29EE300778456 /* MCIMAPSearchOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPSearchOperation.h; sourceTree = "<group>"; };
+ C64EA82716A29EF400778456 /* MCIMAPIdleOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPIdleOperation.cc; sourceTree = "<group>"; };
+ C64EA82816A29F0300778456 /* MCIMAPIdleOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPIdleOperation.h; sourceTree = "<group>"; };
+ C64EA82A16A29FAA00778456 /* MCIMAPFetchNamespaceOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPFetchNamespaceOperation.cc; sourceTree = "<group>"; };
+ C64EA82B16A2A01400778456 /* MCIMAPFetchNamespaceOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPFetchNamespaceOperation.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -339,6 +424,17 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ C62C6ED916A3D55E00737497 /* deprecated */ = {
+ isa = PBXGroup;
+ children = (
+ C64EA785169F252C00778456 /* MCSMTPSendWithRecipientOperation.cc */,
+ C64EA786169F252C00778456 /* MCSMTPSendWithRecipientOperation.h */,
+ C64EA79F169F29D900778456 /* MCSMTPSendWithBuilderOperation.cc */,
+ C64EA7A0169F29D900778456 /* MCSMTPSendWithBuilderOperation.h */,
+ );
+ name = deprecated;
+ sourceTree = "<group>";
+ };
C64EA52C169E772200778456 = {
isa = PBXGroup;
children = (
@@ -384,7 +480,48 @@
C64EA68B169E847800778456 /* imap */ = {
isa = PBXGroup;
children = (
- C64EA68C169E847800778456 /* IMAPAsyncSession.h */,
+ C64EA7F916A15A9200778456 /* MCAsyncIMAP.h */,
+ C64EA7FD16A295B500778456 /* MCIMAPAsyncSession.cc */,
+ C64EA68C169E847800778456 /* MCIMAPAsyncSession.h */,
+ C64EA7EF16A15A4D00778456 /* MCIMAPOperation.cc */,
+ C64EA7F016A15A4D00778456 /* MCIMAPOperation.h */,
+ C64EA7F416A15A6300778456 /* MCIMAPOperationCallback.h */,
+ C64EA7F616A15A7800778456 /* MCIMAPCheckAccountOperation.cc */,
+ C64EA7F716A15A7800778456 /* MCIMAPCheckAccountOperation.h */,
+ C64EA7FA16A2959700778456 /* MCIMAPFetchFoldersOperation.cc */,
+ C64EA7FB16A2959700778456 /* MCIMAPFetchFoldersOperation.h */,
+ C64EA80016A295E200778456 /* MCIMAPRenameFolderOperation.cc */,
+ C64EA80116A295E300778456 /* MCIMAPRenameFolderOperation.h */,
+ C64EA80316A2997B00778456 /* MCIMAPDeleteFolderOperation.cc */,
+ C64EA80416A2997D00778456 /* MCIMAPDeleteFolderOperation.h */,
+ C64EA80616A2999800778456 /* MCIMAPCreateFolderOperation.cc */,
+ C64EA80716A2999900778456 /* MCIMAPCreateFolderOperation.h */,
+ C64EA80916A299B500778456 /* MCIMAPSubscribeFolderOperation.cc */,
+ C64EA80A16A299B600778456 /* MCIMAPSubscribeFolderOperation.h */,
+ C64EA80F16A299EA00778456 /* MCIMAPAppendMessageOperation.cc */,
+ C64EA81016A299EB00778456 /* MCIMAPAppendMessageOperation.h */,
+ C64EA81216A29A0A00778456 /* MCIMAPCopyMessagesOperation.cc */,
+ C64EA81316A29A1000778456 /* MCIMAPCopyMessagesOperation.h */,
+ C64EA81516A29A8500778456 /* MCIMAPExpungeOperation.cc */,
+ C64EA81616A29A8600778456 /* MCIMAPExpungeOperation.h */,
+ C64EA81816A29AD400778456 /* MCIMAPFetchMessagesOperation.cc */,
+ C64EA81916A29ADB00778456 /* MCIMAPFetchMessagesOperation.h */,
+ C64EA81B16A29DC100778456 /* MCIMAPFetchContentOperation.cc */,
+ C64EA81C16A29DC400778456 /* MCIMAPFetchContentOperation.h */,
+ C64EA81E16A29E3D00778456 /* MCIMAPStoreFlagsOperation.cc */,
+ C64EA81F16A29E3F00778456 /* MCIMAPStoreFlagsOperation.h */,
+ C64EA82116A29E4F00778456 /* MCIMAPStoreLabelsOperation.cc */,
+ C64EA82216A29E5200778456 /* MCIMAPStoreLabelsOperation.h */,
+ C64EA82416A29EE000778456 /* MCIMAPSearchOperation.cc */,
+ C64EA82516A29EE300778456 /* MCIMAPSearchOperation.h */,
+ C64EA82716A29EF400778456 /* MCIMAPIdleOperation.cc */,
+ C64EA82816A29F0300778456 /* MCIMAPIdleOperation.h */,
+ C64EA82A16A29FAA00778456 /* MCIMAPFetchNamespaceOperation.cc */,
+ C64EA82B16A2A01400778456 /* MCIMAPFetchNamespaceOperation.h */,
+ C62C6ED216A2A0E600737497 /* MCIMAPIdentityOperation.cc */,
+ C62C6ED316A2A0E600737497 /* MCIMAPIdentityOperation.h */,
+ C62C6ED616A398FA00737497 /* MCIMAPFolderInfoOperation.cc */,
+ C62C6ED716A398FA00737497 /* MCIMAPFolderInfoOperation.h */,
);
path = imap;
sourceTree = "<group>";
@@ -399,14 +536,11 @@
C64EA68E169E847800778456 /* smtp */ = {
isa = PBXGroup;
children = (
+ C62C6ED916A3D55E00737497 /* deprecated */,
C64EA68F169E847800778456 /* MCSMTPAsyncSession.cc */,
C64EA690169E847800778456 /* MCSMTPAsyncSession.h */,
- C64EA785169F252C00778456 /* MCSMTPSendWithRecipientOperation.cc */,
- C64EA786169F252C00778456 /* MCSMTPSendWithRecipientOperation.h */,
C64EA79C169F29A700778456 /* MCSMTPSendWithDataOperation.cc */,
C64EA79D169F29A700778456 /* MCSMTPSendWithDataOperation.h */,
- C64EA79F169F29D900778456 /* MCSMTPSendWithBuilderOperation.cc */,
- C64EA7A0169F29D900778456 /* MCSMTPSendWithBuilderOperation.h */,
C64EA7D816A1386500778456 /* MCSMTPOperation.cc */,
C64EA7D916A1386600778456 /* MCSMTPOperation.h */,
C64EA7E116A1425400778456 /* MCSMTPOperationCallback.h */,
@@ -704,11 +838,29 @@
C64EA744169E847800778456 /* MCMultipart.cc in Sources */,
C64EA781169E89F600778456 /* MCSMTPSession.cc in Sources */,
C64EA784169F24E400778456 /* MCSMTPAsyncSession.cc in Sources */,
- C64EA787169F252C00778456 /* MCSMTPSendWithRecipientOperation.cc in Sources */,
C64EA79E169F29A700778456 /* MCSMTPSendWithDataOperation.cc in Sources */,
- C64EA7A1169F29D900778456 /* MCSMTPSendWithBuilderOperation.cc in Sources */,
C64EA7DA16A1386600778456 /* MCSMTPOperation.cc in Sources */,
C64EA7EA16A154B300778456 /* MCSMTPCheckAccountOperation.cc in Sources */,
+ C64EA7F116A15A4D00778456 /* MCIMAPOperation.cc in Sources */,
+ C64EA7F816A15A7800778456 /* MCIMAPCheckAccountOperation.cc in Sources */,
+ C64EA7FC16A2959800778456 /* MCIMAPFetchFoldersOperation.cc in Sources */,
+ C64EA80216A295E400778456 /* MCIMAPRenameFolderOperation.cc in Sources */,
+ C64EA80516A2997E00778456 /* MCIMAPDeleteFolderOperation.cc in Sources */,
+ C64EA80816A2999A00778456 /* MCIMAPCreateFolderOperation.cc in Sources */,
+ C64EA80B16A299B700778456 /* MCIMAPSubscribeFolderOperation.cc in Sources */,
+ C64EA81116A299ED00778456 /* MCIMAPAppendMessageOperation.cc in Sources */,
+ C64EA81416A29A2300778456 /* MCIMAPCopyMessagesOperation.cc in Sources */,
+ C64EA81716A29A8700778456 /* MCIMAPExpungeOperation.cc in Sources */,
+ C64EA81A16A29AF200778456 /* MCIMAPFetchMessagesOperation.cc in Sources */,
+ C64EA81D16A29DC500778456 /* MCIMAPFetchContentOperation.cc in Sources */,
+ C64EA82016A29E4100778456 /* MCIMAPStoreFlagsOperation.cc in Sources */,
+ C64EA82316A29E5300778456 /* MCIMAPStoreLabelsOperation.cc in Sources */,
+ C64EA82616A29EE500778456 /* MCIMAPSearchOperation.cc in Sources */,
+ C64EA82916A29F2200778456 /* MCIMAPIdleOperation.cc in Sources */,
+ C64EA82C16A2A08B00778456 /* MCIMAPFetchNamespaceOperation.cc in Sources */,
+ C62C6ED416A2A0E600737497 /* MCIMAPIdentityOperation.cc in Sources */,
+ C62C6ED816A398FA00737497 /* MCIMAPFolderInfoOperation.cc in Sources */,
+ C62C6EDA16A3D60700737497 /* MCIMAPAsyncSession.cc in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/src/async/imap/IMAPAsyncSession.h b/src/async/imap/IMAPAsyncSession.h
deleted file mode 100644
index 53438c7e..00000000
--- a/src/async/imap/IMAPAsyncSession.h
+++ /dev/null
@@ -1,122 +0,0 @@
-#ifndef __MAILCORE_MCIMAPASYNCSESSION_H
-
-#define __MAILCORE_MCIMAPASYNCSESSION_H
-
-#include <mailcore/CBaseTypes.h>
-#include <mailcore/MessageConstants.h>
-
-namespace mailcore {
-
- class IMAPOperation;
- class IMAPFetchFoldersOperation;
- class IMAPAppendOperation;
- class IMAPCopyOperation;
- class IMAPFetchMessagesOperation;
- class IMAPIdleOperation;
- class IMAPSession;
- class IMAPNamespace;
-
- class IMAPSession : public Object {
- private:
- String * mHostname;
- unsigned int mPort;
- String * mUsername;
- String * mPassword;
- AuthType mAuthType;
- ConnectionType mConnectionType;
- bool mCheckCertificateEnabled;
- bool mVoIPEnabled;
- char mDelimiter;
- IMAPNamespace * mDefaultNamespace;
-
- IMAPSession * mSession;
-
- public:
- IMAPAsyncSession();
- virtual ~IMAPAsyncSession();
-
- virtual String * className();
-
- virtual void setHostname(String * hostname);
- virtual String * hostname();
-
- virtual void setPort(unsigned int port);
- virtual unsigned int port();
-
- virtual void setUsername(String * login);
- virtual String * username();
-
- virtual void setPassword(String * password);
- virtual String * password();
-
- virtual void setAuthType(AuthType authType);
- virtual AuthType authType();
-
- virtual void setConnectionType(ConnectionType connectionType);
- virtual ConnectionType connectionType();
-
- virtual void setTimeout(time_t timeout);
- virtual time_t timeout();
-
- virtual void setCheckCertificateEnabled(bool enabled);
- virtual bool isCheckCertificateEnabled();
-
- virtual void setVoIPEnabled(bool enabled);
- virtual bool isVoIPEnabled();
-
- virtual void setDelimiter(char delimiter);
- virtual char delimiter();
-
- virtual void setDefaultNamespace(IMAPNamespace * ns);
- virtual IMAPNamespace * defaultNamespace();
-
- virtual IMAPOperation * select(String * folder);
-
- virtual IMAPFetchFoldersOperation * fetchSubscribedFolders();
- virtual IMAPFetchFoldersOperation * fetchAllFolders();
-
- virtual IMAPOperation * renameFolder(String * folder, String * otherName);
- virtual IMAPOperation * deleteFolder(String * folder, ErrorCode * pError);
- virtual IMAPOperation * createFolder(String * folder, ErrorCode * pError);
-
- virtual IMAPOperation * subscribeFolder(String * folder, ErrorCode * pError);
- virtual IMAPOperation * unsubscribeFolder(String * folder, ErrorCode * pError);
-
- virtual IMAPAppendOperation * appendMessage(String * folder, Data * messageData, MessageFlag flags);
-
- virtual IMAPCopyOperation * copyMessages(String * folder, Array * uidSet, String * destFolder);
-
- virtual IMAPOperation * expunge(String * folder);
-
- virtual IMAPFetchMessagesOperation * fetchMessagesByUID(String * folder, IMAPMessagesRequestKind requestKind,
- uint32_t firstUID, uint32_t lastUID);
- virtual IMAPFetchMessagesOperation * fetchMessagesByNumber(String * folder, IMAPMessagesRequestKind requestKind,
- uint32_t firstNumber, uint32_t lastNumber);
- virtual IMAPFetchMessagesOperation * fetchMessagesByUID(String * folder, IMAPMessagesRequestKind requestKind,
- Array * numbers);
- virtual IMAPFetchMessagesOperation * fetchMessagesByNumber(String * folder, IMAPMessagesRequestKind requestKind,
- Array * numbers);
- virtual IMAPFetchMessageOperation * fetchMessageByUID(String * folder, uint32_t uid);
- virtual IMAPFetchMessageOperation * fetchMessageAttachmentByUID(String * folder, uint32_t uid, String * partID,
- Encoding encoding, unsigned int expectedSize);
-
- virtual IMAPOperation * storeFlags(String * folder, Array * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags);
- virtual IMAPOperation * storeLabels(String * folder, Array * uids, IMAPStoreFlagsRequestKind kind, Array * labels);
-
- virtual IMAPSearchOperation * search(String * folder, IMAPSearchKind kind, String * searchString);
- virtual IMAPSearchOperation * search(String * folder, IMAPSearchExpression * expression);
-
- virtual IMAPIdleOperation * idle(String * folder, uint32_t lastKnownUID);
-
- virtual IMAPOperation * connect();
- virtual IMAPOperation * disconnect();
-
- virtual IMAPOperation * fetchNamespace();
-
- virtual IMAPOperation * login();
-
- virtual IMAPOperation * identity(String * vendor, String * name, String * version);
- };
-}
-
-#endif
diff --git a/src/async/imap/MCAsyncIMAP.h b/src/async/imap/MCAsyncIMAP.h
new file mode 100644
index 00000000..1391439b
--- /dev/null
+++ b/src/async/imap/MCAsyncIMAP.h
@@ -0,0 +1,29 @@
+//
+// MCAsyncIMAP.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef mailcore2_MCAsyncIMAP_h
+#define mailcore2_MCAsyncIMAP_h
+
+#include <mailcore/MCIMAPAsyncSession.h>
+#include <mailcore/MCIMAPOperation.h>
+#include <mailcore/MCIMAPFetchFoldersOperation.h>
+#include <mailcore/MCIMAPAppendMessageOperation.h>
+#include <mailcore/MCIMAPCopyMessagesOperation.h>
+#include <mailcore/MCIMAPFetchMessagesOperation.h>
+#include <mailcore/MCIMAPFetchContentOperation.h>
+#include <mailcore/MCIMAPIdleOperation.h>
+#include <mailcore/MCIMAPFolderInfoOperation.h>
+#include <mailcore/MCIMAPSession.h>
+#include <mailcore/MCIMAPNamespace.h>
+#include <mailcore/MCIMAPSearchOperation.h>
+#include <mailcore/MCIMAPSearchExpression.h>
+#include <mailcore/MCIMAPFetchNamespaceOperation.h>
+#include <mailcore/MCIMAPIdentityOperation.h>
+#include <mailcore/MCIMAPOperationCallback.h>
+
+#endif
diff --git a/src/async/imap/MCIMAPAppendMessageOperation.cc b/src/async/imap/MCIMAPAppendMessageOperation.cc
new file mode 100644
index 00000000..4026d2d8
--- /dev/null
+++ b/src/async/imap/MCIMAPAppendMessageOperation.cc
@@ -0,0 +1,71 @@
+//
+// MCIMAPAppendMessageOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPAppendMessageOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPAppendMessageOperation::IMAPAppendMessageOperation()
+{
+ mFolder = NULL;
+ mMessageData = NULL;
+ mFlags = MessageFlagNone;
+ mCreatedUID = 0;
+}
+
+IMAPAppendMessageOperation::~IMAPAppendMessageOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+ MC_SAFE_RELEASE(mMessageData);
+}
+
+void IMAPAppendMessageOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPAppendMessageOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPAppendMessageOperation::setMessageData(Data * messageData)
+{
+ MC_SAFE_REPLACE_RETAIN(Data, mMessageData, messageData);
+}
+
+Data * IMAPAppendMessageOperation::messageData()
+{
+ return mMessageData;
+}
+
+void IMAPAppendMessageOperation::setFlags(MessageFlag flags)
+{
+ mFlags = flags;
+}
+
+MessageFlag IMAPAppendMessageOperation::flags()
+{
+ return mFlags;
+}
+
+uint32_t IMAPAppendMessageOperation::createdUID()
+{
+ return mCreatedUID;
+}
+
+void IMAPAppendMessageOperation::main()
+{
+ ErrorCode error;
+ session()->session()->appendMessage(mFolder, mMessageData, mFlags, this, &mCreatedUID, &error);
+ setError(error);
+}
+
diff --git a/src/async/imap/MCIMAPAppendMessageOperation.h b/src/async/imap/MCIMAPAppendMessageOperation.h
new file mode 100644
index 00000000..bf8238e5
--- /dev/null
+++ b/src/async/imap/MCIMAPAppendMessageOperation.h
@@ -0,0 +1,43 @@
+//
+// MCIMAPAppendMessageOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPAppendMessageOperation__
+#define __mailcore2__MCIMAPAppendMessageOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+#include <mailcore/MCMessageConstants.h>
+
+namespace mailcore {
+
+ class IMAPAppendMessageOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+ Data * mMessageData;
+ MessageFlag mFlags;
+ uint32_t mCreatedUID;
+
+ public:
+ IMAPAppendMessageOperation();
+ virtual ~IMAPAppendMessageOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void setMessageData(Data * messageData);
+ virtual Data * messageData();
+
+ virtual void setFlags(MessageFlag flags);
+ virtual MessageFlag flags();
+
+ virtual uint32_t createdUID();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__MCIMAPAppendMessageOperation__) */
diff --git a/src/async/imap/MCIMAPAsyncSession.cc b/src/async/imap/MCIMAPAsyncSession.cc
new file mode 100644
index 00000000..6dfaaa22
--- /dev/null
+++ b/src/async/imap/MCIMAPAsyncSession.cc
@@ -0,0 +1,429 @@
+//
+// IMAPAsyncSession.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPAsyncSession.h"
+
+#include "MCIMAP.h"
+#include "MCIMAPFolderInfoOperation.h"
+#include "MCIMAPFetchFoldersOperation.h"
+#include "MCIMAPRenameFolderOperation.h"
+#include "MCIMAPDeleteFolderOperation.h"
+#include "MCIMAPCreateFolderOperation.h"
+#include "MCIMAPSubscribeFolderOperation.h"
+#include "MCIMAPExpungeOperation.h"
+#include "MCIMAPAppendMessageOperation.h"
+#include "MCIMAPCopyMessagesOperation.h"
+#include "MCIMAPFetchMessagesOperation.h"
+#include "MCIMAPFetchContentOperation.h"
+#include "MCIMAPFetchContentOperation.h"
+#include "MCIMAPStoreFlagsOperation.h"
+#include "MCIMAPStoreLabelsOperation.h"
+#include "MCIMAPSearchOperation.h"
+#include "MCIMAPCheckAccountOperation.h"
+#include "MCIMAPFetchNamespaceOperation.h"
+#include "MCIMAPIdleOperation.h"
+#include "MCIMAPIdentityOperation.h"
+
+using namespace mailcore;
+
+IMAPAsyncSession::IMAPAsyncSession()
+{
+ mSession = new IMAPSession();
+ mQueue = new OperationQueue();
+}
+
+IMAPAsyncSession::~IMAPAsyncSession()
+{
+ MC_SAFE_RELEASE(mDefaultNamespace);
+ MC_SAFE_RELEASE(mQueue);
+ MC_SAFE_RELEASE(mSession);
+}
+
+void IMAPAsyncSession::setHostname(String * hostname)
+{
+ mSession->setHostname(hostname);
+}
+
+String * IMAPAsyncSession::hostname()
+{
+ return mSession->hostname();
+}
+
+void IMAPAsyncSession::setPort(unsigned int port)
+{
+ mSession->setPort(port);
+}
+
+unsigned int IMAPAsyncSession::port()
+{
+ return mSession->port();
+}
+
+void IMAPAsyncSession::setUsername(String * username)
+{
+ mSession->setUsername(username);
+}
+
+String * IMAPAsyncSession::username()
+{
+ return mSession->username();
+}
+
+void IMAPAsyncSession::setPassword(String * password)
+{
+ mSession->setPassword(password);
+}
+
+String * IMAPAsyncSession::password()
+{
+ return mSession->password();
+}
+
+void IMAPAsyncSession::setAuthType(AuthType authType)
+{
+ mSession->setAuthType(authType);
+}
+
+AuthType IMAPAsyncSession::authType()
+{
+ return mSession->authType();
+}
+
+void IMAPAsyncSession::setConnectionType(ConnectionType connectionType)
+{
+ mSession->setConnectionType(connectionType);
+}
+
+ConnectionType IMAPAsyncSession::connectionType()
+{
+ return mSession->connectionType();
+}
+
+void IMAPAsyncSession::setTimeout(time_t timeout)
+{
+ mSession->setTimeout(timeout);
+}
+
+time_t IMAPAsyncSession::timeout()
+{
+ return mSession->timeout();
+}
+
+void IMAPAsyncSession::setCheckCertificateEnabled(bool enabled)
+{
+ mSession->setCheckCertificateEnabled(enabled);
+}
+
+bool IMAPAsyncSession::isCheckCertificateEnabled()
+{
+ return mSession->isCheckCertificateEnabled();
+}
+
+void IMAPAsyncSession::setVoIPEnabled(bool enabled)
+{
+ mSession->setVoIPEnabled(enabled);
+}
+
+bool IMAPAsyncSession::isVoIPEnabled()
+{
+ return mSession->isVoIPEnabled();
+}
+
+void IMAPAsyncSession::setDelimiter(char delimiter)
+{
+ mSession->setDelimiter(delimiter);
+ mDelimiter = delimiter;
+}
+
+char IMAPAsyncSession::delimiter()
+{
+ return mDelimiter;
+}
+
+void IMAPAsyncSession::setDefaultNamespace(IMAPNamespace * ns)
+{
+ mSession->setDefaultNamespace(ns);
+ MC_SAFE_REPLACE_RETAIN(IMAPNamespace, mDefaultNamespace, ns);
+}
+
+IMAPNamespace * IMAPAsyncSession::defaultNamespace()
+{
+ return mDefaultNamespace;
+}
+
+IMAPFolderInfoOperation * IMAPAsyncSession::folderInfoOperation(String * folder)
+{
+ IMAPFolderInfoOperation * op = new IMAPFolderInfoOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->autorelease();
+ return op;
+}
+
+IMAPFetchFoldersOperation * IMAPAsyncSession::fetchSubscribedFoldersOperation()
+{
+ IMAPFetchFoldersOperation * op = new IMAPFetchFoldersOperation();
+ op->setSession(this);
+ op->setFetchSubscribedEnabled(true);
+ op->autorelease();
+ return op;
+}
+
+IMAPFetchFoldersOperation * IMAPAsyncSession::fetchAllFoldersOperation()
+{
+ IMAPFetchFoldersOperation * op = new IMAPFetchFoldersOperation();
+ op->setSession(this);
+ op->autorelease();
+ return op;
+}
+
+IMAPOperation * IMAPAsyncSession::renameFolderOperation(String * folder, String * otherName)
+{
+ IMAPRenameFolderOperation * op = new IMAPRenameFolderOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setOtherName(otherName);
+ op->autorelease();
+ return op;
+}
+
+IMAPOperation * IMAPAsyncSession::deleteFolderOperation(String * folder)
+{
+ IMAPDeleteFolderOperation * op = new IMAPDeleteFolderOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->autorelease();
+ return op;
+}
+
+IMAPOperation * IMAPAsyncSession::createFolderOperation(String * folder)
+{
+ IMAPCreateFolderOperation * op = new IMAPCreateFolderOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->autorelease();
+ return op;
+}
+
+IMAPOperation * IMAPAsyncSession::subscribeFolderOperation(String * folder)
+{
+ IMAPSubscribeFolderOperation * op = new IMAPSubscribeFolderOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->autorelease();
+ return op;
+}
+
+IMAPOperation * IMAPAsyncSession::unsubscribeFolderOperation(String * folder)
+{
+ IMAPSubscribeFolderOperation * op = new IMAPSubscribeFolderOperation();
+ op->setSession(this);
+ op->setUnsubscribeEnabled(true);
+ op->setFolder(folder);
+ op->autorelease();
+ return op;
+}
+
+IMAPAppendMessageOperation * IMAPAsyncSession::appendMessageOperation(String * folder, Data * messageData, MessageFlag flags)
+{
+ IMAPAppendMessageOperation * op = new IMAPAppendMessageOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setMessageData(messageData);
+ op->setFlags(flags);
+ op->autorelease();
+ return op;
+}
+
+IMAPCopyMessagesOperation * IMAPAsyncSession::copyMessagesOperation(String * folder, Array * uids, String * destFolder)
+{
+ IMAPCopyMessagesOperation * op = new IMAPCopyMessagesOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setUids(uids);
+ op->setDestFolder(destFolder);
+ op->autorelease();
+ return op;
+}
+
+IMAPOperation * IMAPAsyncSession::expungeOperation(String * folder)
+{
+ IMAPExpungeOperation * op = new IMAPExpungeOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->autorelease();
+ return op;
+}
+
+IMAPFetchMessagesOperation * IMAPAsyncSession::fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind,
+ uint32_t firstUID, uint32_t lastUID)
+{
+ IMAPFetchMessagesOperation * op = new IMAPFetchMessagesOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setKind(requestKind);
+ op->setFetchByUidEnabled(true);
+ op->setFirst(firstUID);
+ op->setLast(lastUID);
+ op->autorelease();
+ return op;
+}
+
+IMAPFetchMessagesOperation * IMAPAsyncSession::fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind,
+ uint32_t firstNumber, uint32_t lastNumber)
+{
+ IMAPFetchMessagesOperation * op = new IMAPFetchMessagesOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setKind(requestKind);
+ op->setFirst(firstNumber);
+ op->setLast(lastNumber);
+ op->autorelease();
+ return op;
+}
+
+IMAPFetchMessagesOperation * IMAPAsyncSession::fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind,
+ Array * uids)
+{
+ IMAPFetchMessagesOperation * op = new IMAPFetchMessagesOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setKind(requestKind);
+ op->setFetchByUidEnabled(true);
+ op->setUids(uids);
+ op->autorelease();
+ return op;
+}
+
+IMAPFetchMessagesOperation * IMAPAsyncSession::fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind,
+ Array * numbers)
+{
+ IMAPFetchMessagesOperation * op = new IMAPFetchMessagesOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setKind(requestKind);
+ op->setNumbers(numbers);
+ op->autorelease();
+ return op;
+}
+
+IMAPFetchContentOperation * IMAPAsyncSession::fetchMessageByUIDOperation(String * folder, uint32_t uid)
+{
+ IMAPFetchContentOperation * op = new IMAPFetchContentOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setUid(uid);
+ op->autorelease();
+ return op;
+}
+
+IMAPFetchContentOperation * IMAPAsyncSession::fetchMessageAttachmentByUIDOperation(String * folder, uint32_t uid, String * partID,
+ Encoding encoding, unsigned int expectedSize)
+{
+ IMAPFetchContentOperation * op = new IMAPFetchContentOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setUid(uid);
+ op->setPartID(partID);
+ op->setEncoding(encoding);
+ op->autorelease();
+ return op;
+}
+
+IMAPOperation * IMAPAsyncSession::storeFlagsOperation(String * folder, Array * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags)
+{
+ IMAPStoreFlagsOperation * op = new IMAPStoreFlagsOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setUids(uids);
+ op->setKind(kind);
+ op->setFlags(flags);
+ op->autorelease();
+ return op;
+}
+
+IMAPOperation * IMAPAsyncSession::storeLabelsOperation(String * folder, Array * uids, IMAPStoreFlagsRequestKind kind, Array * labels)
+{
+ IMAPStoreLabelsOperation * op = new IMAPStoreLabelsOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setUids(uids);
+ op->setKind(kind);
+ op->setLabels(labels);
+ op->autorelease();
+ return op;
+}
+
+IMAPSearchOperation * IMAPAsyncSession::searchOperation(String * folder, IMAPSearchKind kind, String * searchString)
+{
+ IMAPSearchOperation * op = new IMAPSearchOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setSearchKind(kind);
+ op->setSearchString(searchString);
+ op->autorelease();
+ return op;
+}
+
+IMAPSearchOperation * IMAPAsyncSession::searchOperation(String * folder, IMAPSearchExpression * expression)
+{
+ IMAPSearchOperation * op = new IMAPSearchOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setSearchExpression(expression);
+ op->autorelease();
+ return op;
+}
+
+IMAPIdleOperation * IMAPAsyncSession::idleOperation(String * folder, uint32_t lastKnownUID)
+{
+ IMAPIdleOperation * op = new IMAPIdleOperation();
+ op->setSession(this);
+ op->setFolder(folder);
+ op->setLastKnownUID(lastKnownUID);
+ op->autorelease();
+ return op;
+}
+
+IMAPFetchNamespaceOperation * IMAPAsyncSession::fetchNamespaceOperation()
+{
+ IMAPFetchNamespaceOperation * op = new IMAPFetchNamespaceOperation();
+ op->setSession(this);
+ op->autorelease();
+ return op;
+}
+
+IMAPIdentityOperation * IMAPAsyncSession::identityOperation(String * vendor, String * name, String * version)
+{
+ IMAPIdentityOperation * op = new IMAPIdentityOperation();
+ op->setSession(this);
+ op->setVendor(vendor);
+ op->setName(name);
+ op->setVersion(version);
+ op->autorelease();
+ return op;
+}
+
+IMAPOperation * IMAPAsyncSession::checkAccountOperation()
+{
+ IMAPCheckAccountOperation * op = new IMAPCheckAccountOperation();
+ op->setSession(this);
+ op->autorelease();
+ return op;
+}
+
+IMAPSession * IMAPAsyncSession::session()
+{
+ return mSession;
+}
+
+void IMAPAsyncSession::runOperation(IMAPOperation * operation)
+{
+ // TODO: disconnect after delay
+ mQueue->addOperation(operation);
+}
diff --git a/src/async/imap/MCIMAPAsyncSession.h b/src/async/imap/MCIMAPAsyncSession.h
new file mode 100644
index 00000000..6628e80a
--- /dev/null
+++ b/src/async/imap/MCIMAPAsyncSession.h
@@ -0,0 +1,121 @@
+#ifndef __MAILCORE_MCIMAPASYNCSESSION_H
+
+#define __MAILCORE_MCIMAPASYNCSESSION_H
+
+#include <mailcore/MCBaseTypes.h>
+#include <mailcore/MCMessageConstants.h>
+
+namespace mailcore {
+
+ class IMAPOperation;
+ class IMAPFetchFoldersOperation;
+ class IMAPAppendMessageOperation;
+ class IMAPCopyMessagesOperation;
+ class IMAPFetchMessagesOperation;
+ class IMAPFetchContentOperation;
+ class IMAPIdleOperation;
+ class IMAPFolderInfoOperation;
+ class IMAPSession;
+ class IMAPNamespace;
+ class IMAPSearchOperation;
+ class IMAPSearchExpression;
+ class IMAPFetchNamespaceOperation;
+ class IMAPIdentityOperation;
+
+ class IMAPAsyncSession : public Object {
+ private:
+ IMAPSession * mSession;
+ OperationQueue * mQueue;
+ char mDelimiter;
+ IMAPNamespace * mDefaultNamespace;
+
+ void queue(IMAPOperation * op);
+
+ public:
+ IMAPAsyncSession();
+ virtual ~IMAPAsyncSession();
+
+ virtual void setHostname(String * hostname);
+ virtual String * hostname();
+
+ virtual void setPort(unsigned int port);
+ virtual unsigned int port();
+
+ virtual void setUsername(String * username);
+ virtual String * username();
+
+ virtual void setPassword(String * password);
+ virtual String * password();
+
+ virtual void setAuthType(AuthType authType);
+ virtual AuthType authType();
+
+ virtual void setConnectionType(ConnectionType connectionType);
+ virtual ConnectionType connectionType();
+
+ virtual void setTimeout(time_t timeout);
+ virtual time_t timeout();
+
+ virtual void setCheckCertificateEnabled(bool enabled);
+ virtual bool isCheckCertificateEnabled();
+
+ virtual void setVoIPEnabled(bool enabled);
+ virtual bool isVoIPEnabled();
+
+ virtual void setDelimiter(char delimiter);
+ virtual char delimiter();
+
+ virtual void setDefaultNamespace(IMAPNamespace * ns);
+ virtual IMAPNamespace * defaultNamespace();
+
+ virtual IMAPFolderInfoOperation * folderInfoOperation(String * folder);
+
+ virtual IMAPFetchFoldersOperation * fetchSubscribedFoldersOperation();
+ virtual IMAPFetchFoldersOperation * fetchAllFoldersOperation();
+
+ virtual IMAPOperation * renameFolderOperation(String * folder, String * otherName);
+ virtual IMAPOperation * deleteFolderOperation(String * folder);
+ virtual IMAPOperation * createFolderOperation(String * folder);
+
+ virtual IMAPOperation * subscribeFolderOperation(String * folder);
+ virtual IMAPOperation * unsubscribeFolderOperation(String * folder);
+
+ virtual IMAPAppendMessageOperation * appendMessageOperation(String * folder, Data * messageData, MessageFlag flags);
+
+ virtual IMAPCopyMessagesOperation * copyMessagesOperation(String * folder, Array * uids, String * destFolder);
+
+ virtual IMAPOperation * expungeOperation(String * folder);
+
+ virtual IMAPFetchMessagesOperation * fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind,
+ uint32_t firstUID, uint32_t lastUID);
+ virtual IMAPFetchMessagesOperation * fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind,
+ uint32_t firstNumber, uint32_t lastNumber);
+ virtual IMAPFetchMessagesOperation * fetchMessagesByUIDOperation(String * folder, IMAPMessagesRequestKind requestKind,
+ Array * numbers);
+ virtual IMAPFetchMessagesOperation * fetchMessagesByNumberOperation(String * folder, IMAPMessagesRequestKind requestKind,
+ Array * numbers);
+ virtual IMAPFetchContentOperation * fetchMessageByUIDOperation(String * folder, uint32_t uid);
+ virtual IMAPFetchContentOperation * fetchMessageAttachmentByUIDOperation(String * folder, uint32_t uid, String * partID,
+ Encoding encoding, unsigned int expectedSize);
+
+ virtual IMAPOperation * storeFlagsOperation(String * folder, Array * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags);
+ virtual IMAPOperation * storeLabelsOperation(String * folder, Array * uids, IMAPStoreFlagsRequestKind kind, Array * labels);
+
+ virtual IMAPSearchOperation * searchOperation(String * folder, IMAPSearchKind kind, String * searchString);
+ virtual IMAPSearchOperation * searchOperation(String * folder, IMAPSearchExpression * expression);
+
+ virtual IMAPIdleOperation * idleOperation(String * folder, uint32_t lastKnownUID);
+
+ virtual IMAPFetchNamespaceOperation * fetchNamespaceOperation();
+
+ virtual IMAPIdentityOperation * identityOperation(String * vendor, String * name, String * version);
+
+ virtual IMAPOperation * checkAccountOperation();
+
+ // private
+ virtual void runOperation(IMAPOperation * operation);
+ virtual IMAPSession * session();
+ };
+}
+
+#endif
diff --git a/src/async/imap/MCIMAPCheckAccountOperation.cc b/src/async/imap/MCIMAPCheckAccountOperation.cc
new file mode 100644
index 00000000..c494dad7
--- /dev/null
+++ b/src/async/imap/MCIMAPCheckAccountOperation.cc
@@ -0,0 +1,21 @@
+//
+// MCIMAPCheckAccountOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPCheckAccountOperation.h"
+
+#include "MCIMAPAsyncSession.h"
+#include "MCIMAPSession.h"
+
+using namespace mailcore;
+
+void IMAPCheckAccountOperation::main()
+{
+ ErrorCode error;
+ session()->session()->login(&error);
+ setError(error);
+}
diff --git a/src/async/imap/MCIMAPCheckAccountOperation.h b/src/async/imap/MCIMAPCheckAccountOperation.h
new file mode 100644
index 00000000..e69a9898
--- /dev/null
+++ b/src/async/imap/MCIMAPCheckAccountOperation.h
@@ -0,0 +1,24 @@
+//
+// MCIMAPCheckAccountOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPCheckAccountOperation__
+#define __mailcore2__MCIMAPCheckAccountOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPCheckAccountOperation : public IMAPOperation {
+ private:
+
+ public:
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__MCIMAPCheckAccountOperation__) */
diff --git a/src/async/imap/MCIMAPCopyMessagesOperation.cc b/src/async/imap/MCIMAPCopyMessagesOperation.cc
new file mode 100644
index 00000000..b7321d97
--- /dev/null
+++ b/src/async/imap/MCIMAPCopyMessagesOperation.cc
@@ -0,0 +1,75 @@
+//
+// MCIMAPCopyMessagesOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPCopyMessagesOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPCopyMessagesOperation::IMAPCopyMessagesOperation()
+{
+ mFolder = NULL;
+ mUids = NULL;
+ mDestFolder = NULL;
+ mDestUids = NULL;
+}
+
+IMAPCopyMessagesOperation::~IMAPCopyMessagesOperation()
+{
+ MC_SAFE_RELEASE(mDestUids);
+ MC_SAFE_RELEASE(mFolder);
+ MC_SAFE_RELEASE(mUids);
+ MC_SAFE_RELEASE(mDestFolder);
+}
+
+void IMAPCopyMessagesOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPCopyMessagesOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPCopyMessagesOperation::setUids(Array * uids)
+{
+ MC_SAFE_REPLACE_RETAIN(Array, mUids, uids);
+}
+
+Array * IMAPCopyMessagesOperation::uids()
+{
+ return mUids;
+}
+
+Array * IMAPCopyMessagesOperation::destUids()
+{
+ return mDestUids;
+}
+
+void IMAPCopyMessagesOperation::setDestFolder(String * destFolder)
+{
+ MC_SAFE_REPLACE_COPY(String, mDestFolder, destFolder);
+}
+
+String * IMAPCopyMessagesOperation::destFolder()
+{
+ return mDestFolder;
+}
+
+void IMAPCopyMessagesOperation::main()
+{
+ ErrorCode error;
+ session()->session()->copyMessages(mFolder, mUids, mDestFolder, &mDestUids, &error);
+ if (mDestUids != NULL) {
+ mDestUids->retain();
+ }
+ setError(error);
+}
diff --git a/src/async/imap/MCIMAPCopyMessagesOperation.h b/src/async/imap/MCIMAPCopyMessagesOperation.h
new file mode 100644
index 00000000..4dd279dd
--- /dev/null
+++ b/src/async/imap/MCIMAPCopyMessagesOperation.h
@@ -0,0 +1,42 @@
+//
+// MCIMAPCopyMessagesOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPCopyMessagesOperation__
+#define __mailcore2__MCIMAPCopyMessagesOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPCopyMessagesOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+ Array * mUids;
+ String * mDestFolder;
+ Array * mDestUids;
+
+ public:
+ IMAPCopyMessagesOperation();
+ virtual ~IMAPCopyMessagesOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void setDestFolder(String * destFolder);
+ virtual String * destFolder();
+
+ virtual void setUids(Array * uids);
+ virtual Array * uids();
+
+ virtual Array * destUids();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__MCIMAPCopyMessagesOperation__) */
diff --git a/src/async/imap/MCIMAPCreateFolderOperation.cc b/src/async/imap/MCIMAPCreateFolderOperation.cc
new file mode 100644
index 00000000..bdf76c91
--- /dev/null
+++ b/src/async/imap/MCIMAPCreateFolderOperation.cc
@@ -0,0 +1,41 @@
+//
+// MCIMAPCreateFolderOperation.cpp
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPCreateFolderOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPCreateFolderOperation::IMAPCreateFolderOperation()
+{
+ mFolder = NULL;
+}
+
+IMAPCreateFolderOperation::~IMAPCreateFolderOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+}
+
+void IMAPCreateFolderOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPCreateFolderOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPCreateFolderOperation::main()
+{
+ ErrorCode error;
+ session()->session()->createFolder(mFolder, &error);
+ setError(error);
+}
diff --git a/src/async/imap/MCIMAPCreateFolderOperation.h b/src/async/imap/MCIMAPCreateFolderOperation.h
new file mode 100644
index 00000000..4b242696
--- /dev/null
+++ b/src/async/imap/MCIMAPCreateFolderOperation.h
@@ -0,0 +1,31 @@
+//
+// MCIMAPCreateFolderOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPCreateFolderOperation__
+#define __mailcore2__MCIMAPCreateFolderOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPCreateFolderOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+
+ public:
+ IMAPCreateFolderOperation();
+ virtual ~IMAPCreateFolderOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__MCIMAPCreateFolderOperation__) */
diff --git a/src/async/imap/MCIMAPDeleteFolderOperation.cc b/src/async/imap/MCIMAPDeleteFolderOperation.cc
new file mode 100644
index 00000000..e3541480
--- /dev/null
+++ b/src/async/imap/MCIMAPDeleteFolderOperation.cc
@@ -0,0 +1,41 @@
+//
+// MCIMAPDeleteFolderOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPDeleteFolderOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPDeleteFolderOperation::IMAPDeleteFolderOperation()
+{
+ mFolder = NULL;
+}
+
+IMAPDeleteFolderOperation::~IMAPDeleteFolderOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+}
+
+void IMAPDeleteFolderOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPDeleteFolderOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPDeleteFolderOperation::main()
+{
+ ErrorCode error;
+ session()->session()->deleteFolder(mFolder, &error);
+ setError(error);
+}
diff --git a/src/async/imap/MCIMAPDeleteFolderOperation.h b/src/async/imap/MCIMAPDeleteFolderOperation.h
new file mode 100644
index 00000000..96d0873c
--- /dev/null
+++ b/src/async/imap/MCIMAPDeleteFolderOperation.h
@@ -0,0 +1,31 @@
+//
+// MCIMAPDeleteFolderOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPDeleteFolderOperation__
+#define __mailcore2__MCIMAPDeleteFolderOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPDeleteFolderOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+
+ public:
+ IMAPDeleteFolderOperation();
+ virtual ~IMAPDeleteFolderOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__MCIMAPDeleteFolderOperation__) */
diff --git a/src/async/imap/MCIMAPExpungeOperation.cc b/src/async/imap/MCIMAPExpungeOperation.cc
new file mode 100644
index 00000000..c0abee70
--- /dev/null
+++ b/src/async/imap/MCIMAPExpungeOperation.cc
@@ -0,0 +1,41 @@
+//
+// MCIMAPExpungeOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPExpungeOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPExpungeOperation::IMAPExpungeOperation()
+{
+ mFolder = NULL;
+}
+
+IMAPExpungeOperation::~IMAPExpungeOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+}
+
+void IMAPExpungeOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPExpungeOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPExpungeOperation::main()
+{
+ ErrorCode error;
+ session()->session()->expunge(mFolder, &error);
+ setError(error);
+}
diff --git a/src/async/imap/MCIMAPExpungeOperation.h b/src/async/imap/MCIMAPExpungeOperation.h
new file mode 100644
index 00000000..4f3bde19
--- /dev/null
+++ b/src/async/imap/MCIMAPExpungeOperation.h
@@ -0,0 +1,31 @@
+//
+// MCIMAPExpungeOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPExpungeOperation__
+#define __mailcore2__MCIMAPExpungeOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPExpungeOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+
+ public:
+ IMAPExpungeOperation();
+ virtual ~IMAPExpungeOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__MCIMAPExpungeOperation__) */
diff --git a/src/async/imap/MCIMAPFetchContentOperation.cc b/src/async/imap/MCIMAPFetchContentOperation.cc
new file mode 100644
index 00000000..ed0d1375
--- /dev/null
+++ b/src/async/imap/MCIMAPFetchContentOperation.cc
@@ -0,0 +1,89 @@
+//
+// IMAPFetchContentOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPFetchContentOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPFetchContentOperation::IMAPFetchContentOperation()
+{
+ mFolder = NULL;
+ mUid = 0;
+ mPartID = NULL;
+ mEncoding = Encoding7Bit;
+ mData = NULL;
+}
+
+IMAPFetchContentOperation::~IMAPFetchContentOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+ MC_SAFE_RELEASE(mPartID);
+ MC_SAFE_RELEASE(mData);
+}
+
+void IMAPFetchContentOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPFetchContentOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPFetchContentOperation::setUid(uint32_t uid)
+{
+ mUid = uid;
+}
+
+uint32_t IMAPFetchContentOperation::uid()
+{
+ return mUid;
+}
+
+void IMAPFetchContentOperation::setPartID(String * partID)
+{
+ MC_SAFE_REPLACE_COPY(String, mPartID, partID);
+}
+
+String * IMAPFetchContentOperation::partID()
+{
+ return mPartID;
+}
+
+void IMAPFetchContentOperation::setEncoding(Encoding encoding)
+{
+ mEncoding = encoding;
+}
+
+Encoding IMAPFetchContentOperation::encoding()
+{
+ return mEncoding;
+}
+
+Data * IMAPFetchContentOperation::data()
+{
+ return mData;
+}
+
+void IMAPFetchContentOperation::main()
+{
+ ErrorCode error;
+ if (mPartID != NULL) {
+ mData = session()->session()->fetchMessageAttachmentByUID(mFolder, mUid, mPartID, mEncoding, this, &error);
+ }
+ else {
+ mData = session()->session()->fetchMessageByUID(mFolder, mUid, this, &error);
+ }
+ MC_SAFE_RETAIN(mData);
+ setError(error);
+}
+
diff --git a/src/async/imap/MCIMAPFetchContentOperation.h b/src/async/imap/MCIMAPFetchContentOperation.h
new file mode 100644
index 00000000..732bcdf4
--- /dev/null
+++ b/src/async/imap/MCIMAPFetchContentOperation.h
@@ -0,0 +1,46 @@
+//
+// IMAPFetchContentOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__IMAPFetchContentOperation__
+#define __mailcore2__IMAPFetchContentOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPFetchContentOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+ uint32_t mUid;
+ String * mPartID;
+ Encoding mEncoding;
+ Data * mData;
+
+ public:
+ IMAPFetchContentOperation();
+ virtual ~IMAPFetchContentOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void setUid(uint32_t uid);
+ virtual uint32_t uid();
+
+ virtual void setPartID(String * partID);
+ virtual String * partID();
+
+ virtual void setEncoding(Encoding encoding);
+ virtual Encoding encoding();
+
+ virtual Data * data();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__IMAPFetchContentOperation__) */
diff --git a/src/async/imap/MCIMAPFetchFoldersOperation.cc b/src/async/imap/MCIMAPFetchFoldersOperation.cc
new file mode 100644
index 00000000..55d3ae4e
--- /dev/null
+++ b/src/async/imap/MCIMAPFetchFoldersOperation.cc
@@ -0,0 +1,77 @@
+//
+// MCIMAPFetchFoldersOperation.cpp
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPFetchFoldersOperation.h"
+
+#include <stdlib.h>
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPFetchFoldersOperation::IMAPFetchFoldersOperation()
+{
+ mFolder = NULL;
+ mFetchSubscribedEnabled = false;
+ mFolders = NULL;
+}
+
+IMAPFetchFoldersOperation::~IMAPFetchFoldersOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+}
+
+void IMAPFetchFoldersOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPFetchFoldersOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPFetchFoldersOperation::setFetchSubscribedEnabled(bool enabled)
+{
+ mFetchSubscribedEnabled = enabled;
+}
+
+bool IMAPFetchFoldersOperation::isFetchSubscribedEnabled()
+{
+ return mFetchSubscribedEnabled;
+}
+
+Array * IMAPFetchFoldersOperation::folders()
+{
+ return mFolders;
+}
+
+void IMAPFetchFoldersOperation::main()
+{
+ ErrorCode error;
+ if (mFetchSubscribedEnabled) {
+ mFolders = session()->session()->fetchSubscribedFolders(&error);
+ }
+ else {
+ mFolders = session()->session()->fetchAllFolders(&error);
+ }
+ MC_SAFE_RETAIN(mFolders);
+ setError(error);
+
+ char * delimiterData = (char *) malloc(1);
+ * delimiterData = session()->session()->delimiter();
+ session()->performMethodOnMainThread((Object::Method) &IMAPFetchFoldersOperation::setDelimiterDataOnMainThread,
+ delimiterData);
+ free(delimiterData);
+}
+
+void IMAPFetchFoldersOperation::setDelimiterDataOnMainThread(char * delimiterData)
+{
+ session()->setDelimiter(* delimiterData);
+}
diff --git a/src/async/imap/MCIMAPFetchFoldersOperation.h b/src/async/imap/MCIMAPFetchFoldersOperation.h
new file mode 100644
index 00000000..8d31e370
--- /dev/null
+++ b/src/async/imap/MCIMAPFetchFoldersOperation.h
@@ -0,0 +1,40 @@
+//
+// MCIMAPFetchFoldersOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPFetchFoldersOperation__
+#define __mailcore2__MCIMAPFetchFoldersOperation__
+
+#include <mailcore/MCBaseTypes.h>
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPFetchFoldersOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+ bool mFetchSubscribedEnabled;
+ Array * mFolders;
+ void setDelimiterDataOnMainThread(char * delimiterData);
+
+ public:
+ IMAPFetchFoldersOperation();
+ virtual ~IMAPFetchFoldersOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void setFetchSubscribedEnabled(bool enabled);
+ virtual bool isFetchSubscribedEnabled();
+
+ virtual Array * folders();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__MCIMAPFetchFoldersOperation__) */
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);
+}
diff --git a/src/async/imap/MCIMAPFetchMessagesOperation.h b/src/async/imap/MCIMAPFetchMessagesOperation.h
new file mode 100644
index 00000000..03abbf2a
--- /dev/null
+++ b/src/async/imap/MCIMAPFetchMessagesOperation.h
@@ -0,0 +1,58 @@
+//
+// IMAPFetchMessagesOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__IMAPFetchMessagesOperation__
+#define __mailcore2__IMAPFetchMessagesOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPFetchMessagesOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+ bool mFetchByUidEnabled;
+ uint32_t mFirst;
+ uint32_t mLast;
+ Array * mUids;
+ Array * mNumbers;
+ IMAPMessagesRequestKind mKind;
+ Array * mMessages;
+
+ public:
+ IMAPFetchMessagesOperation();
+ virtual ~IMAPFetchMessagesOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void setFetchByUidEnabled(bool enabled);
+ virtual bool isFetchByUidEnabled();
+
+ virtual void setFirst(uint32_t first);
+ virtual uint32_t first();
+
+ virtual void setLast(uint32_t last);
+ virtual uint32_t last();
+
+ virtual void setUids(Array * uids);
+ virtual Array * uids();
+
+ virtual void setNumbers(Array * numbers);
+ virtual Array * numbers();
+
+ virtual void setKind(IMAPMessagesRequestKind kind);
+ virtual IMAPMessagesRequestKind kind();
+
+ virtual Array * messages();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__IMAPFetchMessagesOperation__) */
diff --git a/src/async/imap/MCIMAPFetchNamespaceOperation.cc b/src/async/imap/MCIMAPFetchNamespaceOperation.cc
new file mode 100644
index 00000000..5aea5237
--- /dev/null
+++ b/src/async/imap/MCIMAPFetchNamespaceOperation.cc
@@ -0,0 +1,33 @@
+//
+// IMAPFetchNamespaceOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPFetchNamespaceOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPFetchNamespaceOperation::IMAPFetchNamespaceOperation()
+{
+ mNamespaces = NULL;
+}
+
+IMAPFetchNamespaceOperation::~IMAPFetchNamespaceOperation()
+{
+ MC_SAFE_RELEASE(mNamespaces);
+}
+
+void IMAPFetchNamespaceOperation::main()
+{
+ ErrorCode error;
+ mNamespaces = session()->session()->fetchNamespace(&error);
+ setError(error);
+ mNamespaces->retain();
+}
+
diff --git a/src/async/imap/MCIMAPFetchNamespaceOperation.h b/src/async/imap/MCIMAPFetchNamespaceOperation.h
new file mode 100644
index 00000000..c80d0830
--- /dev/null
+++ b/src/async/imap/MCIMAPFetchNamespaceOperation.h
@@ -0,0 +1,28 @@
+//
+// IMAPFetchNamespaceOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__IMAPFetchNamespaceOperation__
+#define __mailcore2__IMAPFetchNamespaceOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPFetchNamespaceOperation : public IMAPOperation {
+ HashMap * mNamespaces;
+ private:
+
+ public:
+ IMAPFetchNamespaceOperation();
+ virtual ~IMAPFetchNamespaceOperation();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__IMAPFetchNamespaceOperation__) */
diff --git a/src/async/imap/MCIMAPFolderInfoOperation.cc b/src/async/imap/MCIMAPFolderInfoOperation.cc
new file mode 100644
index 00000000..3f2970e3
--- /dev/null
+++ b/src/async/imap/MCIMAPFolderInfoOperation.cc
@@ -0,0 +1,60 @@
+//
+// MCIMAPFolderInfoOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/13/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPFolderInfoOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPFolderInfoOperation::IMAPFolderInfoOperation()
+{
+ mFolder = NULL;
+ mUidNext = 0;
+ mUidValidity = 0;
+ mMessageCount = 0;
+}
+
+IMAPFolderInfoOperation::~IMAPFolderInfoOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+}
+
+void IMAPFolderInfoOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPFolderInfoOperation::folder()
+{
+ return mFolder;
+}
+
+uint32_t IMAPFolderInfoOperation::uidNext()
+{
+ return mUidNext;
+}
+
+uint32_t IMAPFolderInfoOperation::uidValidity()
+{
+ return mUidValidity;
+}
+
+int IMAPFolderInfoOperation::messageCount()
+{
+ return mMessageCount;
+}
+
+void IMAPFolderInfoOperation::main()
+{
+ ErrorCode error;
+ session()->session()->select(mFolder, &error);
+ setError(error);
+}
+
diff --git a/src/async/imap/MCIMAPFolderInfoOperation.h b/src/async/imap/MCIMAPFolderInfoOperation.h
new file mode 100644
index 00000000..0f6e1224
--- /dev/null
+++ b/src/async/imap/MCIMAPFolderInfoOperation.h
@@ -0,0 +1,39 @@
+//
+// MCIMAPFolderInfoOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/13/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPFolderInfoOperation__
+#define __mailcore2__MCIMAPFolderInfoOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPFolderInfoOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+ uint32_t mUidNext;
+ uint32_t mUidValidity;
+ int mMessageCount;
+
+ public:
+ IMAPFolderInfoOperation();
+ virtual ~IMAPFolderInfoOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual uint32_t uidNext();
+ virtual uint32_t uidValidity();
+ virtual int messageCount();
+
+ virtual void main();
+ };
+
+}
+
+#endif /* defined(__mailcore2__MCIMAPFolderInfoOperation__) */
diff --git a/src/async/imap/MCIMAPIdentityOperation.cc b/src/async/imap/MCIMAPIdentityOperation.cc
new file mode 100644
index 00000000..16ffd6a4
--- /dev/null
+++ b/src/async/imap/MCIMAPIdentityOperation.cc
@@ -0,0 +1,73 @@
+//
+// IMAPIdentityOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPIdentityOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPIdentityOperation::IMAPIdentityOperation()
+{
+ mVendor = NULL;
+ mName = NULL;
+ mVersion = NULL;
+ mServerIdentity = NULL;
+}
+
+IMAPIdentityOperation::~IMAPIdentityOperation()
+{
+ MC_SAFE_RELEASE(mVendor);
+ MC_SAFE_RELEASE(mName);
+ MC_SAFE_RELEASE(mVersion);
+ MC_SAFE_RELEASE(mServerIdentity);
+}
+
+void IMAPIdentityOperation::setVendor(String * vendor)
+{
+ MC_SAFE_REPLACE_COPY(String, mVendor, vendor);
+}
+
+String * IMAPIdentityOperation::vendor()
+{
+ return mVendor;
+}
+
+void IMAPIdentityOperation::setName(String * name)
+{
+ MC_SAFE_REPLACE_COPY(String, mName, name);
+}
+
+String * IMAPIdentityOperation::name()
+{
+ return mName;
+}
+
+void IMAPIdentityOperation::setVersion(String * version)
+{
+ MC_SAFE_REPLACE_COPY(String, mVersion, version);
+}
+
+String * IMAPIdentityOperation::version()
+{
+ return mVersion;
+}
+
+HashMap * IMAPIdentityOperation::serverIdentity()
+{
+ return mServerIdentity;
+}
+
+void IMAPIdentityOperation::main()
+{
+ ErrorCode error;
+ mServerIdentity = session()->session()->identity(mVendor, mName, mVersion, &error);
+ setError(error);
+}
+
diff --git a/src/async/imap/MCIMAPIdentityOperation.h b/src/async/imap/MCIMAPIdentityOperation.h
new file mode 100644
index 00000000..c0015472
--- /dev/null
+++ b/src/async/imap/MCIMAPIdentityOperation.h
@@ -0,0 +1,42 @@
+//
+// IMAPIdentityOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__IMAPIdentityOperation__
+#define __mailcore2__IMAPIdentityOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPIdentityOperation : public IMAPOperation {
+ private:
+ String * mVendor;
+ String * mName;
+ String * mVersion;
+ HashMap * mServerIdentity;
+
+ public:
+ IMAPIdentityOperation();
+ virtual ~IMAPIdentityOperation();
+
+ virtual void setVendor(String * vendor);
+ virtual String * vendor();
+
+ virtual void setName(String * name);
+ virtual String * name();
+
+ virtual void setVersion(String * version);
+ virtual String * version();
+
+ virtual HashMap * serverIdentity();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__IMAPIdentityOperation__) */
diff --git a/src/async/imap/MCIMAPIdleOperation.cc b/src/async/imap/MCIMAPIdleOperation.cc
new file mode 100644
index 00000000..16c9461a
--- /dev/null
+++ b/src/async/imap/MCIMAPIdleOperation.cc
@@ -0,0 +1,72 @@
+//
+// IMAPIdleOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPIdleOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPIdleOperation::IMAPIdleOperation()
+{
+ mFolder = NULL;
+ mLastKnownUid = 0;
+}
+
+IMAPIdleOperation::~IMAPIdleOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+}
+
+void IMAPIdleOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPIdleOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPIdleOperation::setLastKnownUID(uint32_t uid)
+{
+ mLastKnownUid = uid;
+}
+
+uint32_t IMAPIdleOperation::lastKnownUID()
+{
+ return mLastKnownUid;
+}
+
+void IMAPIdleOperation::prepare()
+{
+ session()->session()->setupIdle();
+}
+
+void IMAPIdleOperation::unprepare()
+{
+ session()->session()->unsetupIdle();
+}
+
+void IMAPIdleOperation::main()
+{
+ performMethodOnMainThread((Object::Method) &IMAPIdleOperation::prepare, NULL);
+
+ ErrorCode error;
+ session()->session()->idle(mFolder, mLastKnownUid, &error);
+ setError(error);
+
+ performMethodOnMainThread((Object::Method) &IMAPIdleOperation::unprepare, NULL);
+}
+
+void IMAPIdleOperation::cancel()
+{
+ session()->session()->interruptIdle();
+}
+
diff --git a/src/async/imap/MCIMAPIdleOperation.h b/src/async/imap/MCIMAPIdleOperation.h
new file mode 100644
index 00000000..b369cda2
--- /dev/null
+++ b/src/async/imap/MCIMAPIdleOperation.h
@@ -0,0 +1,39 @@
+//
+// IMAPIdleOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__IMAPIdleOperation__
+#define __mailcore2__IMAPIdleOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPIdleOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+ uint32_t mLastKnownUid;
+ void prepare();
+ void unprepare();
+
+ public:
+ IMAPIdleOperation();
+ virtual ~IMAPIdleOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void setLastKnownUID(uint32_t uid);
+ virtual uint32_t lastKnownUID();
+
+ virtual void cancel();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__IMAPIdleOperation__) */
diff --git a/src/async/imap/MCIMAPOperation.cc b/src/async/imap/MCIMAPOperation.cc
new file mode 100644
index 00000000..8dfb7a1a
--- /dev/null
+++ b/src/async/imap/MCIMAPOperation.cc
@@ -0,0 +1,103 @@
+//
+// MCIMAPOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPOperation.h"
+
+#include <stdlib.h>
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+#include "MCIMAPOperationCallback.h"
+
+using namespace mailcore;
+
+IMAPOperation::IMAPOperation()
+{
+ mSession = NULL;
+ mImapCallback = NULL;
+ mError = ErrorNone;
+}
+
+IMAPOperation::~IMAPOperation()
+{
+ MC_SAFE_RELEASE(mSession);
+}
+
+void IMAPOperation::setSession(IMAPAsyncSession * session)
+{
+ MC_SAFE_REPLACE_RETAIN(IMAPAsyncSession, mSession, session);
+}
+
+IMAPAsyncSession * IMAPOperation::session()
+{
+ return mSession;
+}
+
+void IMAPOperation::setImapCallback(IMAPOperationCallback * callback)
+{
+ mImapCallback = callback;
+}
+
+IMAPOperationCallback * IMAPOperation::imapCallback()
+{
+ return mImapCallback;
+}
+
+void IMAPOperation::setError(ErrorCode error)
+{
+ mError = error;
+}
+
+ErrorCode IMAPOperation::error()
+{
+ return mError;
+}
+
+void IMAPOperation::start()
+{
+ mSession->runOperation(this);
+}
+
+struct progressContext {
+ unsigned int current;
+ unsigned int maximum;
+};
+
+void IMAPOperation::bodyProgress(IMAPSession * 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) &IMAPOperation::bodyProgressOnMainThread, context);
+}
+
+void IMAPOperation::bodyProgressOnMainThread(void * ctx)
+{
+ struct progressContext * context = (struct progressContext *) ctx;
+ if (mImapCallback != NULL) {
+ mImapCallback->bodyProgress(this, context->current, context->maximum);
+ }
+ free(context);
+}
+
+void IMAPOperation::itemsProgress(IMAPSession * 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) &IMAPOperation::itemsProgressOnMainThread, context);
+}
+
+void IMAPOperation::itemsProgressOnMainThread(void * ctx)
+{
+ struct progressContext * context = (struct progressContext *) ctx;
+ if (mImapCallback != NULL) {
+ mImapCallback->itemProgress(this, context->current, context->maximum);
+ }
+ free(context);
+}
diff --git a/src/async/imap/MCIMAPOperation.h b/src/async/imap/MCIMAPOperation.h
new file mode 100644
index 00000000..3d9d06eb
--- /dev/null
+++ b/src/async/imap/MCIMAPOperation.h
@@ -0,0 +1,48 @@
+//
+// MCIMAPOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPOperation__
+#define __mailcore2__MCIMAPOperation__
+
+#include <mailcore/MCBaseTypes.h>
+#include <mailcore/MCIMAPProgressCallback.h>
+
+namespace mailcore {
+
+ class IMAPAsyncSession;
+ class IMAPOperationCallback;
+
+ class IMAPOperation : public Operation, public IMAPProgressCallback {
+ IMAPAsyncSession * mSession;
+ IMAPOperationCallback * mImapCallback;
+ ErrorCode mError;
+ private:
+ virtual void bodyProgress(IMAPSession * session, unsigned int current, unsigned int maximum);
+ virtual void bodyProgressOnMainThread(void * context);
+ virtual void itemsProgress(IMAPSession * session, unsigned int current, unsigned int maximum);
+ virtual void itemsProgressOnMainThread(void * context);
+
+ public:
+ IMAPOperation();
+ virtual ~IMAPOperation();
+
+ virtual void setSession(IMAPAsyncSession * session);
+ virtual IMAPAsyncSession * session();
+
+ virtual void setImapCallback(IMAPOperationCallback * callback);
+ virtual IMAPOperationCallback * imapCallback();
+
+ virtual void setError(ErrorCode error);
+ virtual ErrorCode error();
+
+ virtual void start();
+ };
+
+}
+
+#endif /* defined(__mailcore2__MCIMAPOperation__) */
diff --git a/src/async/imap/MCIMAPOperationCallback.h b/src/async/imap/MCIMAPOperationCallback.h
new file mode 100644
index 00000000..6274297a
--- /dev/null
+++ b/src/async/imap/MCIMAPOperationCallback.h
@@ -0,0 +1,24 @@
+//
+// MCIMAPOperationCallback.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPOperationCallback__
+#define __mailcore2__MCIMAPOperationCallback__
+
+namespace mailcore {
+
+ class IMAPOperation;
+
+ class IMAPOperationCallback {
+ public:
+ virtual void bodyProgress(IMAPOperation * session, unsigned int current, unsigned int maximum) {};
+ virtual void itemProgress(IMAPOperation * session, unsigned int current, unsigned int maximum) {};
+ };
+
+}
+
+#endif /* defined(__mailcore2__MCIMAPOperationCallback__) */
diff --git a/src/async/imap/MCIMAPRenameFolderOperation.cc b/src/async/imap/MCIMAPRenameFolderOperation.cc
new file mode 100644
index 00000000..891cd571
--- /dev/null
+++ b/src/async/imap/MCIMAPRenameFolderOperation.cc
@@ -0,0 +1,54 @@
+//
+// MCIMAPRenameFolderOperation.cpp
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPRenameFolderOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPRenameFolderOperation::IMAPRenameFolderOperation()
+{
+ mFolder = NULL;
+ mOtherName = NULL;
+}
+
+IMAPRenameFolderOperation::~IMAPRenameFolderOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+ MC_SAFE_RELEASE(mOtherName);
+}
+
+void IMAPRenameFolderOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPRenameFolderOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPRenameFolderOperation::setOtherName(String * otherName)
+{
+ MC_SAFE_REPLACE_COPY(String, mOtherName, otherName);
+}
+
+String * IMAPRenameFolderOperation::otherName()
+{
+ return mOtherName;
+}
+
+void IMAPRenameFolderOperation::main()
+{
+ ErrorCode error;
+ session()->session()->renameFolder(mFolder, mOtherName, &error);
+ setError(error);
+}
+
diff --git a/src/async/imap/MCIMAPRenameFolderOperation.h b/src/async/imap/MCIMAPRenameFolderOperation.h
new file mode 100644
index 00000000..ddd07432
--- /dev/null
+++ b/src/async/imap/MCIMAPRenameFolderOperation.h
@@ -0,0 +1,35 @@
+//
+// MCIMAPRenameFolderOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPRenameFolderOperation__
+#define __mailcore2__MCIMAPRenameFolderOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPRenameFolderOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+ String * mOtherName;
+
+ public:
+ IMAPRenameFolderOperation();
+ ~IMAPRenameFolderOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void setOtherName(String * otherName);
+ virtual String * otherName();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__MCIMAPRenameFolderOperation__) */
diff --git a/src/async/imap/MCIMAPSearchOperation.cc b/src/async/imap/MCIMAPSearchOperation.cc
new file mode 100644
index 00000000..395d3924
--- /dev/null
+++ b/src/async/imap/MCIMAPSearchOperation.cc
@@ -0,0 +1,83 @@
+//
+// IMAPSearchOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPSearchOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+#include "MCIMAPSearchExpression.h"
+
+using namespace mailcore;
+
+IMAPSearchOperation::IMAPSearchOperation()
+{
+ mFolder = NULL;
+ mKind = IMAPSearchKindNone;
+ mSearchString = NULL;
+ mExpression = NULL;
+}
+
+IMAPSearchOperation::~IMAPSearchOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+ MC_SAFE_RELEASE(mSearchString);
+ MC_SAFE_RELEASE(mExpression);
+}
+
+void IMAPSearchOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPSearchOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPSearchOperation::setSearchKind(IMAPSearchKind kind)
+{
+ mKind = kind;
+}
+
+IMAPSearchKind IMAPSearchOperation::searchKind()
+{
+ return mKind;
+}
+
+void IMAPSearchOperation::setSearchString(String * searchString)
+{
+ MC_SAFE_REPLACE_COPY(String, mSearchString, searchString);
+}
+
+String * IMAPSearchOperation::searchString()
+{
+ return mSearchString;
+}
+
+void IMAPSearchOperation::setSearchExpression(IMAPSearchExpression * expression)
+{
+ MC_SAFE_REPLACE_RETAIN(IMAPSearchExpression, mExpression, expression);
+}
+
+IMAPSearchExpression * IMAPSearchOperation::searchExpression()
+{
+ return mExpression;
+}
+
+void IMAPSearchOperation::main()
+{
+ ErrorCode error;
+ if (mExpression != NULL) {
+ session()->session()->search(mFolder, mExpression, &error);
+ }
+ else {
+ session()->session()->search(mFolder, mKind, mSearchString, &error);
+ }
+ setError(error);
+}
+
diff --git a/src/async/imap/MCIMAPSearchOperation.h b/src/async/imap/MCIMAPSearchOperation.h
new file mode 100644
index 00000000..cf93d1a9
--- /dev/null
+++ b/src/async/imap/MCIMAPSearchOperation.h
@@ -0,0 +1,46 @@
+//
+// IMAPSearchOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__IMAPSearchOperation__
+#define __mailcore2__IMAPSearchOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+#include <mailcore/MCMessageConstants.h>
+
+namespace mailcore {
+
+ class IMAPSearchExpression;
+
+ class IMAPSearchOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+ IMAPSearchKind mKind;
+ String * mSearchString;
+ IMAPSearchExpression * mExpression;
+
+ public:
+ IMAPSearchOperation();
+ virtual ~IMAPSearchOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void setSearchKind(IMAPSearchKind kind);
+ virtual IMAPSearchKind searchKind();
+
+ virtual void setSearchString(String * searchString);
+ virtual String * searchString();
+
+ virtual void setSearchExpression(IMAPSearchExpression * expression);
+ virtual IMAPSearchExpression * searchExpression();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__IMAPSearchOperation__) */
diff --git a/src/async/imap/MCIMAPStoreFlagsOperation.cc b/src/async/imap/MCIMAPStoreFlagsOperation.cc
new file mode 100644
index 00000000..82123631
--- /dev/null
+++ b/src/async/imap/MCIMAPStoreFlagsOperation.cc
@@ -0,0 +1,75 @@
+//
+// MCIMAPStoreFlagsOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPStoreFlagsOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPStoreFlagsOperation::IMAPStoreFlagsOperation()
+{
+ mFolder = NULL;
+ mUids = NULL;
+ mKind = IMAPStoreFlagsRequestKindAdd;
+ mFlags = MessageFlagNone;
+}
+
+IMAPStoreFlagsOperation::~IMAPStoreFlagsOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+ MC_SAFE_RELEASE(mUids);
+}
+
+void IMAPStoreFlagsOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPStoreFlagsOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPStoreFlagsOperation::setUids(Array * uids)
+{
+ MC_SAFE_REPLACE_RETAIN(Array, mUids, uids);
+}
+
+Array * IMAPStoreFlagsOperation::uids()
+{
+ return mUids;
+}
+
+void IMAPStoreFlagsOperation::setKind(IMAPStoreFlagsRequestKind kind)
+{
+ mKind = kind;
+}
+
+IMAPStoreFlagsRequestKind IMAPStoreFlagsOperation::kind()
+{
+ return mKind;
+}
+
+void IMAPStoreFlagsOperation::setFlags(MessageFlag flags)
+{
+ mFlags = flags;
+}
+
+MessageFlag IMAPStoreFlagsOperation::flags()
+{
+ return mFlags;
+}
+
+void IMAPStoreFlagsOperation::main()
+{
+ ErrorCode error;
+ session()->session()->storeFlags(mFolder, mUids, mKind, mFlags, &error);
+ setError(error);
+}
diff --git a/src/async/imap/MCIMAPStoreFlagsOperation.h b/src/async/imap/MCIMAPStoreFlagsOperation.h
new file mode 100644
index 00000000..b087db9e
--- /dev/null
+++ b/src/async/imap/MCIMAPStoreFlagsOperation.h
@@ -0,0 +1,43 @@
+//
+// MCIMAPStoreFlagsOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPStoreFlagsOperation__
+#define __mailcore2__MCIMAPStoreFlagsOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPStoreFlagsOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+ Array * mUids;
+ IMAPStoreFlagsRequestKind mKind;
+ MessageFlag mFlags;
+
+ public:
+ IMAPStoreFlagsOperation();
+ virtual ~IMAPStoreFlagsOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void setUids(Array * uids);
+ virtual Array * uids();
+
+ virtual void setKind(IMAPStoreFlagsRequestKind kind);
+ virtual IMAPStoreFlagsRequestKind kind();
+
+ virtual void setFlags(MessageFlag flags);
+ virtual MessageFlag flags();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__MCIMAPStoreFlagsOperation__) */
diff --git a/src/async/imap/MCIMAPStoreLabelsOperation.cc b/src/async/imap/MCIMAPStoreLabelsOperation.cc
new file mode 100644
index 00000000..dcafc175
--- /dev/null
+++ b/src/async/imap/MCIMAPStoreLabelsOperation.cc
@@ -0,0 +1,77 @@
+//
+// MCIMAPStoreLabelsOperation.cc
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPStoreLabelsOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPStoreLabelsOperation::IMAPStoreLabelsOperation()
+{
+ mFolder = NULL;
+ mUids = NULL;
+ mKind = IMAPStoreFlagsRequestKindAdd;
+ mLabels = NULL;
+}
+
+IMAPStoreLabelsOperation::~IMAPStoreLabelsOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+ MC_SAFE_RELEASE(mUids);
+ MC_SAFE_RELEASE(mLabels);
+}
+
+void IMAPStoreLabelsOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPStoreLabelsOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPStoreLabelsOperation::setUids(Array * uids)
+{
+ MC_SAFE_REPLACE_RETAIN(Array, mUids, uids);
+}
+
+Array * IMAPStoreLabelsOperation::uids()
+{
+ return mUids;
+}
+
+void IMAPStoreLabelsOperation::setKind(IMAPStoreFlagsRequestKind kind)
+{
+ mKind = kind;
+}
+
+IMAPStoreFlagsRequestKind IMAPStoreLabelsOperation::kind()
+{
+ return mKind;
+}
+
+void IMAPStoreLabelsOperation::setLabels(Array * labels)
+{
+ MC_SAFE_REPLACE_RETAIN(Array, mLabels, labels);
+}
+
+Array * IMAPStoreLabelsOperation::labels()
+{
+ return mLabels;
+}
+
+void IMAPStoreLabelsOperation::main()
+{
+ ErrorCode error;
+ session()->session()->storeLabels(mFolder, mUids, mKind, mLabels, &error);
+ setError(error);
+}
+
diff --git a/src/async/imap/MCIMAPStoreLabelsOperation.h b/src/async/imap/MCIMAPStoreLabelsOperation.h
new file mode 100644
index 00000000..fcfc7f95
--- /dev/null
+++ b/src/async/imap/MCIMAPStoreLabelsOperation.h
@@ -0,0 +1,43 @@
+//
+// MCIMAPStoreLabelsOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPStoreLabelsOperation__
+#define __mailcore2__MCIMAPStoreLabelsOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPStoreLabelsOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+ Array * mUids;
+ IMAPStoreFlagsRequestKind mKind;
+ Array * mLabels;
+
+ public:
+ IMAPStoreLabelsOperation();
+ virtual ~IMAPStoreLabelsOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void setUids(Array * uids);
+ virtual Array * uids();
+
+ virtual void setKind(IMAPStoreFlagsRequestKind kind);
+ virtual IMAPStoreFlagsRequestKind kind();
+
+ virtual void setLabels(Array * labels);
+ virtual Array * labels();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__MCIMAPStoreLabelsOperation__) */
diff --git a/src/async/imap/MCIMAPSubscribeFolderOperation.cc b/src/async/imap/MCIMAPSubscribeFolderOperation.cc
new file mode 100644
index 00000000..d7449fba
--- /dev/null
+++ b/src/async/imap/MCIMAPSubscribeFolderOperation.cc
@@ -0,0 +1,57 @@
+//
+// MCIMAPSubscribeFolderOperation.cpp
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#include "MCIMAPSubscribeFolderOperation.h"
+
+#include "MCIMAPSession.h"
+#include "MCIMAPAsyncSession.h"
+
+using namespace mailcore;
+
+IMAPSubscribeFolderOperation::IMAPSubscribeFolderOperation()
+{
+ mFolder = NULL;
+ mUnsubscribeEnabled = false;
+}
+
+IMAPSubscribeFolderOperation::~IMAPSubscribeFolderOperation()
+{
+ MC_SAFE_RELEASE(mFolder);
+}
+
+void IMAPSubscribeFolderOperation::setFolder(String * folder)
+{
+ MC_SAFE_REPLACE_COPY(String, mFolder, folder);
+}
+
+String * IMAPSubscribeFolderOperation::folder()
+{
+ return mFolder;
+}
+
+void IMAPSubscribeFolderOperation::setUnsubscribeEnabled(bool enabled)
+{
+ mUnsubscribeEnabled = enabled;
+}
+
+bool IMAPSubscribeFolderOperation::isUnsubscribeEnabled()
+{
+ return mUnsubscribeEnabled;
+}
+
+void IMAPSubscribeFolderOperation::main()
+{
+ ErrorCode error;
+ if (mUnsubscribeEnabled) {
+ session()->session()->unsubscribeFolder(mFolder, &error);
+ }
+ else {
+ session()->session()->subscribeFolder(mFolder, &error);
+ }
+ setError(error);
+}
diff --git a/src/async/imap/MCIMAPSubscribeFolderOperation.h b/src/async/imap/MCIMAPSubscribeFolderOperation.h
new file mode 100644
index 00000000..92b97d15
--- /dev/null
+++ b/src/async/imap/MCIMAPSubscribeFolderOperation.h
@@ -0,0 +1,35 @@
+//
+// MCIMAPSubscribeFolderOperation.h
+// mailcore2
+//
+// Created by DINH Viêt Hoà on 1/12/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#ifndef __mailcore2__MCIMAPSubscribeFolderOperation__
+#define __mailcore2__MCIMAPSubscribeFolderOperation__
+
+#include <mailcore/MCIMAPOperation.h>
+
+namespace mailcore {
+
+ class IMAPSubscribeFolderOperation : public IMAPOperation {
+ private:
+ String * mFolder;
+ bool mUnsubscribeEnabled;
+
+ public:
+ IMAPSubscribeFolderOperation();
+ virtual ~IMAPSubscribeFolderOperation();
+
+ virtual void setFolder(String * folder);
+ virtual String * folder();
+
+ virtual void setUnsubscribeEnabled(bool enabled);
+ virtual bool isUnsubscribeEnabled();
+
+ virtual void main();
+ };
+}
+
+#endif /* defined(__mailcore2__MCIMAPSubscribeFolderOperation__) */
diff --git a/src/async/smtp/MCSMTPAsyncSession.cc b/src/async/smtp/MCSMTPAsyncSession.cc
index e996e0e7..95aa0907 100644
--- a/src/async/smtp/MCSMTPAsyncSession.cc
+++ b/src/async/smtp/MCSMTPAsyncSession.cc
@@ -1,9 +1,9 @@
#include "MCSMTPAsyncSession.h"
#include "MCSMTPSession.h"
-#include "MCSMTPSendWithRecipientOperation.h"
+//#include "MCSMTPSendWithRecipientOperation.h"
#include "MCSMTPSendWithDataOperation.h"
-#include "MCSMTPSendWithBuilderOperation.h"
+//#include "MCSMTPSendWithBuilderOperation.h"
#include "MCSMTPCheckAccountOperation.h"
#include "MCSMTPOperation.h"
@@ -17,10 +17,6 @@ SMTPAsyncSession::SMTPAsyncSession()
SMTPAsyncSession::~SMTPAsyncSession()
{
- MC_SAFE_RELEASE(mHostname);
- MC_SAFE_RELEASE(mUsername);
- MC_SAFE_RELEASE(mPassword);
-
MC_SAFE_RELEASE(mQueue);
MC_SAFE_RELEASE(mSession);
}
@@ -121,11 +117,12 @@ void SMTPAsyncSession::runOperation(SMTPOperation * operation)
mQueue->addOperation(operation);
}
-SMTPSession * SMTPAsyncSession::SMTPAsyncSession::session()
+SMTPSession * SMTPAsyncSession::session()
{
return mSession;
}
+#if 0
SMTPOperation * SMTPAsyncSession::sendMessageOperationWithFromAndRecipient(Address * from, Array * recipients, Data * messageData)
{
SMTPSendWithRecipientOperation * op = new SMTPSendWithRecipientOperation();
@@ -135,6 +132,7 @@ SMTPOperation * SMTPAsyncSession::sendMessageOperationWithFromAndRecipient(Addre
op->setMessageData(messageData);
return (SMTPOperation *) op->autorelease();
}
+#endif
SMTPOperation * SMTPAsyncSession::sendMessageOperation(Data * messageData)
{
@@ -144,6 +142,7 @@ SMTPOperation * SMTPAsyncSession::sendMessageOperation(Data * messageData)
return (SMTPOperation *) op->autorelease();
}
+#if 0
SMTPOperation * SMTPAsyncSession::sendMessageOperation(MessageBuilder * msg)
{
SMTPSendWithBuilderOperation * op = new SMTPSendWithBuilderOperation();
@@ -151,6 +150,7 @@ SMTPOperation * SMTPAsyncSession::sendMessageOperation(MessageBuilder * msg)
op->setBuilder(msg);
return (SMTPOperation *) op->autorelease();
}
+#endif
SMTPOperation * SMTPAsyncSession::checkAccountOperation(Address * from)
{
diff --git a/src/async/smtp/MCSMTPAsyncSession.h b/src/async/smtp/MCSMTPAsyncSession.h
index 0b9e1edd..40b1cfbb 100644
--- a/src/async/smtp/MCSMTPAsyncSession.h
+++ b/src/async/smtp/MCSMTPAsyncSession.h
@@ -15,16 +15,6 @@ namespace mailcore {
class SMTPAsyncSession : public Object {
private:
- String * mHostname;
- unsigned int mPort;
- String * mUsername;
- String * mPassword;
- AuthType mAuthType;
- ConnectionType mConnectionType;
- time_t mTimeout;
- bool mCheckCertificateEnabled;
- bool mUseHeloIPEnabled;
-
SMTPSession * mSession;
OperationQueue * mQueue;
@@ -61,9 +51,7 @@ namespace mailcore {
virtual void setUseHeloIPEnabled(bool enabled);
virtual bool useHeloIPEnabled();
- virtual SMTPOperation * sendMessageOperationWithFromAndRecipient(Address * from, Array * recipients, Data * messageData);
virtual SMTPOperation * sendMessageOperation(Data * messageData);
- virtual SMTPOperation * sendMessageOperation(MessageBuilder * msg);
virtual SMTPOperation * checkAccountOperation(Address * from);
// private
diff --git a/src/async/smtp/MCSMTPSendWithDataOperation.cc b/src/async/smtp/MCSMTPSendWithDataOperation.cc
index 5c43828a..bb2c5ea9 100644
--- a/src/async/smtp/MCSMTPSendWithDataOperation.cc
+++ b/src/async/smtp/MCSMTPSendWithDataOperation.cc
@@ -36,7 +36,6 @@ Data * SMTPSendWithDataOperation::messageData()
void SMTPSendWithDataOperation::main()
{
ErrorCode error;
-
session()->session()->sendMessage(mMessageData, this, &error);
setError(error);
}
diff --git a/src/async/smtp/MCSMTPSendWithDataOperation.h b/src/async/smtp/MCSMTPSendWithDataOperation.h
index 4f71e233..0afd381b 100644
--- a/src/async/smtp/MCSMTPSendWithDataOperation.h
+++ b/src/async/smtp/MCSMTPSendWithDataOperation.h
@@ -16,8 +16,8 @@
namespace mailcore {
class SMTPSendWithDataOperation : public SMTPOperation {
- Data * mMessageData;
private:
+ Data * mMessageData;
public:
SMTPSendWithDataOperation();
diff --git a/src/core/MCCore.h b/src/core/MCCore.h
index 9c1e0d42..d5d6f79d 100644
--- a/src/core/MCCore.h
+++ b/src/core/MCCore.h
@@ -15,5 +15,6 @@
#include <mailcore/MCPOP.h>
#include <mailcore/MCRFC822.h>
#include <mailcore/MCSMTP.h>
+#include <mailcore/MCAsyncIMAP.h>
#endif
diff --git a/src/core/abstract/MCAbstractMessage.h b/src/core/abstract/MCAbstractMessage.h
index e5b62c8a..59d0d75a 100644
--- a/src/core/abstract/MCAbstractMessage.h
+++ b/src/core/abstract/MCAbstractMessage.h
@@ -18,7 +18,6 @@ namespace mailcore {
virtual ~AbstractMessage();
virtual String * description();
- //virtual String * className();
virtual Object * copy();
virtual MessageHeader * header();
diff --git a/src/core/abstract/MCAbstractMessagePart.h b/src/core/abstract/MCAbstractMessagePart.h
index a855202c..4c61c326 100644
--- a/src/core/abstract/MCAbstractMessagePart.h
+++ b/src/core/abstract/MCAbstractMessagePart.h
@@ -22,7 +22,6 @@ namespace mailcore {
virtual ~AbstractMessagePart();
virtual String * description();
- //virtual String * className();
virtual Object * copy();
virtual MessageHeader * header();
diff --git a/src/core/abstract/MCAbstractMultipart.h b/src/core/abstract/MCAbstractMultipart.h
index c731ed7b..c2e827df 100644
--- a/src/core/abstract/MCAbstractMultipart.h
+++ b/src/core/abstract/MCAbstractMultipart.h
@@ -19,7 +19,6 @@ namespace mailcore {
virtual ~AbstractMultipart();
virtual String * description();
- //virtual String * className();
virtual Object * copy();
virtual Array * parts();
diff --git a/src/core/abstract/MCAbstractPart.h b/src/core/abstract/MCAbstractPart.h
index 356ed256..97d789fb 100644
--- a/src/core/abstract/MCAbstractPart.h
+++ b/src/core/abstract/MCAbstractPart.h
@@ -27,7 +27,6 @@ namespace mailcore {
virtual ~AbstractPart();
virtual String * description();
- //virtual String * className();
virtual Object * copy();
virtual PartType partType();
diff --git a/src/core/abstract/MCAddress.h b/src/core/abstract/MCAddress.h
index 227c1136..58b2767c 100644
--- a/src/core/abstract/MCAddress.h
+++ b/src/core/abstract/MCAddress.h
@@ -24,7 +24,6 @@ namespace mailcore {
static Address * addressWithNonEncodedRFC822String(String * nonEncodedRFC822String);
virtual String * description();
- //virtual String * className();
virtual bool isEqual(Object * otherObject);
virtual unsigned int hash();
diff --git a/src/core/abstract/MCMessageHeader.h b/src/core/abstract/MCMessageHeader.h
index 5a7483e2..54f906f4 100644
--- a/src/core/abstract/MCMessageHeader.h
+++ b/src/core/abstract/MCMessageHeader.h
@@ -32,7 +32,6 @@ namespace mailcore {
virtual ~MessageHeader();
virtual String * description();
- //virtual String * className();
virtual Object * copy();
virtual void setMessageID(String * messageID);
diff --git a/src/core/basetypes/MCArray.h b/src/core/basetypes/MCArray.h
index a0abc243..9e234b97 100644
--- a/src/core/basetypes/MCArray.h
+++ b/src/core/basetypes/MCArray.h
@@ -22,7 +22,6 @@ namespace mailcore {
static Array * array();
static Array * arrayWithObject(Object * obj);
- //virtual String * className();
virtual String * description();
virtual Object * copy();
diff --git a/src/core/basetypes/MCData.h b/src/core/basetypes/MCData.h
index 52232383..d92fa8a6 100644
--- a/src/core/basetypes/MCData.h
+++ b/src/core/basetypes/MCData.h
@@ -26,7 +26,6 @@ namespace mailcore {
Data(const char * bytes, unsigned int length);
virtual ~Data();
- //virtual String * className();
virtual String * description();
virtual Object * copy();
virtual bool isEqual(Object * otherObject);
diff --git a/src/core/basetypes/MCHashMap.h b/src/core/basetypes/MCHashMap.h
index 99e8db52..ec7955fc 100644
--- a/src/core/basetypes/MCHashMap.h
+++ b/src/core/basetypes/MCHashMap.h
@@ -27,7 +27,6 @@ namespace mailcore {
static HashMap * hashMap();
- //virtual String * className();
virtual String * description();
virtual Object * copy();
diff --git a/src/core/basetypes/MCOperationQueue.cc b/src/core/basetypes/MCOperationQueue.cc
index 3c22b89c..aa2e0193 100644
--- a/src/core/basetypes/MCOperationQueue.cc
+++ b/src/core/basetypes/MCOperationQueue.cc
@@ -6,6 +6,7 @@
#include "MCUtils.h"
#include "MCArray.h"
#include "MCLog.h"
+#include "MCAutoreleasePool.h"
#include <libetpan/libetpan.h>
using namespace mailcore;
@@ -65,6 +66,8 @@ void OperationQueue::runOperations()
Operation * op = NULL;
bool needsCheckRunning = false;
+ AutoreleasePool * pool = new AutoreleasePool();
+
//int value = 0;
//int r;
@@ -84,6 +87,7 @@ void OperationQueue::runOperations()
if (op == NULL) {
//sem_post(&mStopSem);
mailsem_up(mStopSem);
+ pool->release();
break;
}
@@ -108,6 +112,8 @@ void OperationQueue::runOperations()
retain(); // (1)
performMethodOnMainThread((Object::Method) &OperationQueue::checkRunningOnMainThread, this);
}
+
+ pool->release();
}
MCLog("cleanup thread");
}
diff --git a/src/core/basetypes/MCSet.h b/src/core/basetypes/MCSet.h
index 0f1ab360..b4a339d4 100644
--- a/src/core/basetypes/MCSet.h
+++ b/src/core/basetypes/MCSet.h
@@ -22,7 +22,6 @@ namespace mailcore {
static Set * set();
static Set * setWithArray(Array * objects);
- //virtual String * className();
virtual String * description();
virtual Object * copy();
diff --git a/src/core/basetypes/MCString.h b/src/core/basetypes/MCString.h
index 9ff04390..7a71b0f8 100644
--- a/src/core/basetypes/MCString.h
+++ b/src/core/basetypes/MCString.h
@@ -34,7 +34,6 @@ namespace mailcore {
String(const char * bytes, unsigned int length, const char * charset = NULL);
virtual ~String();
- //virtual String * className();
virtual String * description();
virtual Object * copy();
virtual bool isEqual(Object * otherObject);
diff --git a/src/core/basetypes/MCValue.h b/src/core/basetypes/MCValue.h
index cc776b24..05f499b6 100644
--- a/src/core/basetypes/MCValue.h
+++ b/src/core/basetypes/MCValue.h
@@ -38,7 +38,6 @@ namespace mailcore {
virtual ~Value();
virtual String * description();
- //virtual String * className();
virtual bool isEqual(Object * otherObject);
virtual unsigned int hash();
diff --git a/src/core/imap/MCIMAPFolder.h b/src/core/imap/MCIMAPFolder.h
index f68498c2..cacd21bd 100644
--- a/src/core/imap/MCIMAPFolder.h
+++ b/src/core/imap/MCIMAPFolder.h
@@ -18,7 +18,6 @@ namespace mailcore {
IMAPFolder(IMAPFolder * other);
virtual ~IMAPFolder();
- //virtual String * className();
virtual Object * copy();
virtual void setPath(String * path);
diff --git a/src/core/imap/MCIMAPMessage.h b/src/core/imap/MCIMAPMessage.h
index afaa07c8..9aee0cdc 100644
--- a/src/core/imap/MCIMAPMessage.h
+++ b/src/core/imap/MCIMAPMessage.h
@@ -22,7 +22,6 @@ namespace mailcore {
IMAPMessage(IMAPMessage * other);
~IMAPMessage();
- //virtual String * className();
virtual Object * copy();
virtual String * description();
diff --git a/src/core/imap/MCIMAPMessagePart.h b/src/core/imap/MCIMAPMessagePart.h
index 37e12fea..99991390 100644
--- a/src/core/imap/MCIMAPMessagePart.h
+++ b/src/core/imap/MCIMAPMessagePart.h
@@ -14,7 +14,6 @@ namespace mailcore {
IMAPMessagePart(IMAPMessagePart * other);
virtual ~IMAPMessagePart();
- //virtual String * className();
virtual Object * copy();
};
}
diff --git a/src/core/imap/MCIMAPMultipart.h b/src/core/imap/MCIMAPMultipart.h
index bdb33470..db46b583 100644
--- a/src/core/imap/MCIMAPMultipart.h
+++ b/src/core/imap/MCIMAPMultipart.h
@@ -14,7 +14,6 @@ namespace mailcore {
IMAPMultipart(IMAPMultipart * other);
virtual ~IMAPMultipart();
- //virtual String * className();
virtual Object * copy();
};
}
diff --git a/src/core/imap/MCIMAPNamespace.h b/src/core/imap/MCIMAPNamespace.h
index b9cbf92a..4909421c 100644
--- a/src/core/imap/MCIMAPNamespace.h
+++ b/src/core/imap/MCIMAPNamespace.h
@@ -19,7 +19,6 @@ namespace mailcore {
IMAPNamespace(IMAPNamespace * other);
virtual ~IMAPNamespace();
- //virtual String * className();
virtual String * description();
virtual Object * copy();
diff --git a/src/core/imap/MCIMAPNamespaceItem.h b/src/core/imap/MCIMAPNamespaceItem.h
index 3b40ae7c..f2831895 100644
--- a/src/core/imap/MCIMAPNamespaceItem.h
+++ b/src/core/imap/MCIMAPNamespaceItem.h
@@ -16,7 +16,6 @@ namespace mailcore {
IMAPNamespaceItem(IMAPNamespaceItem * other);
virtual ~IMAPNamespaceItem();
- //virtual String * className();
virtual String * description();
virtual Object * copy();
diff --git a/src/core/imap/MCIMAPPart.h b/src/core/imap/MCIMAPPart.h
index b8b3625d..79c261fb 100644
--- a/src/core/imap/MCIMAPPart.h
+++ b/src/core/imap/MCIMAPPart.h
@@ -34,7 +34,6 @@ namespace mailcore {
IMAPPart(IMAPPart * other);
virtual ~IMAPPart();
- //virtual String * className();
virtual Object * copy();
virtual void setPartID(String * partID);
diff --git a/src/core/imap/MCIMAPSearchExpression.h b/src/core/imap/MCIMAPSearchExpression.h
index 53a373cd..184bff33 100644
--- a/src/core/imap/MCIMAPSearchExpression.h
+++ b/src/core/imap/MCIMAPSearchExpression.h
@@ -7,7 +7,7 @@
namespace mailcore {
- class IMAPSearchExpression : Object {
+ class IMAPSearchExpression : public Object {
private:
IMAPSearchKind mKind;
String * mHeader;
@@ -22,7 +22,6 @@ namespace mailcore {
virtual ~IMAPSearchExpression();
virtual String * description();
- //virtual String * className();
virtual Object * copy();
virtual IMAPSearchKind kind();
diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc
index 317af507..c22f082b 100644
--- a/src/core/imap/MCIMAPSession.cc
+++ b/src/core/imap/MCIMAPSession.cc
@@ -1197,7 +1197,7 @@ void IMAPSession::copyMessages(String * folder, Array * uidSet, String * destFol
mailimap_set_free(dest_uid);
}
}
- * pDestUIDs = (Array *) uidSetResult->retain()->autorelease();
+ * pDestUIDs = (Array *) uidSetResult->autorelease();
* pError = ErrorNone;
release:
@@ -1929,8 +1929,7 @@ Data * IMAPSession::fetchMessageByUID(String * folder, uint32_t uid,
}
Data * IMAPSession::fetchMessageAttachmentByUID(String * folder, uint32_t uid, String * partID,
- Encoding encoding, unsigned int expectedSize,
- IMAPProgressCallback * progressCallback, ErrorCode * pError)
+ Encoding encoding, IMAPProgressCallback * progressCallback, ErrorCode * pError)
{
struct mailimap_fetch_type * fetch_type;
struct mailimap_fetch_att * fetch_att;
@@ -1949,7 +1948,7 @@ Data * IMAPSession::fetchMessageAttachmentByUID(String * folder, uint32_t uid, S
mProgressItemsCount = 0;
mProgressCallback = progressCallback;
- bodyProgress(0, expectedSize);
+ bodyProgress(0, 0);
partIDArray = partID->componentsSeparatedByString(MCSTR("."));
sec_list = clist_new();
@@ -1970,7 +1969,6 @@ Data * IMAPSession::fetchMessageAttachmentByUID(String * folder, uint32_t uid, S
r = fetch_imap(mImap, uid, fetch_type, &text, &text_length);
mailimap_fetch_type_free(fetch_type);
- bodyProgress(expectedSize, expectedSize);
mProgressCallback = NULL;
MCLog("had error : %i", r);
@@ -2299,8 +2297,9 @@ void IMAPSession::bodyProgress(unsigned int current, unsigned int maximum)
void IMAPSession::itemsProgress(unsigned int current, unsigned int maximum)
{
+ mProgressItemsCount ++;
if (mProgressCallback != NULL) {
- mProgressCallback->itemsProgress(this, current, maximum);
+ mProgressCallback->itemsProgress(this, mProgressItemsCount, maximum);
}
}
diff --git a/src/core/imap/MCIMAPSession.h b/src/core/imap/MCIMAPSession.h
index 93058c2b..ea9a39cd 100644
--- a/src/core/imap/MCIMAPSession.h
+++ b/src/core/imap/MCIMAPSession.h
@@ -66,8 +66,6 @@ namespace mailcore {
IMAPSession();
virtual ~IMAPSession();
- //virtual String * className();
-
virtual void setHostname(String * hostname);
virtual String * hostname();
@@ -95,9 +93,11 @@ namespace mailcore {
virtual void setVoIPEnabled(bool enabled);
virtual bool isVoIPEnabled();
+ // Needed for fetchSubscribedFolders() and fetchAllFolders().
virtual void setDelimiter(char delimiter);
virtual char delimiter();
+ // Needed for fetchSubscribedFolders() and fetchAllFolders().
virtual void setDefaultNamespace(IMAPNamespace * ns);
virtual IMAPNamespace * defaultNamespace();
@@ -126,14 +126,13 @@ namespace mailcore {
virtual Array * fetchMessagesByNumber(String * folder, IMAPMessagesRequestKind requestKind,
uint32_t firstNumber, uint32_t lastNumber, IMAPProgressCallback * progressCallback, ErrorCode * pError);
virtual Array * fetchMessagesByUID(String * folder, IMAPMessagesRequestKind requestKind,
- Array * numbers, IMAPProgressCallback * progressCallback, ErrorCode * pError);
+ Array * uids, IMAPProgressCallback * progressCallback, ErrorCode * pError);
virtual Array * fetchMessagesByNumber(String * folder, IMAPMessagesRequestKind requestKind,
Array * numbers, IMAPProgressCallback * progressCallback, ErrorCode * pError);
virtual Data * fetchMessageByUID(String * folder, uint32_t uid,
IMAPProgressCallback * progressCallback, ErrorCode * pError);
virtual Data * fetchMessageAttachmentByUID(String * folder, uint32_t uid, String * partID,
- Encoding encoding, unsigned int expectedSize,
- IMAPProgressCallback * progressCallback, ErrorCode * pError);
+ Encoding encoding, IMAPProgressCallback * progressCallback, ErrorCode * pError);
virtual HashMap * fetchMessageNumberUIDMapping(String * folder, uint32_t fromUID, uint32_t toUID,
ErrorCode * pError);
diff --git a/src/core/pop/MCPOPMessageInfo.h b/src/core/pop/MCPOPMessageInfo.h
index 1e52b695..a70a3f80 100644
--- a/src/core/pop/MCPOPMessageInfo.h
+++ b/src/core/pop/MCPOPMessageInfo.h
@@ -19,7 +19,6 @@ namespace mailcore {
POPMessageInfo(POPMessageInfo * other);
virtual ~POPMessageInfo();
- //virtual String * className();
virtual String * description();
virtual Object * copy();
diff --git a/src/core/pop/MCPOPSession.h b/src/core/pop/MCPOPSession.h
index ef6c132b..d0d8dc4e 100644
--- a/src/core/pop/MCPOPSession.h
+++ b/src/core/pop/MCPOPSession.h
@@ -42,8 +42,6 @@ namespace mailcore {
POPSession();
virtual ~POPSession();
- //virtual String * className();
-
virtual void setHostname(String * hostname);
virtual String * hostname();
diff --git a/src/core/rfc822/MCAttachment.h b/src/core/rfc822/MCAttachment.h
index 0fc4fc98..b96dfd2b 100644
--- a/src/core/rfc822/MCAttachment.h
+++ b/src/core/rfc822/MCAttachment.h
@@ -33,7 +33,6 @@ namespace mailcore {
virtual ~Attachment();
virtual String * description();
- //virtual String * className();
virtual Object * copy();
virtual void setData(Data * data);
diff --git a/src/core/rfc822/MCMessageBuilder.h b/src/core/rfc822/MCMessageBuilder.h
index fd05f3dc..6a71b9e0 100644
--- a/src/core/rfc822/MCMessageBuilder.h
+++ b/src/core/rfc822/MCMessageBuilder.h
@@ -25,7 +25,6 @@ namespace mailcore {
virtual ~MessageBuilder();
virtual String * description();
- //virtual String * className();
virtual Object * copy();
virtual void setHTMLBody(String * htmlBody);
diff --git a/src/core/rfc822/MCMessageParser.h b/src/core/rfc822/MCMessageParser.h
index a3ece61c..f3f835fa 100644
--- a/src/core/rfc822/MCMessageParser.h
+++ b/src/core/rfc822/MCMessageParser.h
@@ -22,7 +22,6 @@ namespace mailcore {
virtual ~MessageParser();
virtual String * description();
- //virtual String * className();
virtual Object * copy();
virtual AbstractPart * mainPart();
diff --git a/src/core/rfc822/MCMessagePart.h b/src/core/rfc822/MCMessagePart.h
index 3f20b3a8..cbedec70 100644
--- a/src/core/rfc822/MCMessagePart.h
+++ b/src/core/rfc822/MCMessagePart.h
@@ -13,7 +13,6 @@ namespace mailcore {
MessagePart(MessagePart * other);
virtual ~MessagePart();
- //virtual String * className();
virtual Object * copy();
};
}
diff --git a/src/core/rfc822/MCMultipart.h b/src/core/rfc822/MCMultipart.h
index bdd71c48..effe10f3 100644
--- a/src/core/rfc822/MCMultipart.h
+++ b/src/core/rfc822/MCMultipart.h
@@ -13,7 +13,6 @@ namespace mailcore {
Multipart(Multipart * other);
virtual ~Multipart();
- //virtual String * className();
virtual Object * copy();
};
}
diff --git a/src/core/smtp/MCSMTPSession.h b/src/core/smtp/MCSMTPSession.h
index 98f4be4a..29e53ce4 100644
--- a/src/core/smtp/MCSMTPSession.h
+++ b/src/core/smtp/MCSMTPSession.h
@@ -41,12 +41,14 @@ namespace mailcore {
void loginIfNeeded(ErrorCode * pError);
bool checkCertificate();
+ void sendMessage(Address * from, Array * recipients, Data * messageData,
+ SMTPProgressCallback * callback, ErrorCode * pError);
+ void sendMessage(MessageBuilder * msg, SMTPProgressCallback * callback, ErrorCode * pError);
+
public:
SMTPSession();
virtual ~SMTPSession();
- //virtual String * className();
-
virtual void setHostname(String * hostname);
virtual String * hostname();
@@ -81,10 +83,7 @@ namespace mailcore {
virtual void checkAccount(Address * from, ErrorCode * pError);
- virtual void sendMessage(Address * from, Array * recipients, Data * messageData,
- SMTPProgressCallback * callback, ErrorCode * pError);
virtual void sendMessage(Data * messageData, SMTPProgressCallback * callback, ErrorCode * pError);
- virtual void sendMessage(MessageBuilder * msg, SMTPProgressCallback * callback, ErrorCode * pError);
};
}
diff --git a/tests/main.mm b/tests/main.mm
index 06b12876..1ef4927d 100644
--- a/tests/main.mm
+++ b/tests/main.mm
@@ -190,6 +190,50 @@ static void testAsyncSMTP(mailcore::Data * data)
//smtp->release();
}
+class TestIMAPCallback : public mailcore::Object, public mailcore::OperationCallback, public mailcore::IMAPOperationCallback {
+ virtual void operationFinished(mailcore::Operation * op)
+ {
+ mailcore::IMAPFetchMessagesOperation * fetchOp = (mailcore::IMAPFetchMessagesOperation *) op;
+ //MCLog("callback %s %s %s", MCUTF8DESC(op), MCUTF8DESC(fetchOp->messages()), MCUTF8DESC(this));
+ }
+
+ virtual void bodyProgress(mailcore::IMAPOperation * op, unsigned int current, unsigned int maximum)
+ {
+ MCLog("progress %s %s %i/%i", MCUTF8DESC(op), MCUTF8DESC(this), current, maximum);
+ }
+
+ virtual void itemProgress(mailcore::IMAPOperation * op, unsigned int current, unsigned int maximum)
+ {
+ MCLog("item progress %s %s %i/%i", MCUTF8DESC(op), MCUTF8DESC(this), current, maximum);
+ }
+};
+
+static void testAsyncIMAP()
+{
+ mailcore::IMAPAsyncSession * session;
+ TestIMAPCallback * callback = new TestIMAPCallback();
+
+ session = new mailcore::IMAPAsyncSession();
+ session->setHostname(MCSTR("imap.gmail.com"));
+ session->setPort(993);
+ session->setUsername(email);
+ session->setPassword(password);
+ session->setConnectionType(mailcore::ConnectionTypeTLS);
+
+ mailcore::IMAPMessagesRequestKind requestKind = (mailcore::IMAPMessagesRequestKind)
+ (mailcore::IMAPMessagesRequestKindHeaders | mailcore::IMAPMessagesRequestKindStructure |
+ mailcore::IMAPMessagesRequestKindInternalDate | mailcore::IMAPMessagesRequestKindHeaderSubject |
+ mailcore::IMAPMessagesRequestKindFlags);
+ mailcore::IMAPFetchMessagesOperation * op = session->fetchMessagesByUIDOperation(MCSTR("INBOX"), requestKind, 1, 0);
+ op->setCallback(callback);
+ op->setImapCallback(callback);
+ op->start();
+ //MCLog("%s", MCUTF8DESC(messages));
+ [[NSRunLoop currentRunLoop] run];
+
+ //session->release();
+}
+
void testAll()
{
u_setDataDirectory("/usr/local/share/icu");
@@ -203,7 +247,8 @@ void testAll()
//testSMTP(data);
//testIMAP();
//testPOP();
- testAsyncSMTP(data);
+ //testAsyncSMTP(data);
+ testAsyncIMAP();
MCLog("pool release");
pool->release();