diff options
-rwxr-xr-x | build-mac/mailcore2.xcodeproj/project.pbxproj | 40 | ||||
-rwxr-xr-x | src/async/imap/MCAsyncIMAP.h | 1 | ||||
-rw-r--r-- | src/async/pop/MCAsyncPOP.h | 1 | ||||
-rw-r--r-- | src/async/smtp/MCAsyncSMTP.h | 1 | ||||
-rw-r--r-- | src/objc/abstract/MCOConstants.h | 2 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPNoopOperation.h | 32 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPNoopOperation.mm | 69 | ||||
-rwxr-xr-x | src/objc/imap/MCOIMAPSession.h | 10 | ||||
-rwxr-xr-x | src/objc/imap/MCOIMAPSession.mm | 6 | ||||
-rw-r--r-- | src/objc/pop/MCOPOPNoopOperation.h | 34 | ||||
-rw-r--r-- | src/objc/pop/MCOPOPNoopOperation.mm | 70 | ||||
-rw-r--r-- | src/objc/pop/MCOPOPSession.h | 10 | ||||
-rw-r--r-- | src/objc/pop/MCOPOPSession.mm | 6 | ||||
-rw-r--r-- | src/objc/smtp/MCOSMTPNoopOperation.h | 32 | ||||
-rw-r--r-- | src/objc/smtp/MCOSMTPNoopOperation.mm | 66 | ||||
-rw-r--r-- | src/objc/smtp/MCOSMTPSession.h | 10 | ||||
-rw-r--r-- | src/objc/smtp/MCOSMTPSession.mm | 9 | ||||
-rw-r--r-- | src/objc/utils/NSError+MCO.mm | 1 |
18 files changed, 400 insertions, 0 deletions
diff --git a/build-mac/mailcore2.xcodeproj/project.pbxproj b/build-mac/mailcore2.xcodeproj/project.pbxproj index 7291eafa..a0ec38de 100755 --- a/build-mac/mailcore2.xcodeproj/project.pbxproj +++ b/build-mac/mailcore2.xcodeproj/project.pbxproj @@ -15,6 +15,14 @@ 4B3C1BE517AC0176008BBF4C /* MCIMAPQuotaOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4B3C1BDF17ABF4BB008BBF4C /* MCIMAPQuotaOperation.cc */; }; 4BE4029117B548B900ECC5E4 /* MCOIMAPQuotaOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B3C1BDC17ABF306008BBF4C /* MCOIMAPQuotaOperation.h */; }; 4BE4029217B548D900ECC5E4 /* MCIMAPQuotaOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B3C1BE017ABF4BC008BBF4C /* MCIMAPQuotaOperation.h */; }; + 8416A99D17F284F400B3C7DA /* MCOSMTPNoopOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8416A99C17F284F400B3C7DA /* MCOSMTPNoopOperation.mm */; }; + 8416A99E17F284F400B3C7DA /* MCOSMTPNoopOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8416A99C17F284F400B3C7DA /* MCOSMTPNoopOperation.mm */; }; + 8416A9A117F2871D00B3C7DA /* MCOIMAPNoopOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8416A9A017F2871D00B3C7DA /* MCOIMAPNoopOperation.mm */; }; + 8416A9A217F2871D00B3C7DA /* MCOIMAPNoopOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8416A9A017F2871D00B3C7DA /* MCOIMAPNoopOperation.mm */; }; + 849F53D817F28443002D417F /* MCOPOPNoopOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84B639EF17F282B4003B5BA2 /* MCOPOPNoopOperation.h */; }; + 849F53D917F28443002D417F /* MCIMAPNoopOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84B639EC17F280F3003B5BA2 /* MCIMAPNoopOperation.h */; }; + 849F53DA17F28443002D417F /* MCPOPNoopOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84B639E717F27EBD003B5BA2 /* MCPOPNoopOperation.h */; }; + 849F53DB17F28443002D417F /* MCSMTPNoopOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84B639E217F279BB003B5BA2 /* MCSMTPNoopOperation.h */; }; 84AF9E7E172DBAF600E60AA3 /* providers.json in Resources */ = {isa = PBXBuildFile; fileRef = 84AF9E7D172DBAF600E60AA3 /* providers.json */; }; 84B639E317F279BB003B5BA2 /* MCSMTPNoopOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84B639E117F279BB003B5BA2 /* MCSMTPNoopOperation.cc */; }; 84B639E417F279BB003B5BA2 /* MCSMTPNoopOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84B639E117F279BB003B5BA2 /* MCSMTPNoopOperation.cc */; }; @@ -22,6 +30,12 @@ 84B639E917F27EBD003B5BA2 /* MCPOPNoopOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 84B639E617F27EBD003B5BA2 /* MCPOPNoopOperation.cc */; }; 84B639ED17F280F3003B5BA2 /* MCIMAPNoopOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B639EB17F280F3003B5BA2 /* MCIMAPNoopOperation.cpp */; }; 84B639EE17F280F3003B5BA2 /* MCIMAPNoopOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84B639EB17F280F3003B5BA2 /* MCIMAPNoopOperation.cpp */; }; + 84B639F117F282B4003B5BA2 /* MCOPOPNoopOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84B639F017F282B4003B5BA2 /* MCOPOPNoopOperation.mm */; }; + 84B639F217F282B4003B5BA2 /* MCOPOPNoopOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 84B639F017F282B4003B5BA2 /* MCOPOPNoopOperation.mm */; }; + 84B639F317F2839C003B5BA2 /* MCOPOPNoopOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84B639EF17F282B4003B5BA2 /* MCOPOPNoopOperation.h */; }; + 84B639F417F2839C003B5BA2 /* MCIMAPNoopOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84B639EC17F280F3003B5BA2 /* MCIMAPNoopOperation.h */; }; + 84B639F517F2839C003B5BA2 /* MCPOPNoopOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84B639E717F27EBD003B5BA2 /* MCPOPNoopOperation.h */; }; + 84B639F617F2839C003B5BA2 /* MCSMTPNoopOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 84B639E217F279BB003B5BA2 /* MCSMTPNoopOperation.h */; }; 943F1A9A17D964F600F0C798 /* MCIMAPConnectOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 943F1A9817D964F600F0C798 /* MCIMAPConnectOperation.cc */; }; 943F1A9E17D96C5500F0C798 /* MCIMAPConnectOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 943F1A9817D964F600F0C798 /* MCIMAPConnectOperation.cc */; }; 943F1AA017D9736100F0C798 /* MCIMAPConnectOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 943F1A9917D964F600F0C798 /* MCIMAPConnectOperation.h */; }; @@ -763,6 +777,10 @@ dstPath = include/MailCore; dstSubfolderSpec = 16; files = ( + 84B639F317F2839C003B5BA2 /* MCOPOPNoopOperation.h in CopyFiles */, + 84B639F417F2839C003B5BA2 /* MCIMAPNoopOperation.h in CopyFiles */, + 84B639F517F2839C003B5BA2 /* MCPOPNoopOperation.h in CopyFiles */, + 84B639F617F2839C003B5BA2 /* MCSMTPNoopOperation.h in CopyFiles */, 943F1AA017D9736100F0C798 /* MCIMAPConnectOperation.h in CopyFiles */, 4BE4029217B548D900ECC5E4 /* MCIMAPQuotaOperation.h in CopyFiles */, 4BE4029117B548B900ECC5E4 /* MCOIMAPQuotaOperation.h in CopyFiles */, @@ -958,6 +976,10 @@ dstPath = include/MailCore; dstSubfolderSpec = 16; files = ( + 849F53D817F28443002D417F /* MCOPOPNoopOperation.h in CopyFiles */, + 849F53D917F28443002D417F /* MCIMAPNoopOperation.h in CopyFiles */, + 849F53DA17F28443002D417F /* MCPOPNoopOperation.h in CopyFiles */, + 849F53DB17F28443002D417F /* MCSMTPNoopOperation.h in CopyFiles */, 943F1AA117D973A800F0C798 /* MCIMAPConnectOperation.h in CopyFiles */, 4B3C1BE417AC0156008BBF4C /* MCIMAPQuotaOperation.h in CopyFiles */, 4B3C1BE217ABFF7C008BBF4C /* MCOIMAPQuotaOperation.h in CopyFiles */, @@ -1145,6 +1167,10 @@ 4B3C1BDD17ABF307008BBF4C /* MCOIMAPQuotaOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOIMAPQuotaOperation.mm; sourceTree = "<group>"; }; 4B3C1BDF17ABF4BB008BBF4C /* MCIMAPQuotaOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPQuotaOperation.cc; sourceTree = "<group>"; }; 4B3C1BE017ABF4BC008BBF4C /* MCIMAPQuotaOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPQuotaOperation.h; sourceTree = "<group>"; }; + 8416A99B17F284F400B3C7DA /* MCOSMTPNoopOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOSMTPNoopOperation.h; sourceTree = "<group>"; }; + 8416A99C17F284F400B3C7DA /* MCOSMTPNoopOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOSMTPNoopOperation.mm; sourceTree = "<group>"; }; + 8416A99F17F2871D00B3C7DA /* MCOIMAPNoopOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOIMAPNoopOperation.h; sourceTree = "<group>"; }; + 8416A9A017F2871D00B3C7DA /* MCOIMAPNoopOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOIMAPNoopOperation.mm; sourceTree = "<group>"; }; 84AF9E7D172DBAF600E60AA3 /* providers.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = providers.json; path = ../resources/providers.json; sourceTree = "<group>"; }; 84B639E117F279BB003B5BA2 /* MCSMTPNoopOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCSMTPNoopOperation.cc; sourceTree = "<group>"; }; 84B639E217F279BB003B5BA2 /* MCSMTPNoopOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCSMTPNoopOperation.h; sourceTree = "<group>"; }; @@ -1152,6 +1178,8 @@ 84B639E717F27EBD003B5BA2 /* MCPOPNoopOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCPOPNoopOperation.h; sourceTree = "<group>"; }; 84B639EB17F280F3003B5BA2 /* MCIMAPNoopOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPNoopOperation.cpp; sourceTree = "<group>"; }; 84B639EC17F280F3003B5BA2 /* MCIMAPNoopOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPNoopOperation.h; sourceTree = "<group>"; }; + 84B639EF17F282B4003B5BA2 /* MCOPOPNoopOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOPOPNoopOperation.h; sourceTree = "<group>"; }; + 84B639F017F282B4003B5BA2 /* MCOPOPNoopOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOPOPNoopOperation.mm; sourceTree = "<group>"; }; 943F1A9817D964F600F0C798 /* MCIMAPConnectOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPConnectOperation.cc; sourceTree = "<group>"; }; 943F1A9917D964F600F0C798 /* MCIMAPConnectOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPConnectOperation.h; sourceTree = "<group>"; }; 9E774D871767C54E0065EB9B /* MCIMAPFolderStatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPFolderStatus.h; sourceTree = "<group>"; }; @@ -2201,6 +2229,8 @@ C6A81BDD1706904800882C15 /* MCOPOPFetchMessageOperation.mm */, C6A81BE41706906C00882C15 /* MCOPOPFetchMessagesOperation.h */, C6A81BE51706906C00882C15 /* MCOPOPFetchMessagesOperation.mm */, + 84B639EF17F282B4003B5BA2 /* MCOPOPNoopOperation.h */, + 84B639F017F282B4003B5BA2 /* MCOPOPNoopOperation.mm */, C6A81BFE1707CEE400882C15 /* MCOPOPMessageInfo.h */, C6A81BFF1707CEE500882C15 /* MCOPOPMessageInfo.mm */, ); @@ -2215,6 +2245,8 @@ C6A81BBE17068E5E00882C15 /* MCOSMTPSession.mm */, C6A81BC117068E9500882C15 /* MCOSMTPSendOperation.h */, C6A81BC217068E9500882C15 /* MCOSMTPSendOperation.mm */, + 8416A99B17F284F400B3C7DA /* MCOSMTPNoopOperation.h */, + 8416A99C17F284F400B3C7DA /* MCOSMTPNoopOperation.mm */, C6A81BC517068EB000882C15 /* MCOSMTPOperation.h */, C60136941776B96600A5AF45 /* MCOSMTPOperation+Private.h */, C6A81BC617068EB000882C15 /* MCOSMTPOperation.mm */, @@ -2290,6 +2322,8 @@ 9EF9AB18175F36600027FA3B /* MCOIMAPFolderStatusOperation.mm */, DA89896B178A47D200F6D90A /* MCOIMAPMessageRenderingOperation.h */, DA89896C178A47D200F6D90A /* MCOIMAPMessageRenderingOperation.mm */, + 8416A99F17F2871D00B3C7DA /* MCOIMAPNoopOperation.h */, + 8416A9A017F2871D00B3C7DA /* MCOIMAPNoopOperation.mm */, C63D316017C92D8300A4D993 /* MCOIMAPIdentity.h */, C63D316117C92D8300A4D993 /* MCOIMAPIdentity.mm */, ); @@ -2544,6 +2578,7 @@ C64EA742169E847800778456 /* MCMessagePart.cc in Sources */, C64EA744169E847800778456 /* MCMultipart.cc in Sources */, C64EA781169E89F600778456 /* MCSMTPSession.cc in Sources */, + 8416A9A117F2871D00B3C7DA /* MCOIMAPNoopOperation.mm in Sources */, C64EA784169F24E400778456 /* MCSMTPAsyncSession.cc in Sources */, C6F7B19F17A1C15200BE78BB /* MCCertificateUtils.cc in Sources */, C64EA79E169F29A700778456 /* MCSMTPSendWithDataOperation.cc in Sources */, @@ -2589,6 +2624,7 @@ C07ADC28B83E7959BF114D46 /* MCOIMAPSession.mm in Sources */, C07AD99B2E2054C684DB8FF6 /* NSError+MCO.mm in Sources */, F87F190C16BB62B00012652F /* MCOIMAPFetchFoldersOperation.mm in Sources */, + 84B639F117F282B4003B5BA2 /* MCOPOPNoopOperation.mm in Sources */, C6EB30F716B8C9480091F4F1 /* NSDictionary+MCO.mm in Sources */, C6EB30FE16B8E50F0091F4F1 /* NSArray+MCO.mm in Sources */, C6EB310116B8E6E60091F4F1 /* NSObject+MCO.mm in Sources */, @@ -2646,6 +2682,7 @@ C6A81BBF17068E5E00882C15 /* MCOSMTPSession.mm in Sources */, C6A81BC317068E9500882C15 /* MCOSMTPSendOperation.mm in Sources */, C6A81BC717068EB000882C15 /* MCOSMTPOperation.mm in Sources */, + 8416A99D17F284F400B3C7DA /* MCOSMTPNoopOperation.mm in Sources */, C6A81BD61706903500882C15 /* MCOPOPSession.mm in Sources */, C6A81BDA1706903E00882C15 /* MCOPOPFetchHeaderOperation.mm in Sources */, C608167B177635D2001F1018 /* MCIMAPDisconnectOperation.cc in Sources */, @@ -2744,6 +2781,7 @@ C6BA2BBC1705F4E6003F0E9E /* MCMessagePart.cc in Sources */, C6BA2BBD1705F4E6003F0E9E /* MCMultipart.cc in Sources */, C6BA2BBE1705F4E6003F0E9E /* MCSMTPSession.cc in Sources */, + 8416A9A217F2871D00B3C7DA /* MCOIMAPNoopOperation.mm in Sources */, C6BA2BBF1705F4E6003F0E9E /* MCSMTPAsyncSession.cc in Sources */, C6F7B1A017A1C15200BE78BB /* MCCertificateUtils.cc in Sources */, C6BA2BC01705F4E6003F0E9E /* MCSMTPSendWithDataOperation.cc in Sources */, @@ -2789,6 +2827,7 @@ C6BA2BE11705F4E6003F0E9E /* MCOIMAPSession.mm in Sources */, C6BA2BE21705F4E6003F0E9E /* NSError+MCO.mm in Sources */, C6BA2BE31705F4E6003F0E9E /* MCOIMAPFetchFoldersOperation.mm in Sources */, + 84B639F217F282B4003B5BA2 /* MCOPOPNoopOperation.mm in Sources */, C6BA2BE41705F4E6003F0E9E /* NSDictionary+MCO.mm in Sources */, C6BA2BE51705F4E6003F0E9E /* NSArray+MCO.mm in Sources */, C6BA2BE61705F4E6003F0E9E /* NSObject+MCO.mm in Sources */, @@ -2846,6 +2885,7 @@ C6A81BC017068E5E00882C15 /* MCOSMTPSession.mm in Sources */, C6A81BC417068E9500882C15 /* MCOSMTPSendOperation.mm in Sources */, C6A81BC817068EB000882C15 /* MCOSMTPOperation.mm in Sources */, + 8416A99E17F284F400B3C7DA /* MCOSMTPNoopOperation.mm in Sources */, C6A81BD71706903500882C15 /* MCOPOPSession.mm in Sources */, C6A81BDB1706903E00882C15 /* MCOPOPFetchHeaderOperation.mm in Sources */, C608167C177635D2001F1018 /* MCIMAPDisconnectOperation.cc in Sources */, diff --git a/src/async/imap/MCAsyncIMAP.h b/src/async/imap/MCAsyncIMAP.h index b1184fe7..f7ed61ea 100755 --- a/src/async/imap/MCAsyncIMAP.h +++ b/src/async/imap/MCAsyncIMAP.h @@ -29,6 +29,7 @@ #include <MailCore/MCIMAPIdentityOperation.h> #include <MailCore/MCIMAPCapabilityOperation.h> #include <MailCore/MCIMAPQuotaOperation.h> +#include <MailCore/MCIMAPNoopOperation.h> #include <MailCore/MCIMAPOperationCallback.h> #include <MailCore/MCIMAPMessageRenderingOperation.h> diff --git a/src/async/pop/MCAsyncPOP.h b/src/async/pop/MCAsyncPOP.h index 880e700e..f9cb9f29 100644 --- a/src/async/pop/MCAsyncPOP.h +++ b/src/async/pop/MCAsyncPOP.h @@ -15,6 +15,7 @@ #include <MailCore/MCPOPFetchHeaderOperation.h> #include <MailCore/MCPOPFetchMessageOperation.h> #include <MailCore/MCPOPFetchMessagesOperation.h> +#include <MailCore/MCPOPNoopOperation.h> #include <MailCore/MCPOPOperationCallback.h> #endif diff --git a/src/async/smtp/MCAsyncSMTP.h b/src/async/smtp/MCAsyncSMTP.h index 194a8fd3..358868f5 100644 --- a/src/async/smtp/MCAsyncSMTP.h +++ b/src/async/smtp/MCAsyncSMTP.h @@ -12,6 +12,7 @@ #include <MailCore/MCSMTPAsyncSession.h> #include <MailCore/MCSMTPOperation.h> +#include <MailCore/MCSMTPNoopOperation.h> #include <MailCore/MCSMTPOperationCallback.h> #endif diff --git a/src/objc/abstract/MCOConstants.h b/src/objc/abstract/MCOConstants.h index b2516754..0c0f701b 100644 --- a/src/objc/abstract/MCOConstants.h +++ b/src/objc/abstract/MCOConstants.h @@ -334,6 +334,8 @@ typedef enum { MCOErrorNoSender, /** SMTP: Error when no recipient has been specified.*/ MCOErrorNoRecipient, + /** IMAP: Error when a noop operation fails.*/ + MCOErrorNoop, /** The count of all errors */ MCOErrorCodeCount, } MCOErrorCode; diff --git a/src/objc/imap/MCOIMAPNoopOperation.h b/src/objc/imap/MCOIMAPNoopOperation.h new file mode 100644 index 00000000..9e876748 --- /dev/null +++ b/src/objc/imap/MCOIMAPNoopOperation.h @@ -0,0 +1,32 @@ +// +// MCOIMAPNoopOperation.h +// mailcore2 +// +// Created by Robert Widmann on 9/24/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __MAILCORE_MCOIMAPNOOPOPERATION_H_ + +#define __MAILCORE_MCOIMAPNOOPOPERATION_H_ + +#import <MailCore/MCOIMAPBaseOperation.h> + +/* The class is used to perform a No-Op operation. */ +@interface MCOIMAPNoopOperation : MCOIMAPBaseOperation + +/** + Starts the asynchronous operation. + + @param completionBlock Called when the operation is finished. + + - On success `error` will be nil + + - On failure, `error` will be set + */ + +- (void) start:(void (^)(NSError * error))completionBlock; + +@end + +#endif diff --git a/src/objc/imap/MCOIMAPNoopOperation.mm b/src/objc/imap/MCOIMAPNoopOperation.mm new file mode 100644 index 00000000..a8878713 --- /dev/null +++ b/src/objc/imap/MCOIMAPNoopOperation.mm @@ -0,0 +1,69 @@ +// +// MCOIMAPNoopOperation.m +// mailcore2 +// +// Created by Robert Widmann on 9/24/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOIMAPNoopOperation.h" + +#include "MCAsyncIMAP.h" + +#import "MCOOperation+Private.h" +#import "MCOUtils.h" + +typedef void (^CompletionType)(NSError * error); + +@implementation MCOIMAPNoopOperation { + CompletionType _completionBlock; +} + +#define nativeType mailcore::IMAPNoopOperation + ++ (void) load +{ + MCORegisterClass(self, &typeid(nativeType)); +} + ++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object +{ + nativeType * op = (nativeType *) object; + return [[[self alloc] initWithMCOperation:op] autorelease]; +} + +- (void) dealloc +{ + [_completionBlock release]; + [super dealloc]; +} + +- (void) start:(void (^)(NSError * error))completionBlock +{ + _completionBlock = [completionBlock copy]; + [self start]; +} + +- (void) cancel +{ + [_completionBlock release]; + _completionBlock = nil; + [super cancel]; +} + +- (void) operationCompleted +{ + if (_completionBlock == NULL) + return; + + nativeType *op = MCO_NATIVE_INSTANCE; + if (op->error() == mailcore::ErrorNone) { + _completionBlock(nil); + } else { + _completionBlock([NSError mco_errorWithErrorCode:op->error()]); + } + [_completionBlock release]; + _completionBlock = nil; +} + +@end diff --git a/src/objc/imap/MCOIMAPSession.h b/src/objc/imap/MCOIMAPSession.h index 0759f714..82963f90 100755 --- a/src/objc/imap/MCOIMAPSession.h +++ b/src/objc/imap/MCOIMAPSession.h @@ -503,6 +503,16 @@ - (MCOIMAPOperation *)connectOperation; /** + Returns an operation that will perform a No-Op operation on the given IMAP server. + + MCOIMAPOperation * op = [session noopOperation]; + [op start:^(NSError * error) { + ... + }]; + */ +- (MCOIMAPOperation *) noopOperation; + +/** Returns an operation that will check whether the IMAP account is valid. MCOIMAPOperation * op = [session checkAccountOperation]; diff --git a/src/objc/imap/MCOIMAPSession.mm b/src/objc/imap/MCOIMAPSession.mm index e7732b16..38924c83 100755 --- a/src/objc/imap/MCOIMAPSession.mm +++ b/src/objc/imap/MCOIMAPSession.mm @@ -396,6 +396,12 @@ MCO_OBJC_SYNTHESIZE_SCALAR(unsigned int, unsigned int, setMaximumConnections, ma return OPAQUE_OPERATION(coreOp); } +- (MCOIMAPOperation *) noopOperation +{ + IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->noopOperation(); + return OPAQUE_OPERATION(coreOp); +} + - (MCOIMAPOperation *)checkAccountOperation { IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->checkAccountOperation(); diff --git a/src/objc/pop/MCOPOPNoopOperation.h b/src/objc/pop/MCOPOPNoopOperation.h new file mode 100644 index 00000000..9fad4196 --- /dev/null +++ b/src/objc/pop/MCOPOPNoopOperation.h @@ -0,0 +1,34 @@ +// +// MCOPOPNoopOperation.h +// mailcore2 +// +// Created by Robert Widmann on 9/24/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __MAILCORE_MCOPOPNOOPOPERATION_H_ + +#define __MAILCORE_MCOPOPNOOPOPERATION_H_ + +#import <Foundation/Foundation.h> +#import <MailCore/MCOPOPOperation.h> + +/** This is an asynchronous operation that will perform a No-Op on the POP3 account. */ + +@interface MCOPOPNoopOperation : MCOPOPOperation + +/** + Starts the asynchronous noop operation. + + @param completionBlock Called when the operation is finished. + + - On success `error` will be nil + + - On failure, `error` will be set with `MCOErrorDomain` as domain and an + error code available in MCOConstants.h + */ +- (void) start:(void (^)(NSError * error))completionBlock; + +@end + +#endif diff --git a/src/objc/pop/MCOPOPNoopOperation.mm b/src/objc/pop/MCOPOPNoopOperation.mm new file mode 100644 index 00000000..b8faf30f --- /dev/null +++ b/src/objc/pop/MCOPOPNoopOperation.mm @@ -0,0 +1,70 @@ +// +// MCOPOPNoopOperation.m +// mailcore2 +// +// Created by Robert Widmann on 9/24/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOPOPNoopOperation.h" + +#include "MCAsyncPOP.h" + +#import "MCOOperation+Private.h" +#import "MCOUtils.h" + +typedef void (^CompletionType)(NSError *error); + +@implementation MCOPOPNoopOperation { + CompletionType _completionBlock; +} + +#define nativeType mailcore::POPNoopOperation + ++ (void) load +{ + MCORegisterClass(self, &typeid(nativeType)); +} + ++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object +{ + nativeType * op = (nativeType *) object; + return [[[self alloc] initWithMCOperation:op] autorelease]; +} + +- (void) dealloc +{ + [_completionBlock release]; + [super dealloc]; +} + +- (void) start:(void (^)(NSError *error))completionBlock +{ + _completionBlock = [completionBlock copy]; + [self start]; +} + +- (void) cancel +{ + [_completionBlock release]; + _completionBlock = nil; + [super cancel]; +} + +- (void) operationCompleted +{ + if (_completionBlock == NULL) + return; + + nativeType *op = MCO_NATIVE_INSTANCE; + if (op->error() == mailcore::ErrorNone) { + _completionBlock(nil); + } else { + _completionBlock([NSError mco_errorWithErrorCode:op->error()]); + } + [_completionBlock release]; + _completionBlock = nil; +} + + +@end diff --git a/src/objc/pop/MCOPOPSession.h b/src/objc/pop/MCOPOPSession.h index 4f98421c..aa381a62 100644 --- a/src/objc/pop/MCOPOPSession.h +++ b/src/objc/pop/MCOPOPSession.h @@ -130,6 +130,16 @@ See MCOConnectionType for more information.*/ */ - (MCOPOPOperation *) checkAccountOperation; +/** + Returns an operation that will perform a No-Op operation. + + MCOPOPOperation * op = [session noopOperation]; + [op start:^(NSError * error) { + ... + }]; + */ +- (MCOPOPOperation *) noopOperation; + @end #endif diff --git a/src/objc/pop/MCOPOPSession.mm b/src/objc/pop/MCOPOPSession.mm index fb48cb1e..1037f951 100644 --- a/src/objc/pop/MCOPOPSession.mm +++ b/src/objc/pop/MCOPOPSession.mm @@ -158,6 +158,12 @@ MCO_OBJC_SYNTHESIZE_BOOL(setCheckCertificateEnabled, isCheckCertificateEnabled) return OPAQUE_OPERATION(coreOp); } +- (MCOPOPOperation *) noopOperation +{ + mailcore::POPOperation * coreOp = MCO_NATIVE_INSTANCE->noopOperation(); + return OPAQUE_OPERATION(coreOp); +} + - (void) _logWithSender:(void *)sender connectionType:(MCOConnectionLogType)logType data:(NSData *)data { _connectionLogger(sender, logType, data); diff --git a/src/objc/smtp/MCOSMTPNoopOperation.h b/src/objc/smtp/MCOSMTPNoopOperation.h new file mode 100644 index 00000000..38ab386e --- /dev/null +++ b/src/objc/smtp/MCOSMTPNoopOperation.h @@ -0,0 +1,32 @@ +// +// MCOSMTPNoopOperation.h +// mailcore2 +// +// Created by Robert Widmann on 9/24/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __MAILCORE_MCOSMTPNOOPOPERATION_H_ + +#define __MAILCORE_MCOSMTPNOOPOPERATION_H_ + +#import <MailCore/MCOSMTPOperation.h> + +/** This is an asynchronous operation that will perform a noop operation through SMTP. */ +@interface MCOSMTPNoopOperation : MCOSMTPOperation + +/* + Starts the asynchronous operation. + + @param completionBlock Called when the operation is finished. + + - On success `error` will be nil + + - On failure, `error` will be set with `MCOErrorDomain` as domain and an + error code available in MCOConstants.h, + */ +- (void) start:(void (^)(NSError * error))completionBlock; + +@end + +#endif diff --git a/src/objc/smtp/MCOSMTPNoopOperation.mm b/src/objc/smtp/MCOSMTPNoopOperation.mm new file mode 100644 index 00000000..3a1fced0 --- /dev/null +++ b/src/objc/smtp/MCOSMTPNoopOperation.mm @@ -0,0 +1,66 @@ +// +// MCOSMTPNoopOperation.m +// mailcore2 +// +// Created by Robert Widmann on 9/24/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOSMTPNoopOperation.h" + +#include "MCAsyncSMTP.h" + +#import "MCOUtils.h" +#import "MCOOperation+Private.h" + +typedef void (^CompletionType)(NSError *error); + +@implementation MCOSMTPNoopOperation { + CompletionType _completionBlock; +} + +#define nativeType mailcore::SMTPNoopOperation + ++ (void) load +{ + MCORegisterClass(self, &typeid(nativeType)); +} + ++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object +{ + nativeType * op = (nativeType *) object; + return [[[self alloc] initWithMCOperation:op] autorelease]; +} + +- (void) dealloc +{ + [_completionBlock release]; + [super dealloc]; +} + +- (void) start:(void (^)(NSError *error))completionBlock +{ + _completionBlock = [completionBlock copy]; + [self start]; +} + +- (void) cancel +{ + [_completionBlock release]; + _completionBlock = nil; + [super cancel]; +} + +- (void)operationCompleted +{ + if (_completionBlock == NULL) + return; + + NSError * error = [NSError mco_errorWithErrorCode:MCO_NATIVE_INSTANCE->error()]; + _completionBlock(error); + [_completionBlock release]; + _completionBlock = NULL; +} + + +@end diff --git a/src/objc/smtp/MCOSMTPSession.h b/src/objc/smtp/MCOSMTPSession.h index 6716ee30..90351551 100644 --- a/src/objc/smtp/MCOSMTPSession.h +++ b/src/objc/smtp/MCOSMTPSession.h @@ -120,6 +120,16 @@ */ - (MCOSMTPOperation *) checkAccountOperationWithFrom:(MCOAddress *)from; +/** + Returns an operation that will perform a No-Op. + + MCOPOPOperation * op = [session noopOperation]; + [op start:^(NSError * error) { + ... + }]; + */ +- (MCOSMTPOperation *) noopOperation; + @end #endif diff --git a/src/objc/smtp/MCOSMTPSession.mm b/src/objc/smtp/MCOSMTPSession.mm index 0c24f66c..29211118 100644 --- a/src/objc/smtp/MCOSMTPSession.mm +++ b/src/objc/smtp/MCOSMTPSession.mm @@ -12,6 +12,7 @@ #import "MCOUtils.h" #import "MCOSMTPSendOperation.h" +#import "MCOSMTPNoopOperation.h" #import "MCOSMTPOperation.h" #import "MCOOperation+Private.h" #import "MCOAddress.h" @@ -130,6 +131,14 @@ MCO_OBJC_SYNTHESIZE_BOOL(setUseHeloIPEnabled, useHeloIPEnabled) return result; } +- (MCOSMTPOperation *) noopOperation +{ + mailcore::SMTPOperation * coreOp = MCO_NATIVE_INSTANCE->noopOperation(); + MCOSMTPNoopOperation * result = [[[MCOSMTPNoopOperation alloc] initWithMCOperation:coreOp] autorelease]; + [result setSession:self]; + return result; +} + - (void) _logWithSender:(void *)sender connectionType:(MCOConnectionLogType)logType data:(NSData *)data { _connectionLogger(sender, logType, data); diff --git a/src/objc/utils/NSError+MCO.mm b/src/objc/utils/NSError+MCO.mm index 8b903043..6d49e4bb 100644 --- a/src/objc/utils/NSError+MCO.mm +++ b/src/objc/utils/NSError+MCO.mm @@ -47,6 +47,7 @@ static NSString * MCOLocalizedDescriptionTable[] = { @"Compression is not available", /** MCOErrorCompression */ @"A sender is required to send message", /** MCOErrorNoSender */ @"A recipient is required to send message", /** MCOErrorNoRecipient */ + @"An error occured while performing a No-Op operation.", /** MCOErrorNoop */ }; @implementation NSError (MCO) |