123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #import "ReaderThumbQueue.h"
- @implementation ReaderThumbQueue
- {
- NSOperationQueue *loadQueue;
- NSOperationQueue *workQueue;
- }
- #pragma mark - ReaderThumbQueue class methods
- + (ReaderThumbQueue *)sharedInstance
- {
- static dispatch_once_t predicate = 0;
- static ReaderThumbQueue *object = nil;
- dispatch_once(&predicate, ^{ object = [self new]; });
- return object;
- }
- #pragma mark - ReaderThumbQueue instance methods
- - (instancetype)init
- {
- if ((self = [super init]))
- {
- loadQueue = [NSOperationQueue new];
- [loadQueue setName:@"ReaderThumbLoadQueue"];
- [loadQueue setMaxConcurrentOperationCount:1];
- workQueue = [NSOperationQueue new];
- [workQueue setName:@"ReaderThumbWorkQueue"];
- [workQueue setMaxConcurrentOperationCount:1];
- }
- return self;
- }
- - (void)addLoadOperation:(NSOperation *)operation
- {
- if ([operation isKindOfClass:[ReaderThumbOperation class]])
- {
- [loadQueue addOperation:operation];
- }
- }
- - (void)addWorkOperation:(NSOperation *)operation
- {
- if ([operation isKindOfClass:[ReaderThumbOperation class]])
- {
- [workQueue addOperation:operation];
- }
- }
- - (void)cancelOperationsWithGUID:(NSString *)guid
- {
- [loadQueue setSuspended:YES]; [workQueue setSuspended:YES];
- for (ReaderThumbOperation *operation in loadQueue.operations)
- {
- if ([operation isKindOfClass:[ReaderThumbOperation class]])
- {
- if ([operation.guid isEqualToString:guid]) [operation cancel];
- }
- }
- for (ReaderThumbOperation *operation in workQueue.operations)
- {
- if ([operation isKindOfClass:[ReaderThumbOperation class]])
- {
- if ([operation.guid isEqualToString:guid]) [operation cancel];
- }
- }
- [workQueue setSuspended:NO]; [loadQueue setSuspended:NO];
- }
- - (void)cancelAllOperations
- {
- [loadQueue cancelAllOperations]; [workQueue cancelAllOperations];
- }
- @end
- #pragma mark -
- @implementation ReaderThumbOperation
- {
- NSString *_guid;
- }
- @synthesize guid = _guid;
- #pragma mark - ReaderThumbOperation instance methods
- - (instancetype)initWithGUID:(NSString *)guid
- {
- if ((self = [super init]))
- {
- _guid = guid;
- }
- return self;
- }
- @end
|