aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc/smtp/MCOSMTPLoginOperation.mm
diff options
context:
space:
mode:
authorGravatar robario <webmaster@robario.com>2014-10-29 17:32:09 +0900
committerGravatar robario <webmaster@robario.com>2014-10-29 18:12:59 +0900
commitaeb15860575a764dd444108098dcb95c73d4d6df (patch)
tree222c675c1fbdf04d44c535d7bc6208c5869eb2c5 /src/objc/smtp/MCOSMTPLoginOperation.mm
parent2f6f1ca69d59e2692f85d56941e7d996195cd6e8 (diff)
Add a new operation for SMTP login.
Diffstat (limited to 'src/objc/smtp/MCOSMTPLoginOperation.mm')
-rw-r--r--src/objc/smtp/MCOSMTPLoginOperation.mm66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/objc/smtp/MCOSMTPLoginOperation.mm b/src/objc/smtp/MCOSMTPLoginOperation.mm
new file mode 100644
index 00000000..ece721ee
--- /dev/null
+++ b/src/objc/smtp/MCOSMTPLoginOperation.mm
@@ -0,0 +1,66 @@
+//
+// MCOSMTPLoginOperation.m
+// mailcore2
+//
+// Created by Robert Widmann on 9/24/13.
+// Copyright (c) 2013 MailCore. All rights reserved.
+//
+
+#import "MCOSMTPLoginOperation.h"
+
+#include "MCSMTPLoginOperation.h"
+
+#import "MCOUtils.h"
+#import "MCOOperation+Private.h"
+
+typedef void (^CompletionType)(NSError *error);
+
+@implementation MCOSMTPLoginOperation {
+ CompletionType _completionBlock;
+}
+
+#define nativeType mailcore::SMTPLoginOperation
+
++ (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