diff options
Diffstat (limited to 'src/objc/smtp/MCOSMTPNoopOperation.mm')
-rw-r--r-- | src/objc/smtp/MCOSMTPNoopOperation.mm | 66 |
1 files changed, 66 insertions, 0 deletions
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 |