From 385cc749bebd4863a1df8834f449f27a555e19f5 Mon Sep 17 00:00:00 2001 From: Nikita Lutsenko Date: Fri, 20 Nov 2015 15:51:55 -0800 Subject: [PATCH] Remove redundant task creation for results of continuations. --- .../OfflineQueryLogic/PFOfflineQueryLogic.m | 3 ++- .../OfflineStore/PFOfflineStore.m | 22 +++++++++---------- .../LocalDataStore/SQLite/PFSQLiteDatabase.m | 4 ++-- .../PFOfflineObjectController.m | 2 +- Parse/Internal/PFCommandCache.m | 2 +- .../PFUserAuthenticationController.m | 4 ++-- .../PFCurrentUserController.m | 5 ++--- Parse/PFFile.m | 4 ++-- Parse/PFObject.m | 10 ++++----- Parse/PFQuery.m | 4 ++-- Parse/PFUser.m | 6 ++--- 11 files changed, 32 insertions(+), 34 deletions(-) diff --git a/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m b/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m index bf4920087..71e26c8cf 100644 --- a/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m +++ b/Parse/Internal/LocalDataStore/OfflineQueryLogic/PFOfflineQueryLogic.m @@ -10,6 +10,7 @@ #import "PFOfflineQueryLogic.h" #import +#import #import "PFACL.h" #import "PFAssert.h" @@ -695,7 +696,7 @@ - (BFTask *)fetchIncludeAsync:(NSString *)include rest = [[parts subarrayWithRange:range] componentsJoinedByString:@"."]; } - return [[[BFTask taskWithResult:nil] continueWithBlock:^id(BFTask *task) { + return [[BFTask taskFromExecutor:[BFExecutor defaultExecutor] withBlock:^id{ if ([container isKindOfClass:[PFObject class]]) { BFTask *fetchTask = [self fetchIncludeAsync:nil container:container database:database]; return [fetchTask continueWithSuccessBlock:^id(BFTask *task) { diff --git a/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m b/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m index 98c30038e..e5c8a4331 100644 --- a/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m +++ b/Parse/Internal/LocalDataStore/OfflineStore/PFOfflineStore.m @@ -143,14 +143,14 @@ - (BFTask *)fetchObjectLocallyAsync:(PFObject *)object database:(PFSQLiteDatabas // The object has been fetched from offline store, so any data that's in there // is already reflected in the in-memory version. There's nothing more to do. return [fetchTask continueWithBlock:^id(BFTask *task) { - return [BFTask taskWithResult:[task.result weakObject]]; + return [task.result weakObject]; }]; } // Put a placeholder so that anyone else who attempts to fetch this object will just // wait for this call to finish doing it. [self.fetchedObjects setObject:[tcs.task continueWithBlock:^id(BFTask *task) { - return [BFTask taskWithResult:[PFWeakValue valueWithWeakObject:task.result]]; + return [PFWeakValue valueWithWeakObject:task.result]; }] forKey:object]; uuidTask = [self.objectToUUIDMap objectForKey:object]; } @@ -277,7 +277,7 @@ - (BFTask *)fetchObjectLocallyAsync:(PFObject *)object database:(PFSQLiteDatabas return [[BFTask taskForCompletionOfAllTasks:objectValues] continueWithSuccessBlock:^id(BFTask *task) { PFDecoder *decoder = [PFOfflineDecoder decoderWithOfflineObjects:offlineObjects]; [object mergeFromRESTDictionary:parsedJson withDecoder:decoder]; - return [BFTask taskWithResult:nil]; + return nil; }]; }] continueWithBlock:^id(BFTask *task) { if (task.isCancelled) { @@ -353,7 +353,7 @@ - (BFTask *)saveObjectLocallyAsync:(PFObject *)object NSString *uuid = task.result; if (uuid == nil) { // The root object was never stored in offline store, so nothing unpin. - return [BFTask taskWithResult:nil]; + return nil; } // Delete all objects locally corresponding to the key we're trying to use in case it was @@ -531,14 +531,14 @@ - (BFTask *)findAsyncForQueryState:(PFQueryState *)queryState return [self fetchObjectLocallyAsync:object database:database]; }] continueWithSuccessBlock:^id(BFTask *task) { if (!object.dataAvailable) { - return [BFTask taskWithResult:@NO]; + return @NO; } return matcherBlock(object, database); }] continueWithSuccessBlock:^id(BFTask *task) { if ([task.result boolValue]) { [mutableResults addObject:object]; } - return [BFTask taskWithResult:nil]; + return nil; }]; } [result close]; @@ -588,9 +588,9 @@ - (BFTask *)updateDataForObjectAsync:(PFObject *)object { if (task.error != nil) { // Catch CACHE_MISS errors and ignore them. if (task.error.code == kPFErrorCacheMiss) { - return [BFTask taskWithResult:nil]; + return nil; } - return [BFTask taskWithResult:[task.result weakObject]]; + return [task.result weakObject]; } return [self _performDatabaseTransactionAsyncWithBlock:^BFTask *(PFSQLiteDatabase *database) { @@ -751,7 +751,7 @@ - (BFTask *)unpinObjectAsync:(PFObject *)object { NSString *uuid = task.result; if (!uuid) { // The root object was never stored in the offline store, so nothing to unpin. - return [BFTask taskWithResult:nil]; + return nil; } return [self _unpinKeyAsync:uuid]; }]; @@ -798,7 +798,7 @@ - (BFTask *)_unpinKeyAsync:(NSString *)key database:(PFSQLiteDatabase *)database } } } - return [BFTask taskWithResult:nil]; + return nil; }]; } @@ -861,7 +861,7 @@ - (BFTask *)getOrCreateUUIDAsyncForObject:(PFObject *)object [[database executeSQLAsync:query withArgumentsInArray:@[ newUUID, [object parseClassName]]] continueWithSuccessBlock:^id(BFTask *task) { [tcs setResult:newUUID]; - return [BFTask taskWithResult:nil]; + return nil; }]; return tcs.task; diff --git a/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m b/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m index fb9c07786..1fa3e4683 100644 --- a/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m +++ b/Parse/Internal/LocalDataStore/SQLite/PFSQLiteDatabase.m @@ -124,7 +124,7 @@ - (BFTask *)openAsync { } self.database = db; - return [BFTask taskWithResult:nil]; + return nil; }]; } @@ -242,7 +242,7 @@ - (BFTask *)executeSQLAsync:(NSString *)sql withArgumentsInArray:(NSArray *)args switch (sqliteResultCode) { case SQLITE_DONE: { - return [BFTask taskWithResult:nil]; + return nil; } case SQLITE_ROW: { NSError *error = [self _errorWithErrorCode:PFSQLiteDatabaseInvalidSQL diff --git a/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m b/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m index e9cefc33d..7714c8b8b 100644 --- a/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m +++ b/Parse/Internal/Object/Controller/OfflineController/PFOfflineObjectController.m @@ -57,7 +57,7 @@ - (BFTask *)processFetchResultAsync:(NSDictionary *)result forObject:(PFObject * // Catch CACHE_MISS and ignore it. if ([task.error.domain isEqualToString:PFParseErrorDomain] && task.error.code == kPFErrorCacheMiss) { - return [BFTask taskWithResult:nil]; + return nil; } return task; }]; diff --git a/Parse/Internal/PFCommandCache.m b/Parse/Internal/PFCommandCache.m index 6889964e2..051b0700d 100644 --- a/Parse/Internal/PFCommandCache.m +++ b/Parse/Internal/PFCommandCache.m @@ -257,7 +257,7 @@ - (BFTask *)_cleanupDiskCacheWithRequiredFreeSize:(NSUInteger)requiredSize { } } - return [BFTask taskWithResult:nil]; + return nil; }]; } diff --git a/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m b/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m index 2f5083861..e0ba17fe0 100644 --- a/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m +++ b/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m @@ -101,7 +101,7 @@ - (void)unregisterAuthenticationDelegateForAuthType:(NSString *)authType { return [BFTask taskWithResult:@YES]; } return [BFTask taskFromExecutor:[BFExecutor defaultPriorityBackgroundExecutor] withBlock:^id { - return [BFTask taskWithResult:@([provider restoreAuthenticationWithAuthData:authData])]; + return @([provider restoreAuthenticationWithAuthData:authData]); }]; } @@ -159,7 +159,7 @@ - (BFTask *)logInUserAsyncWithAuthType:(NSString *)authType authData:(NSDictiona } } - return [BFTask taskWithResult:currentUser]; + return currentUser; }]; } } diff --git a/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m b/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m index 43682b723..568d86c42 100644 --- a/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m +++ b/Parse/Internal/User/CurrentUserController/PFCurrentUserController.m @@ -224,10 +224,9 @@ - (BFTask *)_loadCurrentUserFromDiskAsync { task = [[query findObjectsInBackground] continueWithSuccessBlock:^id(BFTask *task) { NSArray *results = task.result; if ([results count] == 1) { - return [BFTask taskWithResult:results.firstObject]; + return results.firstObject; } else if ([results count] != 0) { - return [[PFObject unpinAllObjectsInBackgroundWithName:PFUserCurrentUserPinName] - continueWithSuccessResult:nil]; + return [[PFObject unpinAllObjectsInBackgroundWithName:PFUserCurrentUserPinName] continueWithSuccessResult:nil]; } // Backward compatibility if we previously have non-LDS currentUser. diff --git a/Parse/PFFile.m b/Parse/PFFile.m index fc9a83c11..2a8f92906 100644 --- a/Parse/PFFile.m +++ b/Parse/PFFile.m @@ -321,7 +321,7 @@ - (BFTask *)_uploadAsyncWithProgressBlock:(PFProgressBlock)progressBlock { return [self.taskQueue enqueue:^id(BFTask *task) { if (!self.dirty) { [self _performProgressBlockAsync:progressBlock withProgress:100]; - return [BFTask taskWithResult:nil]; + return nil; } return [self _uploadFileAsyncWithSessionToken:sessionToken @@ -388,7 +388,7 @@ - (BFTask *)_downloadAsyncWithProgressBlock:(PFProgressBlock)progressBlock { @strongify(self); if (self.dataAvailable) { [self _performProgressBlockAsync:progressBlock withProgress:100]; - return [BFTask taskWithResult:nil]; + return nil; } PFFileController *controller = [[self class] fileController]; diff --git a/Parse/PFObject.m b/Parse/PFObject.m index 5686cdfc1..87157ac02 100644 --- a/Parse/PFObject.m +++ b/Parse/PFObject.m @@ -1070,7 +1070,7 @@ - (BFTask *)_enqueueSaveEventuallyWithChildren:(BOOL)saveChildren { @synchronized (lock) { [self _objectWillSave]; if (![self isDirty:NO]) { - return [BFTask taskWithResult:@YES]; + return @YES; } } @@ -1332,11 +1332,9 @@ - (void)_mergeFromServerWithResult:(NSDictionary *)result decoder:(PFDecoder *)d // to add special actions after operations. - (BFTask *)handleSaveResultAsync:(NSDictionary *)result { - BFTask *task = [BFTask taskWithResult:nil]; - NSDictionary *fetchedObjects = [self _collectFetchedObjects]; - [task continueWithBlock:^id(BFTask *task) { + BFTask *task = [BFTask taskFromExecutor:[BFExecutor defaultExecutor] withBlock:^id{ PFKnownParseObjectDecoder *decoder = [PFKnownParseObjectDecoder decoderWithFetchedObjects:fetchedObjects]; @synchronized (self.lock) { // TODO (hallucinogen): t5611821 we need to make mergeAfterSave that accepts decoder and operationBeforeSave @@ -1357,7 +1355,7 @@ - (BFTask *)handleSaveResultAsync:(NSDictionary *)result { if (self.saveDelegate) { [self.saveDelegate invoke:self error:nil]; } - return [BFTask taskWithResult:@(!!result)]; + return @(result != nil); } }]; } @@ -1388,7 +1386,7 @@ - (BFTask *)saveAsync:(BFTask *)toAwait { }] continueWithBlock:^id(BFTask *task) { @synchronized (lock) { if (![self isDirty:YES]) { - return [BFTask taskWithResult:@YES]; + return @YES; } [self _objectWillSave]; diff --git a/Parse/PFQuery.m b/Parse/PFQuery.m index dbe0ed6ba..d467f921f 100644 --- a/Parse/PFQuery.m +++ b/Parse/PFQuery.m @@ -758,7 +758,7 @@ - (BFTask *)_getObjectWithIdAsync:(NSString *)objectId cachePolicy:(PFCachePolic return [BFTask taskWithError:[PFQueryUtilities objectNotFoundError]]; } - return [BFTask taskWithResult:objects.lastObject]; + return objects.lastObject; }]; } @@ -904,7 +904,7 @@ - (BFTask *)_getFirstObjectAsyncWithCachePolicy:(PFCachePolicy)cachePolicy after return [BFTask taskWithError:[PFQueryUtilities objectNotFoundError]]; } - return [BFTask taskWithResult:objects.lastObject]; + return objects.lastObject; }]; } diff --git a/Parse/PFUser.m b/Parse/PFUser.m index 2c5364e4f..45f374ba7 100644 --- a/Parse/PFUser.m +++ b/Parse/PFUser.m @@ -240,7 +240,7 @@ - (BFTask *)_handleServiceLoginCommandResult:(PFCommandResult *)result { return self; }]; } - return [BFTask taskWithResult:self]; + return self; } }]; }]; @@ -699,7 +699,7 @@ + (BFTask *)_upgradeToRevocableSessionInBackground { // Bail-out early if session token is already revocable. if ([PFSessionUtilities isSessionTokenRevocable:sessionToken]) { - return [BFTask taskWithResult:currentUser]; + return currentUser; } return [currentUser _upgradeToRevocableSessionInBackground]; }]; @@ -718,7 +718,7 @@ - (BFTask *)_upgradeToRevocableSessionInBackground { // Check session token here as well, to make sure we didn't upgrade the token in between. if ([PFSessionUtilities isSessionTokenRevocable:token]) { - return [BFTask taskWithResult:self]; + return self; } PFRESTCommand *command = [PFRESTUserCommand upgradeToRevocableSessionCommandWithSessionToken:token];