diff options
author | 2014-10-25 09:12:24 -0700 | |
---|---|---|
committer | 2014-10-25 09:12:24 -0700 | |
commit | cd37682217b0dafacfe02a3a3d64e2c80a329cce (patch) | |
tree | f241bc5de3a9855d1a94d9be80b8798b7ad37a69 /src/objc/nntp/MCONNTPFetchAllArticlesOperation.mm | |
parent | 128a11a36103c3a57372cf72a51e52744524d827 (diff) | |
parent | 386f84abe048c4b37cef42195d612b480021df3f (diff) |
Merge branch 'master' into removing-icu-dependency
Diffstat (limited to 'src/objc/nntp/MCONNTPFetchAllArticlesOperation.mm')
-rw-r--r-- | src/objc/nntp/MCONNTPFetchAllArticlesOperation.mm | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/objc/nntp/MCONNTPFetchAllArticlesOperation.mm b/src/objc/nntp/MCONNTPFetchAllArticlesOperation.mm new file mode 100644 index 00000000..947f0324 --- /dev/null +++ b/src/objc/nntp/MCONNTPFetchAllArticlesOperation.mm @@ -0,0 +1,70 @@ +// +// MCONNTPFetchAllArticlesOperation.m +// mailcore2 +// +// Created by Robert Widmann on 8/13/14. +// Copyright (c) 2014 MailCore. All rights reserved. +// + +#import "MCONNTPFetchAllArticlesOperation.h" + +#include "MCAsyncNNTP.h" + +#import "MCOOperation+Private.h" +#import "MCOUtils.h" + +typedef void (^CompletionType)(NSError *error, MCOIndexSet * articles); + +@implementation MCONNTPFetchAllArticlesOperation { + CompletionType _completionBlock; +} + +#define nativeType mailcore::NNTPFetchAllArticlesOperation + ++ (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, MCOIndexSet * articles))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, MCO_TO_OBJC(op->articles())); + } else { + _completionBlock([NSError mco_errorWithErrorCode:op->error()], nil); + } + [_completionBlock release]; + _completionBlock = nil; +} + + +@end |