// // MBIMUpdatePollOperation.m // kordophoned // // Created by James Magahern on 11/16/18. // Copyright © 2018 James Magahern. All rights reserved. // #import "MBIMUpdatePollOperation.h" #import "MBIMUpdateQueue.h" @implementation MBIMUpdatePollOperation { __strong MBIMUpdateConsumer _updateConsumer; } + (void)load { [super load]; } + (NSString *)endpointName { return @"pollUpdates"; } - (void)main { NSInteger messageSeq = -1; NSString *messageSeqString = [self valueForQueryItemWithName:@"seq"]; if (messageSeqString) { messageSeq = [messageSeqString integerValue]; } __weak __auto_type weakSelf = self; _updateConsumer = ^(NSArray *updates) { NSMutableArray *encodedUpdates = [NSMutableArray array]; for (MBIMUpdateItem *item in updates) { NSDictionary *updateDict = [item dictionaryRepresentation]; [encodedUpdates addObject:updateDict]; } MBIMJSONDataResponse *response = [MBIMJSONDataResponse responseWithJSONObject:encodedUpdates]; weakSelf.serverCompletionBlock(response); }; [[MBIMUpdateQueue sharedInstance] addConsumer:_updateConsumer withLastSyncedMessageSeq:messageSeq]; } - (void)cancel { [super cancel]; [[MBIMUpdateQueue sharedInstance] removeConsumer:_updateConsumer]; } - (NSObject *)cancelAndReturnTimeoutResponse { [self cancel]; return [[HTTPErrorResponse alloc] initWithErrorCode:205]; // 205 = nothing to report } @end