From 63f2b3e29d92077a30f198ccfb6fe4cb7f262f87 Mon Sep 17 00:00:00 2001 From: CodaFi Date: Tue, 24 Sep 2013 21:57:10 -0600 Subject: Implement Objective-C Interface --- src/objc/imap/MCOIMAPNoopOperation.mm | 69 +++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/objc/imap/MCOIMAPNoopOperation.mm (limited to 'src/objc/imap/MCOIMAPNoopOperation.mm') 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 -- cgit v1.2.3