From 02e5fdb8d0da7d6b8cb66df9e29d44a58c206d0b Mon Sep 17 00:00:00 2001 From: volodg Date: Fri, 13 Dec 2013 13:33:14 +0200 Subject: [PATCH 1/3] test --- .../project.pbxproj | 53 +- .../ImageCacheExample-Prefix.pch | 3 +- .../JFFAsyncOperationBuilder.m | 138 ++-- .../JFFAsyncOperationInterface.h | 12 +- .../Detail/JFFObjectRelatedPropertyData.h | 4 +- .../JFFPropertyExtractor.h | 5 +- .../JFFPropertyExtractor.m | 2 +- .../NSObject+AsyncPropertyReader.h | 6 +- .../NSObject+AsyncPropertyReader.m | 168 +++-- .../Categories/NSArray+AsyncMap.m | 2 +- .../Categories/NSDictionary+AsyncMap.m | 2 +- .../Detail/JFFAsyncOperationAdapter.mm | 15 +- .../Detail/JFFCallbacksBlocksHolder.h | 15 - .../Detail/JFFCallbacksBlocksHolder.m | 21 - .../JFFAsyncOpFinishedByCancellationError.h | 4 + .../JFFAsyncOpFinishedByCancellationError.m | 31 + .../JFFAsyncOpFinishedByUnsubscriptionError.h | 4 + .../JFFAsyncOpFinishedByUnsubscriptionError.m | 31 + .../JFFAsyncOperationAbstractFinishError.h | 8 + .../JFFAsyncOperationAbstractFinishError.m | 18 + .../Errors/JFFAsyncOperationError.h | 4 + .../Errors/JFFAsyncOperationError.m | 10 + .../Errors/JFFFileDescriptorReaderError.h | 4 + .../Errors/JFFFileDescriptorReaderError.m | 10 + .../JFFAsyncOperationHandlerBlockHolder.h | 13 + .../JFFAsyncOperationHandlerBlockHolder.m | 33 + .../JFFAsyncOperationProgressBlockHolder.h | 2 +- .../JFFCancelAsyncOperationBlockHolder.h | 10 - .../JFFCancelAsyncOperationBlockHolder.m | 22 - .../JFFDidFinishAsyncOperationBlockHolder.h | 4 +- .../JFFDidFinishAsyncOperationBlockHolder.m | 4 +- .../JFFAsyncOperationContinuity.m | 487 ++++++++------ .../JFFAsyncOperationHandlerTask.h | 13 + .../JFFAsyncOperationHelpers.h | 18 +- .../JFFAsyncOperationHelpers.m | 204 +++--- .../JFFAsyncOperationState.h | 10 + .../JFFAsyncOperationUtils.h | 8 +- .../JFFAsyncOperationUtils.mm | 20 +- lib/JFFAsyncOperations/JFFAsyncOperations.h | 6 + .../project.pbxproj | 355 +++++++++- .../JFFAsyncOperationsBlockDefinitions.h | 22 +- .../JFFAsyncOperationsPredefinedBlocks.h | 2 +- .../JFFAsyncOperationsPredefinedBlocks.m | 2 +- lib/JFFAsyncOperations/JFFBlockOperation.h | 6 +- lib/JFFAsyncOperations/JFFBlockOperation.mm | 18 +- .../LoadBalancer/Detail/JFFActiveLoaderData.h | 2 +- .../LoadBalancer/Detail/JFFBaseLoaderOwner.h | 8 +- .../LoadBalancer/Detail/JFFBaseLoaderOwner.m | 27 +- .../LoadBalancer/Detail/JFFContextLoaders.h | 24 +- .../LoadBalancer/Detail/JFFContextLoaders.m | 77 ++- .../LoadBalancer/Detail/JFFPedingLoaderData.h | 10 +- .../LoadBalancer/Detail/JFFPedingLoaderData.m | 8 + .../JFFAsyncOperationLoadBalancer.m | 167 ++--- .../LoadBalancer/JFFLimitedLoadersQueue.m | 64 +- .../NSObject+AutoCancelAsyncOperation.m | 63 +- lib/JFFAsyncOperations/Tools/JFFAsyncTools.h | 16 + lib/JFFAsyncOperations/Tools/JFFAsyncTools.m | 190 ++++++ .../JFFCache.xcodeproj/project.pbxproj | 2 + .../UIImageView+CachedAsyncImageLoader.m | 2 +- lib/JFFCache/JFFCache/JFFThumbnailStorage.m | 37 +- .../JFFContacts/Async/JFFAsyncContacts.m | 19 +- .../Details/JFFContactDictionaryArrayField.m | 15 +- .../Details/JFFContactPhotoField.m | 2 + .../Details/JFFContactStringArrayField.m | 8 +- .../Details/NSArray+kABMultiValue.m | 8 +- lib/JFFContacts/JFFContacts/JFFContact.m | 6 +- .../JFFContacts/JFFContactFieldsKeys.h | 28 +- .../JFFContacts/JFFContactFieldsKeys.m | 20 +- .../JFFCoreLocation.xcodeproj/project.pbxproj | 2 + .../asyncAdapters/JFFLocationLoader.m | 28 +- .../asyncAdapters/JFFPlacemarksLoader.m | 15 +- lib/JFFJpeg/JFFJpeg.xcodeproj/project.pbxproj | 2 - .../Details/JFFOptionalObjectFieldKey.m | 5 + .../Details/JFFOptionalObjectFieldValue.m | 5 + .../ContentEncodings/JNHttpEncodingsFactory.m | 7 +- .../Detail/JFFNetworkAsyncOperation.m | 31 +- .../DownloadManager/JFFDownloadItem.m | 65 +- .../JFFNetwork.xcodeproj/project.pbxproj | 140 ++++ lib/JFFNetwork/JFFNetworkBlocksFunctions.m | 24 +- .../JFFNetworkFW/JFFNetworkFW-Prefix.pch | 1 - .../JFFNetworkMacOS-Prefix.pch | 4 +- lib/JFFNetwork/JFFURLConnectionParams.h | 2 +- lib/JFFNetwork/JNNsUrlConnection.m | 15 + .../JFFRestKit.xcodeproj/project.pbxproj | 3 + .../JFFRestKit/JFFDataLoadersTools.m | 57 +- .../JFFRestKit/JFFSmartUrlDataLoader.m | 10 +- .../Async/JFFAsyncOperationHelpers.h | 16 +- .../Async/JFFAsyncOperationHelpers.m | 197 ++++-- .../JFFScheduler.xcodeproj/project.pbxproj | 10 + .../Facebook/AsyncAdapters/JFFAsyncFacebook.m | 18 +- .../AsyncAdapters/JFFAsyncFacebookDialog.m | 23 +- .../AsyncAdapters/JFFAsyncFacebookLogin.m | 23 +- ...AsyncFacebookLoginWithPublishPermissions.m | 23 +- .../AsyncAdapters/JFFAsyncFacebookLogout.m | 17 +- .../JFFFacebookPublishAccessRequestAdapter.m | 25 +- .../JFFSocial/Facebook/JFFSocialFacebook.h | 4 +- .../JFFSocial/Facebook/JFFSocialFacebook.m | 30 +- .../Facebook/Model/JFFSocialFacebookUser.h | 1 + .../AsyncAdapters/JFFAsyncFoursquaerLogin.m | 53 +- .../JFFFoursquareSessionStorage.h | 2 +- .../JFFFoursquareSessionStorage.m | 6 +- .../Foursquare/JFFSocialFoursquare.h | 2 + .../Foursquare/JFFSocialFoursquare.m | 29 +- .../JFFSocial/Instagram/JFFSocialInstagram.m | 22 +- .../Model/JFFInstagramMediaItemImage.h | 1 + .../JFFAsyncTwitterAccessRequest.m | 21 +- .../AsyncAdapters/JFFAsyncTwitterRequest.m | 17 +- .../JFFSocial/Twitter/JFFSocialTwitter.h | 2 +- .../JFFSocial/Twitter/JFFSocialTwitter.m | 30 +- .../JFFStoreKit.xcodeproj/project.pbxproj | 17 + .../Errors/JFFStoreKitCanNoLoadProductError.m | 8 + .../JFFStoreKitTransactionStateFailedError.m | 27 + .../asyncAdapters/asyncSKFinishTransaction.m | 27 +- .../asyncAdapters/asyncSKPaymentQueue.m | 32 +- .../asyncSKPendingTransactions.m | 52 +- .../asyncAdapters/asyncSKProductRequest.m | 22 +- .../JFFStoreKit/asyncPaymentOperations.h | 1 + .../JFFStoreKit/asyncPaymentOperations.m | 11 +- .../JFFTestTools.xcodeproj/project.pbxproj | 8 + .../JFFTestTools}/JFFAsyncOperationManager.h | 9 +- .../JFFTestTools/JFFAsyncOperationManager.m | 105 +++ lib/JFFTestTools/JFFTestTools/JFFTestTools.h | 1 + lib/JFFUI/AlertView/NSError+Alert.m | 41 ++ lib/JFFUI/Categories/JFFAlertView+Async.m | 19 +- .../UIApplication+OpenApplicationAsyncOp.m | 17 +- .../Categories/UIColor+ColorForHex.h | 0 .../Categories/UIColor+ColorForHex.m | 2 +- .../Categories/UIDevice+PlatformName.h | 0 .../Categories/UIDevice+PlatformName.m | 0 lib/JFFUI/JFFDialogProtocol.h | 2 +- lib/JFFUI/JFFUI.h | 4 +- lib/JFFUI/JFFUI.xcodeproj/project.pbxproj | 18 + lib/JFFUI/PhotoCamera/JFFPhotoCamera.m | 2 +- .../UIViewController+Dialog.m | 4 +- .../Errors/NSError+WriteErrorToNSLog.m | 2 +- lib/JFFUtils/JFFMutableAssignArray.h | 2 + lib/JFFUtils/JFFMutableAssignArray.m | 6 + lib/JFFUtils/JFFUtils.h | 2 - .../JFFUtils.xcodeproj/project.pbxproj | 380 +++++++++-- .../JFFUtilsTest/JFFMulticastDelegateTest.m | 6 +- .../MemoryManagement/JFFRuntimeInitializer.m | 1 + lib/JFFUtils/NSString/NSString+CPlusPlus.h | 2 +- lib/JFFUtils/NSString/NSString+CPlusPlus.mm | 4 +- .../project.pbxproj | 29 +- .../AsyncOperationBinder.m | 110 ++-- .../AsyncOperationWithDelayTest.m | 30 +- .../CachedAsyncOperationsTest.m | 373 ++++++----- ...ilOnFirstErrorGroupOfAsyncOperationsTest.m | 445 ++++++------- .../GroupOfAsyncOperationsTest.m | 615 +++++++++--------- .../JFFAsyncOperationManager.m | 96 --- .../JFFAsyncOperationUtilsTest.m | 4 +- .../JFFAsyncOperationsTest-Prefix.pch | 1 + .../JFFCancelAyncOperationBlockHolderTest.m | 66 +- .../JFFLimitedLoadersQueueTest.m | 35 +- .../JFileDescriptorReaderTest.m | 74 +++ .../JFFAsyncOperationsTest/ParalelBlockTest.m | 46 +- .../SequenceOfAsyncOperationsTest.m | 310 +++++---- .../SequenceWithAllResultTest.m | 103 ++- .../SequenceWithSuccessfullResultTest.m | 96 ++- .../TrySequenceOfAsyncOperationsTest.m | 254 ++++---- .../WeakAsyncOperationTest.m | 310 +++++---- test/JFFCachesTest/Default-568h@2x.png | Bin 0 -> 18594 bytes .../JFFContactsTest/JFFContactsTest.m | 2 +- .../project.pbxproj | 27 +- .../JFFNetworkTest/Classes/JFFConectionTest.m | 7 +- .../JFFNetworkTest.xcodeproj/project.pbxproj | 19 + .../JFFRestKitTest/JFFDataLoadersToolsTests.m | 14 +- .../JFFRestKitTest/SmartDataLoaderTest.m | 24 +- .../project.pbxproj | 23 + .../JFFAsyncOperationHelpersTest.m | 144 ++++ .../JFFSchedulerTest/JFFSchedulerTest.m | 128 ++-- .../Classes/OpenApplicationAsyncOpTest.m | 2 +- .../JFFUtilsTest.xcodeproj/project.pbxproj | 16 +- 173 files changed, 4887 insertions(+), 2970 deletions(-) delete mode 100755 lib/JFFAsyncOperations/Detail/JFFCallbacksBlocksHolder.h delete mode 100755 lib/JFFAsyncOperations/Detail/JFFCallbacksBlocksHolder.m create mode 100644 lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByCancellationError.h create mode 100644 lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByCancellationError.m create mode 100644 lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByUnsubscriptionError.h create mode 100644 lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByUnsubscriptionError.m create mode 100644 lib/JFFAsyncOperations/Errors/JFFAsyncOperationAbstractFinishError.h create mode 100644 lib/JFFAsyncOperations/Errors/JFFAsyncOperationAbstractFinishError.m create mode 100644 lib/JFFAsyncOperations/Errors/JFFAsyncOperationError.h create mode 100644 lib/JFFAsyncOperations/Errors/JFFAsyncOperationError.m create mode 100644 lib/JFFAsyncOperations/Errors/JFFFileDescriptorReaderError.h create mode 100644 lib/JFFAsyncOperations/Errors/JFFFileDescriptorReaderError.m create mode 100644 lib/JFFAsyncOperations/Helpers/JFFAsyncOperationHandlerBlockHolder.h create mode 100644 lib/JFFAsyncOperations/Helpers/JFFAsyncOperationHandlerBlockHolder.m delete mode 100644 lib/JFFAsyncOperations/Helpers/JFFCancelAsyncOperationBlockHolder.h delete mode 100755 lib/JFFAsyncOperations/Helpers/JFFCancelAsyncOperationBlockHolder.m create mode 100644 lib/JFFAsyncOperations/JFFAsyncOperationHandlerTask.h create mode 100644 lib/JFFAsyncOperations/JFFAsyncOperationState.h create mode 100644 lib/JFFAsyncOperations/Tools/JFFAsyncTools.h create mode 100644 lib/JFFAsyncOperations/Tools/JFFAsyncTools.m rename {test/JFFAsyncOperationsTest/JFFAsyncOperationsTest => lib/JFFTestTools/JFFTestTools}/JFFAsyncOperationManager.h (70%) create mode 100644 lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.m rename lib/{JFFUtils => JFFUI}/Categories/UIColor+ColorForHex.h (100%) rename lib/{JFFUtils => JFFUI}/Categories/UIColor+ColorForHex.m (96%) rename lib/{JFFUtils => JFFUI}/Categories/UIDevice+PlatformName.h (100%) rename lib/{JFFUtils => JFFUI}/Categories/UIDevice+PlatformName.m (100%) delete mode 100644 test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationManager.m create mode 100644 test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFileDescriptorReaderTest.m create mode 100644 test/JFFCachesTest/Default-568h@2x.png create mode 100644 test/JFFSchedulerTest/JFFSchedulerTest/JFFAsyncOperationHelpersTest.m diff --git a/app/ImageCacheExample/ImageCacheExample.xcodeproj/project.pbxproj b/app/ImageCacheExample/ImageCacheExample.xcodeproj/project.pbxproj index 1fa7b52..bba3684 100644 --- a/app/ImageCacheExample/ImageCacheExample.xcodeproj/project.pbxproj +++ b/app/ImageCacheExample/ImageCacheExample.xcodeproj/project.pbxproj @@ -40,6 +40,20 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 4C0C3F291826DD6300984027 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CEE23437160882F800B34AD8 /* JFFAsyncOperations.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4C1A0F8D182577BE0020FBF6; + remoteInfo = JFFAsyncOperationsMacOS; + }; + 4C0C3F301826DD6300984027 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CEE233EB160882DA00B34AD8 /* JFFRestKit.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4C043A4A181E9D8200246A88; + remoteInfo = JFFRestKitTests; + }; CE102F3B16089E13004229C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CEE233EB160882DA00B34AD8 /* JFFRestKit.xcodeproj */; @@ -448,7 +462,7 @@ isa = PBXGroup; children = ( CEE233D6160882CB00B34AD8 /* libJFFUI.a */, - CEE233D8160882CB00B34AD8 /* libJFFUI copy.a */, + CEE233D8160882CB00B34AD8 /* libJFFUI-clang.a */, ); name = Products; sourceTree = ""; @@ -468,6 +482,7 @@ isa = PBXGroup; children = ( CEE233F8160882DB00B34AD8 /* libJFFRestKit.a */, + 4C0C3F311826DD6300984027 /* JFFRestKitTests.xctest */, ); name = Products; sourceTree = ""; @@ -487,7 +502,7 @@ isa = PBXGroup; children = ( CEE23421160882EA00B34AD8 /* libJFFJsonTools.a */, - CEE23423160882EA00B34AD8 /* JFFJsonToolsTests.octest */, + CEE23423160882EA00B34AD8 /* JFFJsonToolsTests.xctest */, ); name = Products; sourceTree = ""; @@ -506,6 +521,7 @@ CEE2343E160882F800B34AD8 /* libJFFAsyncOperations.a */, CEE23440160882F800B34AD8 /* libJFFAsyncOperations-clang.a */, CEE23442160882F800B34AD8 /* JFFAsyncOperationsFW.framework */, + 4C0C3F2A1826DD6300984027 /* libJFFAsyncOperationsMacOS.a */, ); name = Products; sourceTree = ""; @@ -628,6 +644,20 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + 4C0C3F2A1826DD6300984027 /* libJFFAsyncOperationsMacOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libJFFAsyncOperationsMacOS.a; + remoteRef = 4C0C3F291826DD6300984027 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 4C0C3F311826DD6300984027 /* JFFRestKitTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = JFFRestKitTests.xctest; + remoteRef = 4C0C3F301826DD6300984027 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; CEE233C4160882C500B34AD8 /* libJFFUtils.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -670,10 +700,9 @@ remoteRef = CEE233D5160882CB00B34AD8 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - CEE233D8160882CB00B34AD8 /* libJFFUI copy.a */ = { + CEE233D8160882CB00B34AD8 /* libJFFUI-clang.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - name = "libJFFUI copy.a"; path = "libJFFUI-clang.a"; remoteRef = CEE233D7160882CB00B34AD8 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; @@ -748,10 +777,10 @@ remoteRef = CEE23420160882EA00B34AD8 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - CEE23423160882EA00B34AD8 /* JFFJsonToolsTests.octest */ = { + CEE23423160882EA00B34AD8 /* JFFJsonToolsTests.xctest */ = { isa = PBXReferenceProxy; fileType = wrapper.cfbundle; - path = JFFJsonToolsTests.octest; + path = JFFJsonToolsTests.xctest; remoteRef = CEE23422160882EA00B34AD8 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -934,7 +963,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -952,7 +980,10 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ../../lib; + HEADER_SEARCH_PATHS = ( + ../../lib, + ../../lib/JFFCache, + ); IPHONEOS_DEPLOYMENT_TARGET = 5.1; OTHER_LDFLAGS = "-all_load"; SDKROOT = iphoneos; @@ -964,7 +995,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -975,7 +1005,10 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = ../../lib; + HEADER_SEARCH_PATHS = ( + ../../lib, + ../../lib/JFFCache, + ); IPHONEOS_DEPLOYMENT_TARGET = 5.1; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; OTHER_LDFLAGS = "-all_load"; diff --git a/app/ImageCacheExample/ImageCacheExample/ImageCacheExample-Prefix.pch b/app/ImageCacheExample/ImageCacheExample/ImageCacheExample-Prefix.pch index 81f4472..0515be8 100644 --- a/app/ImageCacheExample/ImageCacheExample/ImageCacheExample-Prefix.pch +++ b/app/ImageCacheExample/ImageCacheExample/ImageCacheExample-Prefix.pch @@ -11,7 +11,8 @@ #ifdef __OBJC__ #import #import - + #import + #import #import #endif diff --git a/lib/JFFAsyncOperations/AsyncOperartionsBuilder/JFFAsyncOperationBuilder.m b/lib/JFFAsyncOperations/AsyncOperartionsBuilder/JFFAsyncOperationBuilder.m index f694a9b..1a6fa4c 100755 --- a/lib/JFFAsyncOperations/AsyncOperartionsBuilder/JFFAsyncOperationBuilder.m +++ b/lib/JFFAsyncOperations/AsyncOperartionsBuilder/JFFAsyncOperationBuilder.m @@ -1,80 +1,64 @@ #import "JFFAsyncOperationBuilder.h" #import "JFFAsyncOperationInterface.h" - -@interface JFFComplitionHandlerNotifier : NSObject - -@property (copy) JFFDidFinishAsyncOperationHandler completionHandler; - -- (void)notifyCallbackWithResult:(id)result error:(NSError *)error; - -@end - -@implementation JFFComplitionHandlerNotifier - -- (void)notifyCallbackWithResult:(id)result error:(NSError *)error -{ - if (_completionHandler) { - _completionHandler(result, error); - _completionHandler = nil; - } -} - -@end +#import "JFFAsyncOperationAbstractFinishError.h" //JTODO test JFFAsyncOperation buildAsyncOperationWithAdapterFactoryWithDispatchQueue(JFFAsyncOperationInstanceBuilder objectFactory, dispatch_queue_t callbacksQueue) { objectFactory = [objectFactory copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { __block id asyncObject = objectFactory(); __unsafe_unretained id unretaintedAsyncObject = asyncObject; - doneCallback = [doneCallback copy]; - void (^completionHandler)(id, NSError*) = [^(id result, NSError *error) { + doneCallback = [doneCallback copy]; + stateCallback = [stateCallback copy]; + + __block void (^progressCallbackHolder)(id) = [progressCallback copy]; + + __block JFFDidFinishAsyncOperationCallback finishCallbackHolder = [^(id result, NSError *error) { //use asyncObject in if to own it while waiting result if (!asyncObject) return; - if (doneCallback) { + if (doneCallback) doneCallback(result, error); - } asyncObject = nil; } copy]; - progressCallback = [progressCallback copy]; - __block void (^progressHandler)(id) = [^(id data) { - if (progressCallback) - progressCallback(data); - } copy]; - - completionHandler = [completionHandler copy]; - __block JFFComplitionHandlerNotifier *proxy = [JFFComplitionHandlerNotifier new]; - proxy.completionHandler = completionHandler; + __block BOOL stateCallbackCalled = NO; - __block JFFCancelAsyncOperationHandler cancelCallbackHolder = [cancelCallback copy]; + __block JFFAsyncOperationChangeStateCallback stateCallbackHolder = ^(JFFAsyncOperationState state) { + + stateCallbackCalled = YES; + if (stateCallback) + stateCallback(state); + }; NSThread *currntThread = [NSThread currentThread]; + void (^completionHandler)(id, NSError *) = ^(id result, NSError *error) { + + JFFDidFinishAsyncOperationCallback finishCallbackHolderTmp = finishCallbackHolder; + finishCallbackHolder = nil; + progressCallbackHolder = nil; + stateCallbackHolder = nil; + + if (finishCallbackHolderTmp) + finishCallbackHolderTmp(result, error); + }; + void (^completionHandlerWrapper)(id, NSError *) = [^(id result, NSError *error) { if (!asyncObject) return; - void (^completionHandler)(id, NSError *) = ^(id result, NSError *error) { - JFFComplitionHandlerNotifier *proxyOwner = proxy; - proxy = nil; - progressHandler = nil; - cancelCallbackHolder = nil; - [proxyOwner notifyCallbackWithResult:result error:error]; - }; - if ([asyncObject respondsToSelector:@selector(isForeignThreadResultCallback)] && [asyncObject isForeignThreadResultCallback]) { @@ -84,53 +68,63 @@ __block void (^progressHandler)(id) = [^(id data) { }); } else { - NSCAssert(currntThread == [NSThread currentThread], @"the same thread expected"); + if (dispatch_get_main_queue() == callbacksQueue) { + NSCAssert(currntThread == [NSThread currentThread], @"the same thread expected"); + } completionHandler(result, error); } } copy]; void (^progressHandlerWrapper)(id) = [^(id data) { - if (progressHandler) - progressHandler(data); + if (progressCallbackHolder) + progressCallbackHolder(data); } copy]; - JFFAsyncOperationInterfaceCancelHandler cancelHandlerWrapper = ^(BOOL canceled) { + JFFAsyncOperationChangeStateCallback handlerCallbackWrapper = ^(JFFAsyncOperationState state) { - if (!proxy.completionHandler) { + if (!finishCallbackHolder) return; - } - proxy = nil; - progressHandler = nil; - - if (cancelCallbackHolder) { - JFFCancelAsyncOperationHandler tmpCallback = cancelCallbackHolder; - cancelCallbackHolder = nil; - tmpCallback(canceled); - } + if (stateCallbackHolder) + stateCallbackHolder(state); }; - [asyncObject asyncOperationWithResultHandler:completionHandlerWrapper - cancelHandler:cancelHandlerWrapper - progressHandler:progressHandlerWrapper]; + [asyncObject asyncOperationWithResultCallback:completionHandlerWrapper + handlerCallback:handlerCallbackWrapper + progressCallback:progressHandlerWrapper]; - return ^(BOOL canceled) { + return ^(JFFAsyncOperationHandlerTask task) { - if (!proxy.completionHandler) { + if (!finishCallbackHolder) { return; } - if ([unretaintedAsyncObject respondsToSelector:@selector(cancel:)]) { - [unretaintedAsyncObject cancel:canceled]; + if ([unretaintedAsyncObject respondsToSelector:@selector(doTask:)]) { + + stateCallbackCalled = NO; + [unretaintedAsyncObject doTask:task]; + } else { + + NSCParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); } - proxy = nil; - progressHandler = nil; + NSError *error = [JFFAsyncOperationAbstractFinishError newAsyncOperationAbstractFinishErrorWithHandlerTask:task]; - if (cancelCallbackHolder) { - JFFCancelAsyncOperationHandler tmpCallback = cancelCallbackHolder; - cancelCallbackHolder = nil; - tmpCallback(canceled); + if (error) { + completionHandler(nil, error); + return; + } else { + + if (!stateCallbackCalled) { + + if (stateCallbackHolder) { + + JFFAsyncOperationState state = (task == JFFAsyncOperationHandlerTaskResume) + ?JFFAsyncOperationStateResumed + :JFFAsyncOperationStateSuspended; + stateCallbackHolder(state); + } + } } }; }; diff --git a/lib/JFFAsyncOperations/AsyncOperartionsBuilder/JFFAsyncOperationInterface.h b/lib/JFFAsyncOperations/AsyncOperartionsBuilder/JFFAsyncOperationInterface.h index 653828a..07cc1d0 100644 --- a/lib/JFFAsyncOperations/AsyncOperartionsBuilder/JFFAsyncOperationInterface.h +++ b/lib/JFFAsyncOperations/AsyncOperartionsBuilder/JFFAsyncOperationInterface.h @@ -2,19 +2,15 @@ #import -typedef void (^JFFAsyncOperationInterfaceResultHandler)(id, NSError *); -typedef void (^JFFAsyncOperationInterfaceCancelHandler)(BOOL canceled); -typedef void (^JFFAsyncOperationInterfaceProgressHandler)(id); - @protocol JFFAsyncOperationInterface @required -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress; +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finnishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback; @optional -- (void)cancel:(BOOL)canceled; +- (void)doTask:(JFFAsyncOperationHandlerTask)task; - (BOOL)isForeignThreadResultCallback; diff --git a/lib/JFFAsyncOperations/CachedAsyncOperations/Detail/JFFObjectRelatedPropertyData.h b/lib/JFFAsyncOperations/CachedAsyncOperations/Detail/JFFObjectRelatedPropertyData.h index 2c8611d..429ecf5 100644 --- a/lib/JFFAsyncOperations/CachedAsyncOperations/Detail/JFFObjectRelatedPropertyData.h +++ b/lib/JFFAsyncOperations/CachedAsyncOperations/Detail/JFFObjectRelatedPropertyData.h @@ -6,7 +6,7 @@ @property (nonatomic) NSMutableArray *delegates; @property (nonatomic, copy) JFFAsyncOperation asyncLoader; -@property (nonatomic, copy) JFFDidFinishAsyncOperationHandler didFinishBlock; -@property (nonatomic, copy) JFFCancelAsyncOperation cancelBlock; +@property (nonatomic, copy) JFFDidFinishAsyncOperationCallback didFinishBlock; +@property (nonatomic, copy) JFFAsyncOperationHandler loaderHandler; @end diff --git a/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.h b/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.h index 79ed45f..017b2ba 100644 --- a/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.h +++ b/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.h @@ -11,9 +11,10 @@ //object related data @property (nonatomic) NSMutableArray *delegates; -@property (nonatomic, copy) JFFCancelAsyncOperation cancelBlock; @property (nonatomic, copy) JFFAsyncOperation asyncLoader; -@property (nonatomic, copy) JFFDidFinishAsyncOperationHandler didFinishBlock; +@property (nonatomic, copy) JFFAsyncOperationHandler loaderHandler; +@property (nonatomic, copy) JFFDidFinishAsyncOperationCallback didFinishBlock; + @property (nonatomic) id property; diff --git a/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.m b/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.m index 3b09d1b..be87fbf 100644 --- a/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.m +++ b/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.m @@ -25,7 +25,7 @@ @implementation JFFPropertyExtractor delegates, asyncLoader, didFinishBlock, -cancelBlock; +loaderHandler; - (void)clearData { diff --git a/lib/JFFAsyncOperations/CachedAsyncOperations/NSObject+AsyncPropertyReader.h b/lib/JFFAsyncOperations/CachedAsyncOperations/NSObject+AsyncPropertyReader.h index c6aba6c..83511d0 100755 --- a/lib/JFFAsyncOperations/CachedAsyncOperations/NSObject+AsyncPropertyReader.h +++ b/lib/JFFAsyncOperations/CachedAsyncOperations/NSObject+AsyncPropertyReader.h @@ -17,14 +17,14 @@ typedef JFFPropertyExtractor *(^JFFPropertyExtractorFactoryBlock)(void); - (JFFAsyncOperation)asyncOperationForPropertyWithName:(NSString *)propertyName asyncOperation:(JFFAsyncOperation)asyncOperation - didFinishLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didFinishOperation; + didFinishLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didFinishOperation; - (JFFAsyncOperation)asyncOperationForPropertyWithPath:(JFFPropertyPath *)propertyPath asyncOperation:(JFFAsyncOperation)asyncOperation; - (JFFAsyncOperation)asyncOperationForPropertyWithPath:(JFFPropertyPath *)propertyPath asyncOperation:(JFFAsyncOperation)asyncOperation - didFinishLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didFinishOperation; + didFinishLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didFinishOperation; - (JFFAsyncOperation)asyncOperationForPropertyWithPath:(JFFPropertyPath *)propertyPath propertyExtractorFactoryBlock:(JFFPropertyExtractorFactoryBlock)factory @@ -33,7 +33,7 @@ typedef JFFPropertyExtractor *(^JFFPropertyExtractorFactoryBlock)(void); - (JFFAsyncOperation)asyncOperationForPropertyWithPath:(JFFPropertyPath *)propertyPath propertyExtractorFactoryBlock:(JFFPropertyExtractorFactoryBlock)factory asyncOperation:(JFFAsyncOperation)asyncOperation - didFinishLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didFinishOperation; + didFinishLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didFinishOperation; - (JFFAsyncOperation)asyncOperationMergeLoaders:(JFFAsyncOperation)asyncOperation withArgument:(id< NSCopying, NSObject >)argument; diff --git a/lib/JFFAsyncOperations/CachedAsyncOperations/NSObject+AsyncPropertyReader.m b/lib/JFFAsyncOperations/CachedAsyncOperations/NSObject+AsyncPropertyReader.m index c22c220..6eec5db 100644 --- a/lib/JFFAsyncOperations/CachedAsyncOperations/NSObject+AsyncPropertyReader.m +++ b/lib/JFFAsyncOperations/CachedAsyncOperations/NSObject+AsyncPropertyReader.m @@ -3,11 +3,53 @@ #import "JFFPropertyPath.h" #import "JFFPropertyExtractor.h" #import "JFFObjectRelatedPropertyData.h" -#import "JFFCallbacksBlocksHolder.h" #import "JFFAsyncOperationsPredefinedBlocks.h" +#import "JFFAsyncOpFinishedByUnsubscriptionError.h" + #import "NSObject+PropertyExtractor.h" +@interface JFFCallbacksBlocksHolder : NSObject + +@property (nonatomic, copy) JFFAsyncOperationProgressCallback onProgressBlock; +@property (nonatomic, copy) JFFAsyncOperationChangeStateCallback onChangeStateBlock; +@property (nonatomic, copy) JFFDidFinishAsyncOperationCallback didLoadDataBlock; + +- (instancetype)initWithOnProgressBlock:(JFFAsyncOperationProgressCallback)onProgressBlock + onCancelBlock:(JFFAsyncOperationChangeStateCallback)onCancelBlock + didLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didLoadDataBlock; + +- (void)clearCallbacks; + +@end + +@implementation JFFCallbacksBlocksHolder + +- (instancetype)initWithOnProgressBlock:(JFFAsyncOperationProgressCallback)onProgressBlock + onCancelBlock:(JFFAsyncOperationChangeStateCallback)onCancelBlock + didLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didLoadDataBlock +{ + self = [super init]; + + if (self) { + + _onProgressBlock = [onProgressBlock copy]; + _onChangeStateBlock = [onCancelBlock copy]; + _didLoadDataBlock = [didLoadDataBlock copy]; + } + + return self; +} + +- (void)clearCallbacks +{ + _onProgressBlock = nil; + _onChangeStateBlock = nil; + _didLoadDataBlock = nil; +} + +@end + @interface JFFCachePropertyExtractor : JFFPropertyExtractor @end @@ -65,11 +107,8 @@ - (BOOL)hasAsyncPropertyDelegates static void clearDelegates(NSArray *delegates) { - [delegates each:^void(id obj) { - JFFCallbacksBlocksHolder *callback = obj; - callback.didLoadDataBlock = nil; - callback.onCancelBlock = nil; - callback.onProgressBlock = nil; + [delegates each:^void(JFFCallbacksBlocksHolder *callback) { + [callback clearCallbacks]; }]; } @@ -77,40 +116,66 @@ static void clearDataForPropertyExtractor(JFFPropertyExtractor *propertyExtracto { clearDelegates(propertyExtractor.delegates); propertyExtractor.delegates = nil; - propertyExtractor.cancelBlock = nil; + propertyExtractor.loaderHandler = nil; propertyExtractor.didFinishBlock = nil; propertyExtractor.asyncLoader = nil; [propertyExtractor clearData]; } -static JFFCancelAsyncOperation cancelBlock(JFFPropertyExtractor *propertyExtractor, +static JFFAsyncOperationHandler cancelBlock(JFFPropertyExtractor *propertyExtractor, JFFCallbacksBlocksHolder *callbacks) { - return ^void(BOOL cancelOperation) { - JFFCancelAsyncOperation cancel = propertyExtractor.cancelBlock; - if (!cancel) + return ^void(JFFAsyncOperationHandlerTask task) { + + JFFAsyncOperationHandler handler = propertyExtractor.loaderHandler; + if (!handler) return; - cancel = [cancel copy]; + handler = [handler copy]; - if (cancelOperation) { - cancel(YES); - clearDataForPropertyExtractor(propertyExtractor); - } else { - [propertyExtractor.delegates removeObject:callbacks]; - callbacks.didLoadDataBlock = nil; - callbacks.onProgressBlock = nil; - - if (callbacks.onCancelBlock) - callbacks.onCancelBlock(NO); - - callbacks.onCancelBlock = nil; + switch (task) { + case JFFAsyncOperationHandlerTaskUnsubscribe: + { + JFFDidFinishAsyncOperationCallback didLoadDataBlock = callbacks.didLoadDataBlock; + + [propertyExtractor.delegates removeObject:callbacks]; + [callbacks clearCallbacks]; + + if (didLoadDataBlock) + didLoadDataBlock(nil, [JFFAsyncOpFinishedByUnsubscriptionError new]); + break; + } + case JFFAsyncOperationHandlerTaskCancel: + { + handler(JFFAsyncOperationHandlerTaskCancel); + clearDataForPropertyExtractor(propertyExtractor); + break; + } + case JFFAsyncOperationHandlerTaskResume: + case JFFAsyncOperationHandlerTaskSuspend: + { + [propertyExtractor.delegates each:^void(id obj) { + JFFCallbacksBlocksHolder *objCallback = obj; + if (objCallback.onChangeStateBlock) { + JFFAsyncOperationState state = (task == JFFAsyncOperationHandlerTaskResume) + ?JFFAsyncOperationStateResumed + :JFFAsyncOperationStateSuspended; + objCallback.onChangeStateBlock(state); + } + }]; + break; + } + default: + { + NSCAssert1(NO, @"unsupported type of task: %lu", (unsigned long)task); + break; + } } }; } -static JFFDidFinishAsyncOperationHandler doneCallbackBlock(JFFPropertyExtractor *propertyExtractor) +static JFFDidFinishAsyncOperationCallback doneCallbackBlock(JFFPropertyExtractor *propertyExtractor) { return ^void(id result, NSError *error) { if (!((result != nil) ^ (error != nil))) { @@ -127,11 +192,11 @@ static JFFDidFinishAsyncOperationHandler doneCallbackBlock(JFFPropertyExtractor NSArray *copyDelegates = [propertyExtractor.delegates map:^id(id obj) { JFFCallbacksBlocksHolder *callback = obj; return [[JFFCallbacksBlocksHolder alloc] initWithOnProgressBlock:callback.onProgressBlock - onCancelBlock:callback.onCancelBlock + onCancelBlock:callback.onChangeStateBlock didLoadDataBlock:callback.didLoadDataBlock]; }]; - JFFDidFinishAsyncOperationHandler finishBlock = [propertyExtractor.didFinishBlock copy]; + JFFDidFinishAsyncOperationCallback finishBlock = [propertyExtractor.didFinishBlock copy]; propertyExtractor.property = result; @@ -152,10 +217,10 @@ static JFFDidFinishAsyncOperationHandler doneCallbackBlock(JFFPropertyExtractor }; } -static JFFCancelAsyncOperation performNativeLoader(JFFPropertyExtractor *propertyExtractor, +static JFFAsyncOperationHandler performNativeLoader(JFFPropertyExtractor *propertyExtractor, JFFCallbacksBlocksHolder *callbacks) { - JFFAsyncOperationProgressHandler progressCallback = ^void(id progressInfo) { + JFFAsyncOperationProgressCallback progressCallback = ^void(id progressInfo) { [propertyExtractor.delegates each:^void(id obj) { JFFCallbacksBlocksHolder *objCallback = obj; if (objCallback.onProgressBlock) @@ -163,25 +228,23 @@ static JFFCancelAsyncOperation performNativeLoader(JFFPropertyExtractor *propert }]; }; - JFFDidFinishAsyncOperationHandler doneCallback = doneCallbackBlock(propertyExtractor); + JFFDidFinishAsyncOperationCallback doneCallback = doneCallbackBlock(propertyExtractor); - JFFCancelAsyncOperationHandler cancelCallback = ^void(BOOL canceled) { + JFFAsyncOperationChangeStateCallback stateCallback = ^void(JFFAsyncOperationState state) { [propertyExtractor.delegates each:^void(id obj) { JFFCallbacksBlocksHolder *objCallback = obj; - if (objCallback.onCancelBlock) - objCallback.onCancelBlock(canceled); + if (objCallback.onChangeStateBlock) + objCallback.onChangeStateBlock(state); }]; - - clearDataForPropertyExtractor(propertyExtractor); }; - propertyExtractor.cancelBlock = propertyExtractor.asyncLoader(progressCallback, - cancelCallback, - doneCallback); - - if (nil == propertyExtractor.cancelBlock) - return JFFStubCancelAsyncOperationBlock; + propertyExtractor.loaderHandler = propertyExtractor.asyncLoader(progressCallback, + stateCallback, + doneCallback); + + if (nil == propertyExtractor.loaderHandler) + return JFFStubHandlerAsyncOperationBlock; return cancelBlock(propertyExtractor, callbacks); } @@ -196,7 +259,7 @@ -(BOOL)isLoadingPropertyForPropertyName:(NSString *)name - (JFFAsyncOperation)privateAsyncOperationForPropertyWithPath:(JFFPropertyPath *)propertyPath propertyExtractorFactoryBlock:(JFFPropertyExtractorFactoryBlock)factory asyncOperation:(JFFAsyncOperation)asyncOperation - didFinishLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didFinishOperation + didFinishLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didFinishOperation { NSParameterAssert(asyncOperation); @@ -204,9 +267,10 @@ - (JFFAsyncOperation)privateAsyncOperationForPropertyWithPath:(JFFPropertyPath * didFinishOperation = [didFinishOperation copy]; factory = [factory copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + JFFPropertyExtractor *propertyExtractor = factory(); propertyExtractor.object = self; propertyExtractor.propertyPath = propertyPath; @@ -216,7 +280,7 @@ - (JFFAsyncOperation)privateAsyncOperationForPropertyWithPath:(JFFPropertyPath * if (result) { if (doneCallback) doneCallback(result, nil); - return JFFStubCancelAsyncOperationBlock; + return JFFStubHandlerAsyncOperationBlock; } propertyExtractor.asyncLoader = asyncOperation; @@ -224,14 +288,14 @@ - (JFFAsyncOperation)privateAsyncOperationForPropertyWithPath:(JFFPropertyPath * JFFCallbacksBlocksHolder *callbacks = [[JFFCallbacksBlocksHolder alloc] initWithOnProgressBlock:progressCallback - onCancelBlock:cancelCallback + onCancelBlock:stateCallback didLoadDataBlock:doneCallback]; if (nil == propertyExtractor.delegates) { propertyExtractor.delegates = [@[callbacks] mutableCopy]; } - if (propertyExtractor.cancelBlock != nil) { + if (propertyExtractor.loaderHandler != nil) { [propertyExtractor.delegates addObject:callbacks]; return cancelBlock(propertyExtractor, callbacks); } @@ -243,7 +307,7 @@ - (JFFAsyncOperation)privateAsyncOperationForPropertyWithPath:(JFFPropertyPath * - (JFFAsyncOperation)asyncOperationForPropertyWithPath:(JFFPropertyPath *)propertyPath propertyExtractorFactoryBlock:(JFFPropertyExtractorFactoryBlock)factory asyncOperation:(JFFAsyncOperation)asyncOperation - didFinishLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didFinishOperation + didFinishLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didFinishOperation { NSAssert(propertyPath.name && propertyPath.key, @"propertyName argument should not be nil"); return [self privateAsyncOperationForPropertyWithPath:propertyPath @@ -264,7 +328,7 @@ - (JFFAsyncOperation)asyncOperationForPropertyWithPath:(JFFPropertyPath *)proper - (JFFAsyncOperation)privateAsyncOperationForPropertyWithPath:(JFFPropertyPath *)propertyPath asyncOperation:(JFFAsyncOperation)asyncOperation - didFinishLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didFinishOperation + didFinishLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didFinishOperation { JFFPropertyExtractorFactoryBlock factory = ^JFFPropertyExtractor*(void) { return [JFFPropertyExtractor new]; @@ -286,7 +350,7 @@ - (JFFAsyncOperation)asyncOperationForPropertyWithName:(NSString *)propertyName - (JFFAsyncOperation)asyncOperationForPropertyWithName:(NSString *)propertyName asyncOperation:(JFFAsyncOperation)asyncOperation - didFinishLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didFinishOperation + didFinishLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didFinishOperation { NSParameterAssert(propertyName); JFFPropertyPath *propertyPath = [[JFFPropertyPath alloc] initWithName:propertyName key:nil]; @@ -306,7 +370,7 @@ - (JFFAsyncOperation)asyncOperationForPropertyWithPath:(JFFPropertyPath *)proper - (JFFAsyncOperation)asyncOperationForPropertyWithPath:(JFFPropertyPath *)propertyPath asyncOperation:(JFFAsyncOperation)asyncOperation - didFinishLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didFinishOperation + didFinishLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didFinishOperation { NSAssert(propertyPath.name && propertyPath.key, @"propertyName argument should not be nil"); return [self privateAsyncOperationForPropertyWithPath:propertyPath diff --git a/lib/JFFAsyncOperations/Categories/NSArray+AsyncMap.m b/lib/JFFAsyncOperations/Categories/NSArray+AsyncMap.m index a1c158a..c09fdaa 100644 --- a/lib/JFFAsyncOperations/Categories/NSArray+AsyncMap.m +++ b/lib/JFFAsyncOperations/Categories/NSArray+AsyncMap.m @@ -28,7 +28,7 @@ - (JFFAsyncOperation)tolerantFaultAsyncMap:(JFFAsyncOperationBinder)block NSArray *asyncOperations = [self map:^id(id object) { JFFAsyncOperation loader = block(object); - JFFDidFinishAsyncOperationHandler finishCallbackBlock = ^void(id localResult, NSError *error) { + JFFDidFinishAsyncOperationCallback finishCallbackBlock = ^void(id localResult, NSError *error) { if (localResult) [result addObject:localResult]; diff --git a/lib/JFFAsyncOperations/Categories/NSDictionary+AsyncMap.m b/lib/JFFAsyncOperations/Categories/NSDictionary+AsyncMap.m index a400ff7..e9c366e 100644 --- a/lib/JFFAsyncOperations/Categories/NSDictionary+AsyncMap.m +++ b/lib/JFFAsyncOperations/Categories/NSDictionary+AsyncMap.m @@ -17,7 +17,7 @@ - (JFFAsyncOperation)asyncMap:(JFFAsyncDictMappingBlock)block JFFDidFinishAsyncOperationHook finishCallbackHook = ^(id result, NSError *error, - JFFDidFinishAsyncOperationHandler doneCallback) { + JFFDidFinishAsyncOperationCallback doneCallback) { if (result) finalResult[key] = result; diff --git a/lib/JFFAsyncOperations/Detail/JFFAsyncOperationAdapter.mm b/lib/JFFAsyncOperations/Detail/JFFAsyncOperationAdapter.mm index e52b8fc..616e773 100644 --- a/lib/JFFAsyncOperations/Detail/JFFAsyncOperationAdapter.mm +++ b/lib/JFFAsyncOperations/Detail/JFFAsyncOperationAdapter.mm @@ -16,22 +16,23 @@ - (instancetype)init return self; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { self.operation = [JFFBlockOperation performOperationWithQueueName:_queueName.c_str() loadDataBlock:_loadDataBlock - didLoadDataBlock:handler - progressBlock:progress + didLoadDataBlock:finishCallback + progressBlock:progressCallback barrier:_barrier currentQueue:_currentQueue serialOrConcurrent:_queueAttributes]; } -- (void)cancel:(BOOL)canceled +- (void)doTask:(JFFAsyncOperationHandlerTask)task { - if (canceled) { + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); + if (task == JFFAsyncOperationHandlerTaskCancel) { [_operation cancel]; _operation = nil; } diff --git a/lib/JFFAsyncOperations/Detail/JFFCallbacksBlocksHolder.h b/lib/JFFAsyncOperations/Detail/JFFCallbacksBlocksHolder.h deleted file mode 100755 index 8a76bb5..0000000 --- a/lib/JFFAsyncOperations/Detail/JFFCallbacksBlocksHolder.h +++ /dev/null @@ -1,15 +0,0 @@ -#import - -#import - -@interface JFFCallbacksBlocksHolder : NSObject - -@property (nonatomic, copy) JFFAsyncOperationProgressHandler onProgressBlock; -@property (nonatomic, copy) JFFCancelAsyncOperationHandler onCancelBlock; -@property (nonatomic, copy) JFFDidFinishAsyncOperationHandler didLoadDataBlock; - -- (instancetype)initWithOnProgressBlock:(JFFAsyncOperationProgressHandler)onProgressBlock - onCancelBlock:(JFFCancelAsyncOperationHandler)onCancelBlock - didLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didLoadDataBlock; - -@end diff --git a/lib/JFFAsyncOperations/Detail/JFFCallbacksBlocksHolder.m b/lib/JFFAsyncOperations/Detail/JFFCallbacksBlocksHolder.m deleted file mode 100755 index 51ff5a0..0000000 --- a/lib/JFFAsyncOperations/Detail/JFFCallbacksBlocksHolder.m +++ /dev/null @@ -1,21 +0,0 @@ -#import "JFFCallbacksBlocksHolder.h" - -@implementation JFFCallbacksBlocksHolder - -- (instancetype)initWithOnProgressBlock:(JFFAsyncOperationProgressHandler)onProgressBlock - onCancelBlock:(JFFCancelAsyncOperationHandler)onCancelBlock - didLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didLoadDataBlock -{ - self = [super init]; - - if (self) { - - _onProgressBlock = [onProgressBlock copy]; - _onCancelBlock = [onCancelBlock copy]; - _didLoadDataBlock = [didLoadDataBlock copy]; - } - - return self; -} - -@end diff --git a/lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByCancellationError.h b/lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByCancellationError.h new file mode 100644 index 0000000..073ef4c --- /dev/null +++ b/lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByCancellationError.h @@ -0,0 +1,4 @@ +#import + +@interface JFFAsyncOpFinishedByCancellationError : JFFAsyncOperationAbstractFinishError +@end diff --git a/lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByCancellationError.m b/lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByCancellationError.m new file mode 100644 index 0000000..164fc37 --- /dev/null +++ b/lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByCancellationError.m @@ -0,0 +1,31 @@ +#import "JFFAsyncOpFinishedByCancellationError.h" + +@implementation JFFAsyncOpFinishedByCancellationError + ++ (instancetype)alloc +{ + static JFFAsyncOpFinishedByCancellationError *instance = nil; + + if (!instance) { + + instance = [super alloc]; + } + + return instance; +} + +- (instancetype)init +{ + return [self initWithDescription:NSLocalizedString(@"JFF_ASYNC_OPERATION_FINISHED_BY_CANCELLATION_ERROR", nil)]; +} + ++ (NSString *)jffErrorsDomain +{ + return @"com.just_for_fun.async_unsubscribed.jff_async_operations.library"; +} + +- (void)writeErrorWithJFFLogger +{ +} + +@end diff --git a/lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByUnsubscriptionError.h b/lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByUnsubscriptionError.h new file mode 100644 index 0000000..f157f9b --- /dev/null +++ b/lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByUnsubscriptionError.h @@ -0,0 +1,4 @@ +#import + +@interface JFFAsyncOpFinishedByUnsubscriptionError : JFFAsyncOperationAbstractFinishError +@end diff --git a/lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByUnsubscriptionError.m b/lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByUnsubscriptionError.m new file mode 100644 index 0000000..48fd54f --- /dev/null +++ b/lib/JFFAsyncOperations/Errors/JFFAsyncOpFinishedByUnsubscriptionError.m @@ -0,0 +1,31 @@ +#import "JFFAsyncOpFinishedByUnsubscriptionError.h" + +@implementation JFFAsyncOpFinishedByUnsubscriptionError + ++ (instancetype)alloc +{ + static JFFAsyncOpFinishedByUnsubscriptionError *instance = nil; + + if (!instance) { + + instance = [super alloc]; + } + + return instance; +} + +- (instancetype)init +{ + return [self initWithDescription:NSLocalizedString(@"JFF_ASYNC_OPERATION_FINISHED_BY_UNSUBSCRIPTION_ERROR", nil)]; +} + ++ (NSString *)jffErrorsDomain +{ + return @"com.just_for_fun.async_unsubscribed.jff_async_operations.library"; +} + +- (void)writeErrorWithJFFLogger +{ +} + +@end diff --git a/lib/JFFAsyncOperations/Errors/JFFAsyncOperationAbstractFinishError.h b/lib/JFFAsyncOperations/Errors/JFFAsyncOperationAbstractFinishError.h new file mode 100644 index 0000000..fad5459 --- /dev/null +++ b/lib/JFFAsyncOperations/Errors/JFFAsyncOperationAbstractFinishError.h @@ -0,0 +1,8 @@ +#import +#include + +@interface JFFAsyncOperationAbstractFinishError : JFFAsyncOperationError + ++ (instancetype)newAsyncOperationAbstractFinishErrorWithHandlerTask:(JFFAsyncOperationHandlerTask)task; + +@end diff --git a/lib/JFFAsyncOperations/Errors/JFFAsyncOperationAbstractFinishError.m b/lib/JFFAsyncOperations/Errors/JFFAsyncOperationAbstractFinishError.m new file mode 100644 index 0000000..626ce36 --- /dev/null +++ b/lib/JFFAsyncOperations/Errors/JFFAsyncOperationAbstractFinishError.m @@ -0,0 +1,18 @@ +#import "JFFAsyncOperationAbstractFinishError.h" + +#import "JFFAsyncOpFinishedByCancellationError.h" +#import "JFFAsyncOpFinishedByUnsubscriptionError.h" + +@implementation JFFAsyncOperationAbstractFinishError + ++ (instancetype)newAsyncOperationAbstractFinishErrorWithHandlerTask:(JFFAsyncOperationHandlerTask)task +{ + if (task > JFFAsyncOperationHandlerTaskCancel) + return nil; + + return (task == JFFAsyncOperationHandlerTaskCancel) + ?[JFFAsyncOpFinishedByCancellationError new] + :[JFFAsyncOpFinishedByUnsubscriptionError new]; +} + +@end diff --git a/lib/JFFAsyncOperations/Errors/JFFAsyncOperationError.h b/lib/JFFAsyncOperations/Errors/JFFAsyncOperationError.h new file mode 100644 index 0000000..e7d5d97 --- /dev/null +++ b/lib/JFFAsyncOperations/Errors/JFFAsyncOperationError.h @@ -0,0 +1,4 @@ +#import + +@interface JFFAsyncOperationError : JFFError +@end diff --git a/lib/JFFAsyncOperations/Errors/JFFAsyncOperationError.m b/lib/JFFAsyncOperations/Errors/JFFAsyncOperationError.m new file mode 100644 index 0000000..f417967 --- /dev/null +++ b/lib/JFFAsyncOperations/Errors/JFFAsyncOperationError.m @@ -0,0 +1,10 @@ +#import "JFFAsyncOperationError.h" + +@implementation JFFAsyncOperationError + ++ (NSString *)jffErrorsDomain +{ + return @"com.just_for_fun.jff_async_operations.library"; +} + +@end diff --git a/lib/JFFAsyncOperations/Errors/JFFFileDescriptorReaderError.h b/lib/JFFAsyncOperations/Errors/JFFFileDescriptorReaderError.h new file mode 100644 index 0000000..8bc5496 --- /dev/null +++ b/lib/JFFAsyncOperations/Errors/JFFFileDescriptorReaderError.h @@ -0,0 +1,4 @@ +#import + +@interface JFFFileDescriptorReaderError : JFFAsyncOperationError +@end diff --git a/lib/JFFAsyncOperations/Errors/JFFFileDescriptorReaderError.m b/lib/JFFAsyncOperations/Errors/JFFFileDescriptorReaderError.m new file mode 100644 index 0000000..32e8482 --- /dev/null +++ b/lib/JFFAsyncOperations/Errors/JFFFileDescriptorReaderError.m @@ -0,0 +1,10 @@ +#import "JFFFileDescriptorReaderError.h" + +@implementation JFFFileDescriptorReaderError + +- (instancetype)init +{ + return [self initWithDescription:NSLocalizedString(@"JFF_ASYNC_OPERATION_FILE_DESCRIPTOR_ERROR", nil)]; +} + +@end diff --git a/lib/JFFAsyncOperations/Helpers/JFFAsyncOperationHandlerBlockHolder.h b/lib/JFFAsyncOperations/Helpers/JFFAsyncOperationHandlerBlockHolder.h new file mode 100644 index 0000000..b6345ca --- /dev/null +++ b/lib/JFFAsyncOperations/Helpers/JFFAsyncOperationHandlerBlockHolder.h @@ -0,0 +1,13 @@ +#import + +#import + +@interface JFFAsyncOperationHandlerBlockHolder : NSObject + +@property (nonatomic, copy) JFFAsyncOperationHandler loaderHandler; +@property (nonatomic, copy, readonly) JFFAsyncOperationHandler smartLoaderHandler; + +- (void)performCancelBlockOnceWithArgument:(JFFAsyncOperationHandlerTask)task; +- (void)performHandlerWithArgument:(JFFAsyncOperationHandlerTask)task; + +@end diff --git a/lib/JFFAsyncOperations/Helpers/JFFAsyncOperationHandlerBlockHolder.m b/lib/JFFAsyncOperations/Helpers/JFFAsyncOperationHandlerBlockHolder.m new file mode 100644 index 0000000..b88fe7f --- /dev/null +++ b/lib/JFFAsyncOperations/Helpers/JFFAsyncOperationHandlerBlockHolder.m @@ -0,0 +1,33 @@ +#import "JFFAsyncOperationHandlerBlockHolder.h" + +@implementation JFFAsyncOperationHandlerBlockHolder + +- (void)performCancelBlockOnceWithArgument:(JFFAsyncOperationHandlerTask)task +{ + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); + + if (!_loaderHandler) + return; + + JFFAsyncOperationHandler block = _loaderHandler; + _loaderHandler = nil; + block(task); +} + +- (void)performHandlerWithArgument:(JFFAsyncOperationHandlerTask)task +{ + if (task <= JFFAsyncOperationHandlerTaskCancel) + [self performCancelBlockOnceWithArgument:task]; + else + _loaderHandler(task); +} + +- (JFFAsyncOperationHandler)smartLoaderHandler +{ + return ^void(JFFAsyncOperationHandlerTask task) { + + [self performHandlerWithArgument:task]; + }; +} + +@end diff --git a/lib/JFFAsyncOperations/Helpers/JFFAsyncOperationProgressBlockHolder.h b/lib/JFFAsyncOperations/Helpers/JFFAsyncOperationProgressBlockHolder.h index 2390399..afef893 100644 --- a/lib/JFFAsyncOperations/Helpers/JFFAsyncOperationProgressBlockHolder.h +++ b/lib/JFFAsyncOperations/Helpers/JFFAsyncOperationProgressBlockHolder.h @@ -4,7 +4,7 @@ @interface JFFAsyncOperationProgressBlockHolder : NSObject -@property (nonatomic, copy) JFFAsyncOperationProgressHandler progressBlock; +@property (nonatomic, copy) JFFAsyncOperationProgressCallback progressBlock; - (void)performProgressBlockWithArgument:(id)progressInfo; diff --git a/lib/JFFAsyncOperations/Helpers/JFFCancelAsyncOperationBlockHolder.h b/lib/JFFAsyncOperations/Helpers/JFFCancelAsyncOperationBlockHolder.h deleted file mode 100644 index 3bbe232..0000000 --- a/lib/JFFAsyncOperations/Helpers/JFFCancelAsyncOperationBlockHolder.h +++ /dev/null @@ -1,10 +0,0 @@ -#import - -#import - -@interface JFFCancelAsyncOperationBlockHolder : NSObject - -@property (nonatomic, copy) JFFCancelAsyncOperation cancelBlock; -@property (nonatomic, copy, readonly) JFFCancelAsyncOperation onceCancelBlock; - -@end diff --git a/lib/JFFAsyncOperations/Helpers/JFFCancelAsyncOperationBlockHolder.m b/lib/JFFAsyncOperations/Helpers/JFFCancelAsyncOperationBlockHolder.m deleted file mode 100755 index 3165f65..0000000 --- a/lib/JFFAsyncOperations/Helpers/JFFCancelAsyncOperationBlockHolder.m +++ /dev/null @@ -1,22 +0,0 @@ -#import "JFFCancelAsyncOperationBlockHolder.h" - -@implementation JFFCancelAsyncOperationBlockHolder - -- (void)performCancelBlockOnceWithArgument:(BOOL)cancel -{ - if (!_cancelBlock) - return; - - JFFCancelAsyncOperation block = _cancelBlock; - _cancelBlock = nil; - block(cancel); -} - -- (JFFCancelAsyncOperation)onceCancelBlock -{ - return ^void(BOOL cancel) { - [self performCancelBlockOnceWithArgument:cancel]; - }; -} - -@end diff --git a/lib/JFFAsyncOperations/Helpers/JFFDidFinishAsyncOperationBlockHolder.h b/lib/JFFAsyncOperations/Helpers/JFFDidFinishAsyncOperationBlockHolder.h index 9f619ba..cab2a0b 100755 --- a/lib/JFFAsyncOperations/Helpers/JFFDidFinishAsyncOperationBlockHolder.h +++ b/lib/JFFAsyncOperations/Helpers/JFFDidFinishAsyncOperationBlockHolder.h @@ -4,7 +4,7 @@ @interface JFFDidFinishAsyncOperationBlockHolder : NSObject -@property (nonatomic, copy) JFFDidFinishAsyncOperationHandler didFinishBlock; -@property (nonatomic, copy, readonly) JFFDidFinishAsyncOperationHandler onceDidFinishBlock; +@property (nonatomic, copy) JFFDidFinishAsyncOperationCallback didFinishBlock; +@property (nonatomic, copy, readonly) JFFDidFinishAsyncOperationCallback onceDidFinishBlock; @end diff --git a/lib/JFFAsyncOperations/Helpers/JFFDidFinishAsyncOperationBlockHolder.m b/lib/JFFAsyncOperations/Helpers/JFFDidFinishAsyncOperationBlockHolder.m index c3ad68a..a64ae16 100755 --- a/lib/JFFAsyncOperations/Helpers/JFFDidFinishAsyncOperationBlockHolder.m +++ b/lib/JFFAsyncOperations/Helpers/JFFDidFinishAsyncOperationBlockHolder.m @@ -7,12 +7,12 @@ - (void)performDidFinishBlockOnceWithResult:(id)result error:(NSError *)error if (!_didFinishBlock) return; - JFFDidFinishAsyncOperationHandler block = _didFinishBlock; + JFFDidFinishAsyncOperationCallback block = _didFinishBlock; _didFinishBlock = nil; block(result, error); } -- (JFFDidFinishAsyncOperationHandler)onceDidFinishBlock +- (JFFDidFinishAsyncOperationCallback)onceDidFinishBlock { return ^(id result, NSError *error) { [self performDidFinishBlockOnceWithResult:result error:error]; diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationContinuity.m b/lib/JFFAsyncOperations/JFFAsyncOperationContinuity.m index 94d73e2..6d6fd56 100755 --- a/lib/JFFAsyncOperations/JFFAsyncOperationContinuity.m +++ b/lib/JFFAsyncOperations/JFFAsyncOperationContinuity.m @@ -1,8 +1,11 @@ #import "JFFAsyncOperationContinuity.h" -#import "JFFCancelAsyncOperationBlockHolder.h" -#import "JFFAsyncOperationsPredefinedBlocks.h" #import "NSError+ResultOwnerships.h" +#import "JFFAsyncOperationsPredefinedBlocks.h" +#import "JFFAsyncOperationHandlerBlockHolder.h" + +#import "JFFAsyncOpFinishedByCancellationError.h" +#import "JFFAsyncOpFinishedByUnsubscriptionError.h" #import "JFFAsyncOperationHelpers.h" @@ -25,8 +28,8 @@ + (instancetype)sharedWaterwallFirstObject @end -typedef JFFAsyncOperationBinder (*MergeTwoBindersPtr)( JFFAsyncOperationBinder, JFFAsyncOperationBinder ); -typedef JFFAsyncOperation (*MergeTwoLoadersPtr)( JFFAsyncOperation, JFFAsyncOperation ); +typedef JFFAsyncOperationBinder (*MergeTwoBindersPtr)(JFFAsyncOperationBinder, JFFAsyncOperationBinder); +typedef JFFAsyncOperation (*MergeTwoLoadersPtr)(JFFAsyncOperation, JFFAsyncOperation); static JFFAsyncOperationBinder MergeBinders(MergeTwoBindersPtr merger, NSArray *blocks) { @@ -61,39 +64,87 @@ JFFAsyncOperationBinder bindSequenceOfBindersPair(JFFAsyncOperationBinder firstB JFFAsyncOperation firstLoader = firstBinder(bindResult); NSCAssert(firstLoader, @"firstLoader should not be nil"); - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { - __block JFFCancelAsyncOperation cancelBlockHolder; + __block JFFAsyncOperationHandler handlerBlockHolder; - progressCallback = [progressCallback copy]; - doneCallback = [doneCallback copy]; + __block JFFAsyncOperationProgressCallback progressCallbackHolder = [progressCallback copy]; + __block JFFAsyncOperationChangeStateCallback stateCallbackHolder = [stateCallback copy]; + __block JFFDidFinishAsyncOperationCallback doneCallbackHolder = [doneCallback copy]; - JFFCancelAsyncOperation firstCancel = firstLoader(progressCallback, - cancelCallback, - ^void(id result, NSError *error) { + JFFAsyncOperationProgressCallback progressCallbackWrapper = ^(id progressInfo) { + + if (progressCallbackHolder) + progressCallbackHolder(progressInfo); + }; + JFFAsyncOperationChangeStateCallback stateCallbackWrapper = ^(JFFAsyncOperationState state) { + + if (stateCallbackHolder) + stateCallbackHolder(state); + }; + JFFDidFinishAsyncOperationCallback doneCallbackWrapper = ^(id result, NSError *error) { + + if (doneCallbackHolder) { + + doneCallbackHolder(result, error); + doneCallbackHolder = nil; + } + + progressCallbackHolder = nil; + stateCallbackHolder = nil; + handlerBlockHolder = nil; + }; + + __block BOOL finished = NO; + + JFFDidFinishAsyncOperationCallback fistLoaderDoneCallback = ^void(id result, NSError *error) { + if (error) { - if (doneCallback) - doneCallback(nil, error); + + finished = YES; + doneCallbackWrapper(nil, error); } else { JFFAsyncOperation secondLoader = secondBinder(result); NSCAssert(secondLoader, @"secondLoader should not be nil");//result loader should not be nil - cancelBlockHolder = secondLoader(progressCallback, - cancelCallback, - doneCallback); + handlerBlockHolder = secondLoader(progressCallbackWrapper, + stateCallbackWrapper, + doneCallbackWrapper); } - }); + }; + + JFFAsyncOperationHandler firstCancel = firstLoader(progressCallbackWrapper, + stateCallbackWrapper, + fistLoaderDoneCallback); - if (!cancelBlockHolder) - cancelBlockHolder = firstCancel; + if (finished) + return JFFStubHandlerAsyncOperationBlock; - return ^(BOOL canceled) { - JFFCancelAsyncOperation cancel = cancelBlockHolder; - if (!cancel) + if (!handlerBlockHolder) + handlerBlockHolder = firstCancel; + + return ^(JFFAsyncOperationHandlerTask task) { + + JFFAsyncOperationHandler currentHandler = handlerBlockHolder; + + if (!currentHandler) return; - cancelBlockHolder = nil; - cancel(canceled); + + if (task <= JFFAsyncOperationHandlerTaskCancel) { + + handlerBlockHolder = nil; + } + + if (task != JFFAsyncOperationHandlerTaskUnsubscribe) + currentHandler(task); + + if (task <= JFFAsyncOperationHandlerTaskCancel) { + + progressCallbackHolder = nil; + stateCallbackHolder = nil; + doneCallbackHolder = nil; + } }; }; }; @@ -146,11 +197,11 @@ JFFAsyncOperation accumulateSequenceResult(NSArray *loaders, JFFSequenceResultAc NSArray *binders = [NSArray arrayWithSize:[loaders count] producer:^id(NSUInteger index) { + JFFAsyncOperation loader = loaders[index]; + JFFAsyncOperationBinder binder = [^JFFAsyncOperation(id waterfallResult) { - JFFAsyncOperation loader = loaders[index]; - - return asyncOperationWithFinishHookBlock(loader, ^void(id result, NSError *error, JFFDidFinishAsyncOperationHandler doneCallback) { + return asyncOperationWithFinishHookBlock(loader, ^void(id result, NSError *error, JFFDidFinishAsyncOperationCallback doneCallback) { id currWaterfallResult = [waterfallResult isKindOfClass:[JFFWaterwallFirstObject class]] ?nil @@ -273,37 +324,86 @@ static JFFAsyncOperationBinder bindTrySequenceOfBindersPair(JFFAsyncOperationBin if (secondBinder == nil) return firstBinder; - return ^JFFAsyncOperation(id data) { - JFFAsyncOperation firstLoader = firstBinder(data); + return ^JFFAsyncOperation(id binderResult) { + + JFFAsyncOperation firstLoader = firstBinder(binderResult); NSCAssert(firstLoader, @"expected loader"); - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + __block JFFAsyncOperationHandler handlerBlockHolder; + + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { - __block JFFCancelAsyncOperation cancelBlockHolder; + __block JFFAsyncOperationProgressCallback progressCallbackHolder = [progressCallback copy]; + __block JFFAsyncOperationChangeStateCallback stateCallbackHolder = [stateCallback copy]; + __block JFFDidFinishAsyncOperationCallback doneCallbackHolder = [doneCallback copy]; - doneCallback = [doneCallback copy]; + JFFAsyncOperationProgressCallback progressCallbackWrapper = ^(id progressInfo) { + + if (progressCallbackHolder) + progressCallbackHolder(progressInfo); + }; + JFFAsyncOperationChangeStateCallback stateCallbackWrapper = ^(JFFAsyncOperationState state) { + + if (stateCallbackHolder) + stateCallbackHolder(state); + }; + JFFDidFinishAsyncOperationCallback doneCallbackWrapper = ^(id result, NSError *error) { + + if (doneCallbackHolder) { + + doneCallbackHolder(result, error); + doneCallbackHolder = nil; + } + + progressCallbackHolder = nil; + stateCallbackHolder = nil; + handlerBlockHolder = nil; + }; - JFFCancelAsyncOperation firstCancel = firstLoader(progressCallback, - cancelCallback, - ^void(id result, NSError *error) { + JFFAsyncOperationHandler firstHandler = firstLoader(progressCallbackWrapper, + stateCallbackWrapper, + ^void(id result, NSError *error) { + if (error) { + + if ([error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]]) { + + doneCallbackWrapper(nil, error); + return; + } + JFFAsyncOperation secondLoader = secondBinder(error); - cancelBlockHolder = secondLoader(progressCallback, cancelCallback, doneCallback); + handlerBlockHolder = secondLoader(progressCallbackWrapper, stateCallbackWrapper, doneCallbackWrapper); } else { - if (doneCallback) - doneCallback(result, nil); + + doneCallbackWrapper(result, nil); } }); - if (!cancelBlockHolder) - cancelBlockHolder = firstCancel; - return ^(BOOL canceled) { - if (!cancelBlockHolder) + if (!handlerBlockHolder) + handlerBlockHolder = firstHandler; + + return ^(JFFAsyncOperationHandlerTask task) { + + if (!handlerBlockHolder) return; - cancelBlockHolder(canceled); - cancelBlockHolder = nil; + + JFFAsyncOperationHandler currentHandler = handlerBlockHolder; + + if (task <= JFFAsyncOperationHandlerTaskCancel) + handlerBlockHolder = nil; + + if (task != JFFAsyncOperationHandlerTaskUnsubscribe) + currentHandler(task); + + if (task <= JFFAsyncOperationHandlerTaskCancel) { + + progressCallbackHolder = nil; + stateCallbackHolder = nil; + doneCallbackHolder = nil; + } }; }; }; @@ -385,7 +485,7 @@ JFFAsyncOperation bindTrySequenceOfAsyncOperationsArray(JFFAsyncOperation firstL return MergeBinders(bindTrySequenceOfBindersPair, binders)(nil); } -static void notifyGroupResult(JFFDidFinishAsyncOperationHandler doneCallback, +static void notifyGroupResult(JFFDidFinishAsyncOperationCallback doneCallback, NSArray *complexResult, NSError *error) { @@ -395,7 +495,7 @@ static void notifyGroupResult(JFFDidFinishAsyncOperationHandler doneCallback, NSMutableArray *finalResult; if (!error) { NSArray *firstResult = complexResult[0]; - finalResult = [[NSMutableArray alloc]initWithCapacity:[firstResult count] + 1]; + finalResult = [[NSMutableArray alloc] initWithCapacity:[firstResult count] + 1]; [finalResult addObjectsFromArray:firstResult]; [finalResult addObject:complexResult[1]]; } @@ -413,9 +513,10 @@ static JFFAsyncOperation groupOfAsyncOperationsPair(JFFAsyncOperation firstLoade if (secondLoader == nil) return firstLoader; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + __block BOOL loaded = NO; __block NSError *errorHolder; @@ -423,11 +524,43 @@ static JFFAsyncOperation groupOfAsyncOperationsPair(JFFAsyncOperation firstLoade doneCallback = [doneCallback copy]; - JFFDidFinishAsyncOperationHandler (^makeResultHandler)(NSUInteger) = - ^JFFDidFinishAsyncOperationHandler(NSUInteger index) { + __block BOOL blockCanceledOrUnsubscribed = NO; + __block JFFAsyncOperationHandlerTask finishTask = JFFAsyncOperationHandlerTaskUndefined; + + __block JFFAsyncOperationHandlerBlockHolder *handlerHolder1 = [JFFAsyncOperationHandlerBlockHolder new]; + __block JFFAsyncOperationHandlerBlockHolder *handlerHolder2 = [JFFAsyncOperationHandlerBlockHolder new]; + + JFFDidFinishAsyncOperationCallback (^makeResultHandler)(NSUInteger) = + ^JFFDidFinishAsyncOperationCallback(NSUInteger index) { return ^void(id result, NSError *error) { + BOOL cancellation = [error isKindOfClass:[JFFAsyncOperationAbstractFinishError class]]; + + if (cancellation) { + + if (blockCanceledOrUnsubscribed) + return; + + JFFAsyncOperationHandlerBlockHolder *otherHandlerHolder = (index == 0) + ?handlerHolder2 + :handlerHolder1; + + blockCanceledOrUnsubscribed = cancellation; + + finishTask = ([error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]]) + ?JFFAsyncOperationHandlerTaskCancel + :JFFAsyncOperationHandlerTaskUnsubscribe; + [otherHandlerHolder performCancelBlockOnceWithArgument:finishTask]; + + handlerHolder1 = nil; + handlerHolder2 = nil; + + if (doneCallback) + doneCallback(nil, error); + return; + } + if (result) complexResult[index] = result; @@ -442,10 +575,19 @@ static JFFAsyncOperation groupOfAsyncOperationsPair(JFFAsyncOperation firstLoade errorHolder.resultOwnerships = nil; } + handlerHolder1 = nil; + handlerHolder2 = nil; + notifyGroupResult(doneCallback, complexResult, error); error.resultOwnerships = nil; return; + } else { + + if (index == 0) + handlerHolder1 = nil; + else + handlerHolder2 = nil; } loaded = YES; @@ -454,77 +596,46 @@ static JFFAsyncOperation groupOfAsyncOperationsPair(JFFAsyncOperation firstLoade }; }; - __block BOOL blockCanceled = NO; - - cancelCallback = [cancelCallback copy]; - JFFCancelAsyncOperationHandler (^makeCancelHandler)(JFFCancelAsyncOperationBlockHolder *) = - ^(JFFCancelAsyncOperationBlockHolder *cancelHolder) { - return ^void(BOOL canceled) { - if (!blockCanceled) { - blockCanceled = YES; - cancelHolder.onceCancelBlock(canceled); - if (cancelCallback) - cancelCallback(canceled); - } - }; - }; - - JFFDidFinishAsyncOperationHandler (^makeFinishHandler)(JFFCancelAsyncOperationBlockHolder*, NSUInteger) = - ^JFFDidFinishAsyncOperationHandler(JFFCancelAsyncOperationBlockHolder *cancelHolder, - NSUInteger index) { - JFFDidFinishAsyncOperationHandler handler = makeResultHandler(index); - return ^void(id result, NSError *error ) { - cancelHolder.cancelBlock = nil; - handler(result, error ); - }; - }; - - JFFCancelAsyncOperationBlockHolder *cancelHolder1 = [JFFCancelAsyncOperationBlockHolder new]; - JFFCancelAsyncOperationBlockHolder *cancelHolder2 = [JFFCancelAsyncOperationBlockHolder new]; - - JFFCancelAsyncOperationHandler cancelCallbackOfFirstLoader = makeCancelHandler(cancelHolder2); + JFFAsyncOperationHandler loaderHandler = firstLoader(progressCallback, + stateCallback, + makeResultHandler(0)); - __block NSNumber *firstLoaderCancelFlag = NO; - JFFCancelAsyncOperationHandler cancelCallbackOfFirstLoaderWrapper = ^void(BOOL canceled) { + if (blockCanceledOrUnsubscribed) { - firstLoaderCancelFlag = @(canceled); - cancelCallbackOfFirstLoader(canceled); - }; + if (finishTask == JFFAsyncOperationHandlerTaskUnsubscribe) { + + secondLoader(nil, nil, nil); + } + return JFFStubHandlerAsyncOperationBlock; + } - cancelHolder1.cancelBlock = firstLoader(progressCallback, - cancelCallbackOfFirstLoaderWrapper, - makeFinishHandler(cancelHolder1, 0)); + handlerHolder1.loaderHandler = loaderHandler; - cancelHolder2.cancelBlock = secondLoader(progressCallback, - makeCancelHandler(cancelHolder1), - makeFinishHandler(cancelHolder2, 1)); + loaderHandler = secondLoader(progressCallback, + stateCallback, + makeResultHandler(1)); - if (firstLoaderCancelFlag) { + if (blockCanceledOrUnsubscribed) { - cancelHolder2.cancelBlock([firstLoaderCancelFlag boolValue]); - return JFFStubCancelAsyncOperationBlock; + return JFFStubHandlerAsyncOperationBlock; } - return ^void(BOOL cancel) { + handlerHolder2.loaderHandler = loaderHandler; + + return ^void(JFFAsyncOperationHandlerTask task) { - if (!blockCanceled) { - blockCanceled = YES; - cancelHolder1.onceCancelBlock(cancel); - cancelHolder2.onceCancelBlock(cancel); - if (cancelCallback) - cancelCallback(cancel); - } + [handlerHolder1 performHandlerWithArgument:task]; + [handlerHolder2 performHandlerWithArgument:task]; }; }; } static JFFAsyncOperation resultToArrayForLoader(JFFAsyncOperation loader) { - JFFAnalyzer analyzer = ^(id result, NSError **error) { - return @[result]; - }; - JFFAsyncOperationBinder secondLoaderBinder = asyncOperationBinderWithAnalyzer(analyzer); - return bindSequenceOfAsyncOperations(loader, secondLoaderBinder, nil); + return bindSequenceOfAsyncOperations(loader, ^(id result) { + + return asyncOperationWithResult(@[result]); + }, nil); } static JFFAsyncOperation MergeGroupLoaders(MergeTwoLoadersPtr merger, NSArray *blocks) @@ -563,12 +674,12 @@ JFFAsyncOperation groupOfAsyncOperations(JFFAsyncOperation firstLoader, ...) return groupOfAsyncOperationsArray(loaders); } -static JFFDidFinishAsyncOperationHandler cancelSafeResultBlock(JFFDidFinishAsyncOperationHandler resultBlock, - JFFCancelAsyncOperationBlockHolder *cancelHolder) +static JFFDidFinishAsyncOperationCallback cancelSafeResultBlock(JFFDidFinishAsyncOperationCallback resultBlock, + JFFAsyncOperationHandlerBlockHolder *cancelHolder) { resultBlock = [resultBlock copy]; return ^void(id result, NSError *error) { - cancelHolder.cancelBlock = nil; + cancelHolder.loaderHandler = nil; resultBlock(result, error); }; } @@ -584,92 +695,94 @@ static JFFAsyncOperation failOnFirstErrorGroupOfAsyncOperationsPair(JFFAsyncOper if (secondLoader == nil) return firstLoader; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { - __block BOOL loaded = NO; - - JFFCancelAsyncOperationBlockHolder *cancelHolder1 = [JFFCancelAsyncOperationBlockHolder new]; - JFFCancelAsyncOperationBlockHolder *cancelHolder2 = [JFFCancelAsyncOperationBlockHolder new]; + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { - cancelCallback = [cancelCallback copy]; - __block JFFCancelAsyncOperationHandler cancelCallbackHolder = [^(BOOL canceled) { - if (cancelCallback) - cancelCallback(canceled); - } copy];// "cancelCallbackHolder" used as flag for done + __block JFFAsyncOperationHandlerBlockHolder *handlerHolder1 = [JFFAsyncOperationHandlerBlockHolder new]; + __block JFFAsyncOperationHandlerBlockHolder *handlerHolder2 = [JFFAsyncOperationHandlerBlockHolder new]; NSMutableArray *complexResult = [@[[NSNull null], [NSNull null]] mutableCopy]; + __block NSUInteger resultCount = 0; + __block BOOL blockCanceledOrUnsubscribed = NO; + __block JFFAsyncOperationHandlerTask finishTask = JFFAsyncOperationHandlerTaskUndefined; + doneCallback = [doneCallback copy]; - JFFDidFinishAsyncOperationHandler (^makeResultHandler)(NSUInteger) = - ^JFFDidFinishAsyncOperationHandler(NSUInteger index) { + JFFDidFinishAsyncOperationCallback (^makeResultHandler)(NSUInteger) = + ^JFFDidFinishAsyncOperationCallback(NSUInteger index) { + return ^void(id result, NSError *error) { - if (result) - complexResult[index] = result; - BOOL firstError = error && cancelCallbackHolder; - if (loaded || firstError) { - cancelCallbackHolder = nil; + + if (error) { - if (firstError) { - cancelHolder1.onceCancelBlock(YES); - cancelHolder2.onceCancelBlock(YES); - } + if (blockCanceledOrUnsubscribed) + return; - notifyGroupResult(doneCallback, complexResult, error); + JFFAsyncOperationHandlerBlockHolder *otherHandlerHolder = (index == 0) + ?handlerHolder2 + :handlerHolder1; + + blockCanceledOrUnsubscribed = YES; + finishTask = [error isKindOfClass:[JFFAsyncOpFinishedByUnsubscriptionError class]] + ?JFFAsyncOperationHandlerTaskUnsubscribe + :JFFAsyncOperationHandlerTaskCancel; + [otherHandlerHolder performCancelBlockOnceWithArgument:finishTask]; + + handlerHolder1 = nil; + handlerHolder2 = nil; + + if (doneCallback) + doneCallback(nil, error); return; } - loaded = YES; - }; - }; - - JFFCancelAsyncOperationHandler (^makeCancelCallback)(JFFCancelAsyncOperationBlockHolder *) = - ^(JFFCancelAsyncOperationBlockHolder *cancelHolder) { - return ^void(BOOL canceled) { - if (cancelCallbackHolder) { - cancelHolder.onceCancelBlock(canceled); - if (cancelCallbackHolder) { - cancelCallbackHolder(canceled); - cancelCallbackHolder = nil; - } + + complexResult[index] = result; + resultCount += 1; + + if (resultCount == 2) { + + handlerHolder1 = nil; + handlerHolder2 = nil; + + notifyGroupResult(doneCallback, complexResult, nil); + return; } }; }; - JFFCancelAsyncOperationHandler cancelCallbackOfFirstLoader = makeCancelCallback(cancelHolder2); + JFFAsyncOperationHandler loaderHandler = firstLoader(progressCallback, + stateCallback, + [makeResultHandler(0) copy] + ); - __block NSNumber *firstLoaderCancelFlag = NO; - JFFCancelAsyncOperationHandler cancelCallbackOfFirstLoaderWrapper = ^void(BOOL canceled) { + if (blockCanceledOrUnsubscribed) { - firstLoaderCancelFlag = @(canceled); - cancelCallbackOfFirstLoader(canceled); - }; + if (finishTask == JFFAsyncOperationHandlerTaskUnsubscribe) { + + secondLoader(nil, nil, nil); + } + return JFFStubHandlerAsyncOperationBlock; + } - cancelHolder1.cancelBlock = firstLoader(progressCallback, - cancelCallbackOfFirstLoaderWrapper, - cancelSafeResultBlock(makeResultHandler(0), - cancelHolder1)); + handlerHolder1.loaderHandler = loaderHandler; - cancelHolder2.cancelBlock = secondLoader(progressCallback, - makeCancelCallback(cancelHolder1), - cancelSafeResultBlock(makeResultHandler(1), - cancelHolder2)); + loaderHandler = secondLoader(progressCallback, + stateCallback, + [makeResultHandler(1) copy] + ); - if (firstLoaderCancelFlag) { + if (blockCanceledOrUnsubscribed) { - cancelHolder2.cancelBlock([firstLoaderCancelFlag boolValue]); - return JFFStubCancelAsyncOperationBlock; + return JFFStubHandlerAsyncOperationBlock; } - return ^void(BOOL cancel) { - if (cancelCallbackHolder) { - JFFCancelAsyncOperationHandler tmpCancelCallback = [cancelCallbackHolder copy]; - cancelCallbackHolder = nil; - - cancelHolder1.onceCancelBlock(cancel); - cancelHolder2.onceCancelBlock(cancel); - - tmpCancelCallback(cancel); - } + handlerHolder2.loaderHandler = loaderHandler; + + return ^void(JFFAsyncOperationHandlerTask task) { + + [handlerHolder1 performHandlerWithArgument:task]; + [handlerHolder2 performHandlerWithArgument:task]; }; }; } @@ -705,25 +818,17 @@ JFFAsyncOperation asyncOperationWithDoneBlock(JFFAsyncOperation loader, return loader; doneCallbackHook = [doneCallbackHook copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { - - cancelCallback = [cancelCallback copy]; - JFFCancelAsyncOperationHandler wrappedCancelCallback = ^void(BOOL canceled) { - doneCallbackHook(); - - if (cancelCallback) - cancelCallback(canceled); - }; + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { doneCallback = [doneCallback copy]; - JFFDidFinishAsyncOperationHandler wrappedDoneCallback = ^void(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback wrappedDoneCallback = ^void(id result, NSError *error) { doneCallbackHook(); if (doneCallback) doneCallback(result, error); }; - return loader(progressCallback, wrappedCancelCallback, wrappedDoneCallback); + return loader(progressCallback, stateCallback, wrappedDoneCallback); }; } diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationHandlerTask.h b/lib/JFFAsyncOperations/JFFAsyncOperationHandlerTask.h new file mode 100644 index 0000000..e37894c --- /dev/null +++ b/lib/JFFAsyncOperations/JFFAsyncOperationHandlerTask.h @@ -0,0 +1,13 @@ +#ifndef JFFAsyncOperations_JFFAsyncOperationHandlerTask_h +#define JFFAsyncOperations_JFFAsyncOperationHandlerTask_h + +typedef NS_ENUM(NSUInteger, JFFAsyncOperationHandlerTask) +{ + JFFAsyncOperationHandlerTaskUnsubscribe = 0, + JFFAsyncOperationHandlerTaskCancel = 1, + JFFAsyncOperationHandlerTaskResume = 2, + JFFAsyncOperationHandlerTaskSuspend = 3, + JFFAsyncOperationHandlerTaskUndefined = 4, +}; + +#endif //JFFAsyncOperations_JFFAsyncOperationHandlerTask_h diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.h b/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.h index 9b5f5ff..9b46241 100644 --- a/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.h +++ b/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.h @@ -8,31 +8,31 @@ #ifdef __cplusplus extern "C" { #endif - + ///////////////////////// ADD OBSERVERS OF ASYNC OP. RESULT //////////////////////// JFFAsyncOperation asyncOperationWithResult(id result); JFFAsyncOperation asyncOperationWithError(NSError *error); - JFFAsyncOperation asyncOperationWithCancelFlag(BOOL canceled); + JFFAsyncOperation asyncOperationWithHandlerFlag(JFFAsyncOperationHandlerTask task); JFFAsyncOperation neverFinishAsyncOperation(void); JFFAsyncOperation asyncOperationWithSyncOperationInCurrentQueue(JFFSyncOperation block); - //finish_callback_block_ called before loader_'s JFFDidFinishAsyncOperationHandler + //finish_callback_block_ called before loader_'s JFFDidFinishAsyncOperationCallback JFFAsyncOperation asyncOperationWithFinishCallbackBlock(JFFAsyncOperation loader, - JFFDidFinishAsyncOperationHandler finishCallbackBlock); + JFFDidFinishAsyncOperationCallback finishCallbackBlock); - //finish_callback_hook_ called instead loader_'s JFFDidFinishAsyncOperationHandler + //finish_callback_hook_ called instead loader_'s JFFDidFinishAsyncOperationCallback JFFAsyncOperation asyncOperationWithFinishHookBlock(JFFAsyncOperation loader, JFFDidFinishAsyncOperationHook finishCallbackHook); JFFAsyncOperation asyncOperationWithStartAndFinishBlocks(JFFAsyncOperation loader, JFFSimpleBlock startBlock, - JFFDidFinishAsyncOperationHandler finishCallback); + JFFDidFinishAsyncOperationCallback finishCallback); JFFAsyncOperation asyncOperationWithOptionalStartAndFinishBlocks(JFFAsyncOperation loader, JFFSimpleBlock startBlock, - JFFDidFinishAsyncOperationHandler finishCallback); + JFFDidFinishAsyncOperationCallback finishCallback); JFFAsyncOperation asyncOperationWithStartAndDoneBlocks(JFFAsyncOperation loader, JFFSimpleBlock startBlock, @@ -66,6 +66,10 @@ extern "C" { ///////////////////////////////////// SEQUENCE ///////////////////////////////////// JFFAnalyzer analyzerAsSequenceOfAnalyzers(JFFAnalyzer firstAnalyzer, ...) NS_REQUIRES_NIL_TERMINATION; + + void processHandlerFlag(JFFAsyncOperationHandlerTask task, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback); #ifdef __cplusplus } /* closing brace for extern "C" */ diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.m b/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.m index a75f007..0793f7b 100644 --- a/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.m +++ b/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.m @@ -1,62 +1,64 @@ #import "JFFAsyncOperationHelpers.h" -#import "JFFAsyncOperationContinuity.h" -#import "JFFAsyncOperationsPredefinedBlocks.h" #import "JFFAsyncOperationBuilder.h" #import "JFFAsyncOperationInterface.h" +#import "JFFAsyncOperationContinuity.h" +#import "JFFAsyncOperationsPredefinedBlocks.h" +#import "JFFAsyncOperationAbstractFinishError.h" JFFAsyncOperation asyncOperationWithResult(id result) { NSCParameterAssert(result); - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + if (doneCallback) doneCallback(result, nil); - return JFFStubCancelAsyncOperationBlock; + return JFFStubHandlerAsyncOperationBlock; }; } JFFAsyncOperation asyncOperationWithError(NSError *error) { - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { if (doneCallback) doneCallback(nil, error); - return JFFStubCancelAsyncOperationBlock; + return JFFStubHandlerAsyncOperationBlock; }; } -JFFAsyncOperation asyncOperationWithCancelFlag(BOOL canceled) +JFFAsyncOperation asyncOperationWithHandlerFlag(JFFAsyncOperationHandlerTask task) { - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { - if (cancelCallback) - cancelCallback(canceled); - return JFFStubCancelAsyncOperationBlock; + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + + processHandlerFlag(task, stateCallback, doneCallback); + return JFFStubHandlerAsyncOperationBlock; }; } JFFAsyncOperation neverFinishAsyncOperation(void) { - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { __block BOOL wasCanceled = NO; - cancelCallback = [cancelCallback copy]; + stateCallback = [stateCallback copy]; - return ^(BOOL canceled) { + return ^(JFFAsyncOperationHandlerTask task) { if (wasCanceled) return; - wasCanceled = YES; - if (cancelCallback) - cancelCallback(canceled); + wasCanceled = (task <= JFFAsyncOperationHandlerTaskCancel); + + processHandlerFlag(task, stateCallback, doneCallback); }; }; } @@ -66,9 +68,9 @@ JFFAsyncOperation asyncOperationWithSyncOperationInCurrentQueue(JFFSyncOperation NSCParameterAssert(block); block = [block copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { NSError *error; id result = block(&error); NSCAssert(((result != nil) ^ (error != nil)), @"result xor error expected"); @@ -76,21 +78,22 @@ JFFAsyncOperation asyncOperationWithSyncOperationInCurrentQueue(JFFSyncOperation if (doneCallback) doneCallback(result, error); - return JFFStubCancelAsyncOperationBlock; + return JFFStubHandlerAsyncOperationBlock; }; } JFFAsyncOperation asyncOperationWithFinishCallbackBlock(JFFAsyncOperation loader, - JFFDidFinishAsyncOperationHandler finishCallbackBlock) + JFFDidFinishAsyncOperationCallback finishCallbackBlock) { NSCParameterAssert(loader); finishCallbackBlock = [finishCallbackBlock copy]; loader = [loader copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + doneCallback = [doneCallback copy]; - return loader(progressCallback, cancelCallback, ^void(id result, NSError *error) { + return loader(progressCallback, stateCallback, ^void(id result, NSError *error) { if (finishCallbackBlock) finishCallbackBlock(result, error); if (doneCallback) @@ -104,15 +107,17 @@ JFFAsyncOperation asyncOperationWithFinishHookBlock(JFFAsyncOperation loader, { NSCParameterAssert(loader );// should not be nil" NSCParameterAssert(finishCallbackHook);// should not be nil" + finishCallbackHook = [finishCallbackHook copy]; loader = [loader copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { doneCallback = [doneCallback copy]; - return loader(progressCallback, cancelCallback, ^void(id result, NSError *error) { + return loader(progressCallback, stateCallback, ^void(id result, NSError *error) { + finishCallbackHook(result, error, doneCallback); }); }; @@ -120,54 +125,45 @@ JFFAsyncOperation asyncOperationWithFinishHookBlock(JFFAsyncOperation loader, JFFAsyncOperation asyncOperationWithStartAndFinishBlocks(JFFAsyncOperation loader, JFFSimpleBlock startBlock, - JFFDidFinishAsyncOperationHandler finishCallback) + JFFDidFinishAsyncOperationCallback finishCallback) { startBlock = [startBlock copy]; finishCallback = [finishCallback copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { if (startBlock) startBlock(); doneCallback = [doneCallback copy]; - JFFDidFinishAsyncOperationHandler wrappedDoneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback wrappedDoneCallback = ^(id result, NSError *error) { if (finishCallback) finishCallback(result, error); if (doneCallback) doneCallback(result, error); }; - return loader(progressCallback, cancelCallback, wrappedDoneCallback); + return loader(progressCallback, stateCallback, wrappedDoneCallback); }; } JFFAsyncOperation asyncOperationWithOptionalStartAndFinishBlocks(JFFAsyncOperation loader, JFFSimpleBlock startBlock, - JFFDidFinishAsyncOperationHandler finishCallback) + JFFDidFinishAsyncOperationCallback finishCallback) { loader = [loader copy]; startBlock = [startBlock copy]; finishCallback = [finishCallback copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { __block BOOL loading = YES; - cancelCallback = [cancelCallback copy]; - JFFCancelAsyncOperationHandler wrappedCancelCallback = ^(BOOL canceled) { - - loading = NO; - - if (cancelCallback) - cancelCallback(canceled); - }; - doneCallback = [doneCallback copy]; - JFFDidFinishAsyncOperationHandler wrappedDoneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback wrappedDoneCallback = ^(id result, NSError *error) { loading = NO; @@ -177,7 +173,7 @@ JFFAsyncOperation asyncOperationWithOptionalStartAndFinishBlocks(JFFAsyncOperati doneCallback(result, error); }; - JFFCancelAsyncOperation cancel = loader(progressCallback, wrappedCancelCallback, wrappedDoneCallback); + JFFAsyncOperationHandler cancel = loader(progressCallback, stateCallback, wrappedDoneCallback); if (loading) { @@ -187,7 +183,7 @@ JFFAsyncOperation asyncOperationWithOptionalStartAndFinishBlocks(JFFAsyncOperati return cancel; } - return JFFStubCancelAsyncOperationBlock; + return JFFStubHandlerAsyncOperationBlock; }; } @@ -201,25 +197,15 @@ JFFAsyncOperation asyncOperationWithStartAndDoneBlocks(JFFAsyncOperation loader, loader = [loader copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { if (startBlock) startBlock(); - cancelCallback = [cancelCallback copy]; - JFFCancelAsyncOperationHandler wrappedCancelCallback = ^(BOOL canceled) { - - if (doneBlock) - doneBlock(); - - if (cancelCallback) - cancelCallback(canceled); - }; - doneCallback = [doneCallback copy]; - JFFDidFinishAsyncOperationHandler wrappedDoneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback wrappedDoneCallback = ^(id result, NSError *error) { if (doneBlock) doneBlock(); @@ -227,16 +213,17 @@ JFFAsyncOperation asyncOperationWithStartAndDoneBlocks(JFFAsyncOperation loader, if (doneCallback) doneCallback(result, error); }; - return loader(progressCallback, wrappedCancelCallback, wrappedDoneCallback); + return loader(progressCallback, stateCallback, wrappedDoneCallback); }; } JFFAsyncOperation asyncOperationWithAnalyzer(id data, JFFAnalyzer analyzer) { analyzer = [analyzer copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + NSError *localError; id localResult = analyzer(data, &localError); NSCAssert(((localResult != nil) ^ (localError != nil)), @"localResult xor localError expected"); @@ -244,7 +231,7 @@ JFFAsyncOperation asyncOperationWithAnalyzer(id data, JFFAnalyzer analyzer) if (doneCallback) doneCallback(localError?nil:localResult, localError); - return JFFStubCancelAsyncOperationBlock; + return JFFStubHandlerAsyncOperationBlock; }; } @@ -279,11 +266,11 @@ JFFAsyncOperation asyncOperationWithChangedProgress(JFFAsyncOperation loader, loader = [loader copy]; resultBuilder = [resultBuilder copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { - JFFAsyncOperationProgressHandler progressCallbackWrapper = ^(id info) { + JFFAsyncOperationProgressCallback progressCallbackWrapper = ^(id info) { if (progressCallback) { info = resultBuilder(info); @@ -291,27 +278,27 @@ JFFAsyncOperation asyncOperationWithChangedProgress(JFFAsyncOperation loader, } }; - return loader(progressCallbackWrapper, cancelCallback, doneCallback); + return loader(progressCallbackWrapper, stateCallback, doneCallback); }; } JFFAsyncOperation asyncOperationResultAsProgress(JFFAsyncOperation loader) { loader = [loader copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { progressCallback = [progressCallback copy]; doneCallback = [doneCallback copy]; - JFFDidFinishAsyncOperationHandler doneCallbackWrapper = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallbackWrapper = ^(id result, NSError *error) { if (result && progressCallback) progressCallback(result); if (doneCallback) doneCallback(result, error); }; - return loader(nil, cancelCallback, doneCallbackWrapper); + return loader(nil, stateCallback, doneCallbackWrapper); }; } @@ -324,7 +311,7 @@ JFFAsyncOperation asyncOperationWithChangedError(JFFAsyncOperation loader, errorBuilder = [errorBuilder copy]; JFFDidFinishAsyncOperationHook finishCallbackHook = ^(id result, NSError *error, - JFFDidFinishAsyncOperationHandler doneCallback) { + JFFDidFinishAsyncOperationCallback doneCallback) { if (doneCallback) doneCallback(result, error?errorBuilder(error) : nil); }; @@ -338,7 +325,7 @@ JFFAsyncOperation asyncOperationWithResultOrError(JFFAsyncOperation loader, return asyncOperationWithFinishHookBlock(loader, ^(id localResult, NSError *localError, - JFFDidFinishAsyncOperationHandler doneCallback) { + JFFDidFinishAsyncOperationCallback doneCallback) { if (doneCallback) doneCallback(result, error); }); @@ -403,10 +390,11 @@ JFFAnalyzer analyzerAsSequenceOfAnalyzers(JFFAnalyzer firstAnalyzer, ...) JFFAsyncOperation ignorePregressLoader(JFFAsyncOperation loader) { loader = [loader copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { - return loader(nil, cancelCallback, doneCallback); + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + + return loader(nil, stateCallback, doneCallback); }; } @@ -414,7 +402,33 @@ JFFAsyncOperationBinder ignorePregressBinder(JFFAsyncOperationBinder binder) { binder = [binder copy]; return ^JFFAsyncOperation(id data) { + JFFAsyncOperation loader = binder(data); return ignorePregressLoader(loader); }; } + +void processHandlerFlag(JFFAsyncOperationHandlerTask task, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) +{ + NSError *error = [JFFAsyncOperationAbstractFinishError newAsyncOperationAbstractFinishErrorWithHandlerTask:task]; + + if (error) { + + if (doneCallback) + doneCallback(nil, error); + } else { + + NSCParameterAssert(task <= JFFAsyncOperationHandlerTaskSuspend); + + if (stateCallback) { + + JFFAsyncOperationState state = (task == JFFAsyncOperationHandlerTaskSuspend) + ?JFFAsyncOperationStateSuspended + :JFFAsyncOperationStateResumed; + + stateCallback(state); + } + } +} diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationState.h b/lib/JFFAsyncOperations/JFFAsyncOperationState.h new file mode 100644 index 0000000..67936ce --- /dev/null +++ b/lib/JFFAsyncOperations/JFFAsyncOperationState.h @@ -0,0 +1,10 @@ +#ifndef JFFAsyncOperations_JFFAsyncOperationState_h +#define JFFAsyncOperations_JFFAsyncOperationState_h + +typedef NS_ENUM(NSUInteger, JFFAsyncOperationState) +{ + JFFAsyncOperationStateSuspended = 0, + JFFAsyncOperationStateResumed = 1, +}; + +#endif diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationUtils.h b/lib/JFFAsyncOperations/JFFAsyncOperationUtils.h index a8fc713..2cc84cf 100755 --- a/lib/JFFAsyncOperations/JFFAsyncOperationUtils.h +++ b/lib/JFFAsyncOperations/JFFAsyncOperationUtils.h @@ -3,7 +3,13 @@ #ifdef __cplusplus extern "C" { #endif - + + JFFAsyncOperation generalAsyncOperationWithSyncOperationAndQueue(JFFSyncOperation loadDataBlock, + const char *queueName, + BOOL barrier, + dispatch_queue_t currentQueue, + dispatch_queue_attr_t attr); + JFFAsyncOperation asyncOperationWithSyncOperation(JFFSyncOperation loadDataBlock); JFFAsyncOperation asyncOperationWithSyncOperationAndQueue(JFFSyncOperation loadDataBlock, diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationUtils.mm b/lib/JFFAsyncOperations/JFFAsyncOperationUtils.mm index 3bf3c99..311876c 100644 --- a/lib/JFFAsyncOperations/JFFAsyncOperationUtils.mm +++ b/lib/JFFAsyncOperations/JFFAsyncOperationUtils.mm @@ -25,18 +25,18 @@ static JFFAsyncOperation asyncOperationWithSyncOperationWithProgressBlockAndQueu asyncObject.queueAttributes = attr; return asyncObject; }; - return buildAsyncOperationWithAdapterFactory(factory); + return buildAsyncOperationWithAdapterFactoryWithDispatchQueue(factory, currentQueue); } -static JFFAsyncOperation privateAsyncOperationWithSyncOperationAndQueue(JFFSyncOperation loadDataBlock, - const char *queueName, - BOOL barrier, - dispatch_queue_t currentQueue, - dispatch_queue_attr_t attr) +JFFAsyncOperation generalAsyncOperationWithSyncOperationAndQueue(JFFSyncOperation loadDataBlock, + const char *queueName, + BOOL barrier, + dispatch_queue_t currentQueue, + dispatch_queue_attr_t attr) { loadDataBlock = [loadDataBlock copy]; JFFSyncOperationWithProgress progressLoadDataBlock= ^id(NSError *__autoreleasing *error, - JFFAsyncOperationProgressHandler progressCallback) { + JFFAsyncOperationProgressCallback progressCallback) { id result = loadDataBlock(error); if (result && progressCallback) progressCallback(result); @@ -53,7 +53,7 @@ static JFFAsyncOperation privateAsyncOperationWithSyncOperationAndQueue(JFFSyncO JFFAsyncOperation asyncOperationWithSyncOperationAndQueue(JFFSyncOperation loadDataBlock, const char *queueName) { NSCParameterAssert([NSThread isMainThread]); - return privateAsyncOperationWithSyncOperationAndQueue(loadDataBlock, + return generalAsyncOperationWithSyncOperationAndQueue(loadDataBlock, queueName, NO, dispatch_get_main_queue(), @@ -64,7 +64,7 @@ JFFAsyncOperation barrierAsyncOperationWithSyncOperationAndQueue(JFFSyncOperatio const char *queueName) { NSCParameterAssert([NSThread isMainThread]); - return privateAsyncOperationWithSyncOperationAndQueue(loadDataBlock, + return generalAsyncOperationWithSyncOperationAndQueue(loadDataBlock, queueName, YES, dispatch_get_main_queue(), @@ -76,7 +76,7 @@ JFFAsyncOperation asyncOperationWithSyncOperationAndConfigurableQueue(JFFSyncOpe NSCParameterAssert([NSThread isMainThread]); dispatch_queue_attr_t attr = isSerialQueue?DISPATCH_QUEUE_SERIAL:DISPATCH_QUEUE_CONCURRENT; - return privateAsyncOperationWithSyncOperationAndQueue(loadDataBlock, + return generalAsyncOperationWithSyncOperationAndQueue(loadDataBlock, queueName, NO, dispatch_get_main_queue(), diff --git a/lib/JFFAsyncOperations/JFFAsyncOperations.h b/lib/JFFAsyncOperations/JFFAsyncOperations.h index 91ff00c..5857c9c 100755 --- a/lib/JFFAsyncOperations/JFFAsyncOperations.h +++ b/lib/JFFAsyncOperations/JFFAsyncOperations.h @@ -18,3 +18,9 @@ #import #import + +#import + +//Errors +#import +#import diff --git a/lib/JFFAsyncOperations/JFFAsyncOperations.xcodeproj/project.pbxproj b/lib/JFFAsyncOperations/JFFAsyncOperations.xcodeproj/project.pbxproj index 2b77730..57caa8f 100644 --- a/lib/JFFAsyncOperations/JFFAsyncOperations.xcodeproj/project.pbxproj +++ b/lib/JFFAsyncOperations/JFFAsyncOperations.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 1B0857D3145169B3001DDE0A /* JFFCallbacksBlocksHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65648BAE1392407F001E163C /* JFFCallbacksBlocksHolder.m */; }; 1B0D88C31519F81F00EC4A92 /* JFFAsyncOperationBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0D88C11519F81F00EC4A92 /* JFFAsyncOperationBuilder.h */; }; 1B0D88C41519F81F00EC4A92 /* JFFAsyncOperationBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B0D88C21519F81F00EC4A92 /* JFFAsyncOperationBuilder.m */; }; 1B0E83A51563953300825E3C /* JFFAsyncOperationUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65648C391392490F001E163C /* JFFAsyncOperationUtils.mm */; }; @@ -17,12 +16,96 @@ 1B0FB888150604860056F14E /* JFFAsyncOperationHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B0FB886150604850056F14E /* JFFAsyncOperationHelpers.m */; }; 1B2A678D143F3D0E00BC284F /* NSObject+AutoCancelAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 655ADDDF13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.m */; }; 1B2A67E5143F4CAB00BC284F /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D1B3D6E13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.m */; }; - 1B2A682B143F532500BC284F /* JFFCancelAsyncOperationBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F6C13B7EEE50002CF73 /* JFFCancelAsyncOperationBlockHolder.m */; }; + 1B2A682B143F532500BC284F /* JFFAsyncOperationHandlerBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F6C13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.m */; }; 1B2A682E143F537B00BC284F /* JFFAsyncOperationProgressBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6534804B13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.m */; }; 1B835B33142CBA2200FC004C /* JFFAsyncOperationsPredefinedBlocks.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B835B31142CBA2200FC004C /* JFFAsyncOperationsPredefinedBlocks.h */; }; 1B9528FC1500E67900C9B979 /* NSError+ResultOwnerships.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B9528FA1500E67900C9B979 /* NSError+ResultOwnerships.h */; }; 1B9528FD1500E67900C9B979 /* NSError+ResultOwnerships.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B9528FB1500E67900C9B979 /* NSError+ResultOwnerships.m */; }; 1BA2551C1443109B00C9B2BE /* JFFAsyncOperationContinuity.m in Sources */ = {isa = PBXBuildFile; fileRef = 651BE1661391928400DD6890 /* JFFAsyncOperationContinuity.m */; }; + 4C0C3F021826D33B00984027 /* JFFAsyncOperationError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C0C3F001826D33B00984027 /* JFFAsyncOperationError.h */; }; + 4C0C3F031826D33B00984027 /* JFFAsyncOperationError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C0C3F001826D33B00984027 /* JFFAsyncOperationError.h */; }; + 4C0C3F041826D33B00984027 /* JFFAsyncOperationError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0C3F011826D33B00984027 /* JFFAsyncOperationError.m */; }; + 4C0C3F051826D33B00984027 /* JFFAsyncOperationError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0C3F011826D33B00984027 /* JFFAsyncOperationError.m */; }; + 4C0C3F081826D39100984027 /* JFFAsyncOperationAbstractFinishError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C0C3F061826D39100984027 /* JFFAsyncOperationAbstractFinishError.h */; }; + 4C0C3F091826D39100984027 /* JFFAsyncOperationAbstractFinishError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C0C3F061826D39100984027 /* JFFAsyncOperationAbstractFinishError.h */; }; + 4C0C3F0A1826D39100984027 /* JFFAsyncOperationAbstractFinishError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0C3F071826D39100984027 /* JFFAsyncOperationAbstractFinishError.m */; }; + 4C0C3F0B1826D39100984027 /* JFFAsyncOperationAbstractFinishError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0C3F071826D39100984027 /* JFFAsyncOperationAbstractFinishError.m */; }; + 4C0C3F0E1826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C0C3F0C1826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.h */; }; + 4C0C3F0F1826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C0C3F0C1826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.h */; }; + 4C0C3F101826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0C3F0D1826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.m */; }; + 4C0C3F111826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0C3F0D1826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.m */; }; + 4C0C3F141826D60400984027 /* JFFAsyncOpFinishedByCancellationError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C0C3F121826D60400984027 /* JFFAsyncOpFinishedByCancellationError.h */; }; + 4C0C3F151826D60400984027 /* JFFAsyncOpFinishedByCancellationError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C0C3F121826D60400984027 /* JFFAsyncOpFinishedByCancellationError.h */; }; + 4C0C3F161826D60400984027 /* JFFAsyncOpFinishedByCancellationError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0C3F131826D60400984027 /* JFFAsyncOpFinishedByCancellationError.m */; }; + 4C0C3F171826D60400984027 /* JFFAsyncOpFinishedByCancellationError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0C3F131826D60400984027 /* JFFAsyncOpFinishedByCancellationError.m */; }; + 4C1A0F46182577BE0020FBF6 /* JFFAsyncOperations_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = AA747D9E0F9514B9006C5449 /* JFFAsyncOperations_Prefix.pch */; }; + 4C1A0F47182577BE0020FBF6 /* JFFAsyncOperationsBlockDefinitions.h in Headers */ = {isa = PBXBuildFile; fileRef = 651BE1611391913300DD6890 /* JFFAsyncOperationsBlockDefinitions.h */; }; + 4C1A0F48182577BE0020FBF6 /* JFFAsyncOperationContinuity.h in Headers */ = {isa = PBXBuildFile; fileRef = 651BE1651391928400DD6890 /* JFFAsyncOperationContinuity.h */; }; + 4C1A0F4A182577BE0020FBF6 /* JFFBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648BD313924220001E163C /* JFFBlockOperation.h */; }; + 4C1A0F4B182577BE0020FBF6 /* JFFAsyncOperationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C381392490F001E163C /* JFFAsyncOperationUtils.h */; }; + 4C1A0F4C182577BE0020FBF6 /* JFFAsyncOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C5013924A77001E163C /* JFFAsyncOperations.h */; }; + 4C1A0F4D182577BE0020FBF6 /* NSObject+AutoCancelAsyncOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 655ADDDE13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h */; }; + 4C1A0F4E182577BE0020FBF6 /* JFFAsyncOperationHandlerBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F6B13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.h */; }; + 4C1A0F4F182577BE0020FBF6 /* JFFAsyncOperationLoadBalancer.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F9413B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.h */; }; + 4C1A0F50182577BE0020FBF6 /* JFFAsyncOperationProgressBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6534804A13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h */; }; + 4C1A0F51182577BE0020FBF6 /* JFFDidFinishAsyncOperationBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D1B3D6D13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.h */; }; + 4C1A0F52182577BE0020FBF6 /* JFFPropertyPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D9827F713F2B9D5009DD73B /* JFFPropertyPath.h */; }; + 4C1A0F53182577BE0020FBF6 /* NSObject+AsyncPropertyReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D9827F913F2B9D5009DD73B /* NSObject+AsyncPropertyReader.h */; }; + 4C1A0F54182577BE0020FBF6 /* JFFPropertyExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D9827FF13F2BA10009DD73B /* JFFPropertyExtractor.h */; }; + 4C1A0F55182577BE0020FBF6 /* JFFObjectRelatedPropertyData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D61CD2A13F2BC8A0003AC4A /* JFFObjectRelatedPropertyData.h */; }; + 4C1A0F56182577BE0020FBF6 /* NSObject+PropertyExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D61CD2F13F2BCE40003AC4A /* NSObject+PropertyExtractor.h */; }; + 4C1A0F57182577BE0020FBF6 /* JFFAsyncOperationsPredefinedBlocks.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B835B31142CBA2200FC004C /* JFFAsyncOperationsPredefinedBlocks.h */; }; + 4C1A0F58182577BE0020FBF6 /* NSError+ResultOwnerships.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B9528FA1500E67900C9B979 /* NSError+ResultOwnerships.h */; }; + 4C1A0F59182577BE0020FBF6 /* JFFAsyncOperationHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0FB885150604850056F14E /* JFFAsyncOperationHelpers.h */; }; + 4C1A0F5A182577BE0020FBF6 /* JFFAsyncOperationBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0D88C11519F81F00EC4A92 /* JFFAsyncOperationBuilder.h */; }; + 4C1A0F5B182577BE0020FBF6 /* JFFAsyncOperationAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0E83A71563954B00825E3C /* JFFAsyncOperationAdapter.h */; }; + 4C1A0F5C182577BE0020FBF6 /* JFFLimitedLoadersQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = CE4031CA163D266A00FE6427 /* JFFLimitedLoadersQueue.h */; }; + 4C1A0F5D182577BE0020FBF6 /* JFFStrategyFifo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E79064B16E4981700CFC696 /* JFFStrategyFifo.h */; }; + 4C1A0F5E182577BE0020FBF6 /* JFFQueueState.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E79065316E4984400CFC696 /* JFFQueueState.h */; }; + 4C1A0F5F182577BE0020FBF6 /* JFFQueueStrategyFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E79065B16E49DD900CFC696 /* JFFQueueStrategyFactory.h */; }; + 4C1A0F60182577BE0020FBF6 /* JFFStrategyStack.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E79066316E49F8000CFC696 /* JFFStrategyStack.h */; }; + 4C1A0F61182577BE0020FBF6 /* JFFStrategyRandom.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E79066B16E4A49B00CFC696 /* JFFStrategyRandom.h */; }; + 4C1A0F62182577BE0020FBF6 /* JFFAsyncOperationLoadBalancerContexts.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CF62FB016FDB6FE00DAE2BB /* JFFAsyncOperationLoadBalancerContexts.h */; }; + 4C1A0F63182577BE0020FBF6 /* JFFBaseStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C6DFB0C1718446500D86975 /* JFFBaseStrategy.h */; }; + 4C1A0F64182577BE0020FBF6 /* NSArray+AsyncMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CB5CDE5174F54E100F2B600 /* NSArray+AsyncMap.h */; }; + 4C1A0F65182577BE0020FBF6 /* NSDictionary+AsyncMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CB5CDE9174F551200F2B600 /* NSDictionary+AsyncMap.h */; }; + 4C1A0F67182577BE0020FBF6 /* NSObject+AutoCancelAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 655ADDDF13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.m */; }; + 4C1A0F68182577BE0020FBF6 /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D1B3D6E13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.m */; }; + 4C1A0F69182577BE0020FBF6 /* JFFAsyncOperationHandlerBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F6C13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.m */; }; + 4C1A0F6A182577BE0020FBF6 /* JFFAsyncOperationProgressBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6534804B13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.m */; }; + 4C1A0F6B182577BE0020FBF6 /* JFFAsyncOperationContinuity.m in Sources */ = {isa = PBXBuildFile; fileRef = 651BE1661391928400DD6890 /* JFFAsyncOperationContinuity.m */; }; + 4C1A0F6D182577BE0020FBF6 /* NSObject+AsyncPropertyReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D9827FA13F2B9D5009DD73B /* NSObject+AsyncPropertyReader.m */; }; + 4C1A0F6E182577BE0020FBF6 /* JFFPropertyExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D98280013F2BA10009DD73B /* JFFPropertyExtractor.m */; }; + 4C1A0F6F182577BE0020FBF6 /* JFFPropertyPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D9827F813F2B9D5009DD73B /* JFFPropertyPath.m */; }; + 4C1A0F70182577BE0020FBF6 /* JFFObjectRelatedPropertyData.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D61CD2B13F2BC8A0003AC4A /* JFFObjectRelatedPropertyData.m */; }; + 4C1A0F71182577BE0020FBF6 /* NSObject+PropertyExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D61CD3013F2BCE40003AC4A /* NSObject+PropertyExtractor.m */; }; + 4C1A0F72182577BE0020FBF6 /* JFFAsyncOperationsPredefinedBlocks.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B835B32142CBA2200FC004C /* JFFAsyncOperationsPredefinedBlocks.m */; }; + 4C1A0F73182577BE0020FBF6 /* JFFBlockOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65648BD413924220001E163C /* JFFBlockOperation.mm */; }; + 4C1A0F74182577BE0020FBF6 /* NSError+ResultOwnerships.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B9528FB1500E67900C9B979 /* NSError+ResultOwnerships.m */; }; + 4C1A0F75182577BE0020FBF6 /* JFFAsyncOperationHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B0FB886150604850056F14E /* JFFAsyncOperationHelpers.m */; }; + 4C1A0F76182577BE0020FBF6 /* JFFAsyncOperationBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B0D88C21519F81F00EC4A92 /* JFFAsyncOperationBuilder.m */; }; + 4C1A0F77182577BE0020FBF6 /* JFFAsyncOperationUtils.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65648C391392490F001E163C /* JFFAsyncOperationUtils.mm */; }; + 4C1A0F78182577BE0020FBF6 /* JFFAsyncOperationAdapter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1B0E83A81563954B00825E3C /* JFFAsyncOperationAdapter.mm */; }; + 4C1A0F79182577BE0020FBF6 /* JFFLimitedLoadersQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = CE4031CB163D266B00FE6427 /* JFFLimitedLoadersQueue.m */; }; + 4C1A0F7A182577BE0020FBF6 /* JFFStrategyFifo.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E79064C16E4981700CFC696 /* JFFStrategyFifo.m */; }; + 4C1A0F7B182577BE0020FBF6 /* JFFQueueState.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E79065416E4984400CFC696 /* JFFQueueState.m */; }; + 4C1A0F7C182577BE0020FBF6 /* JFFQueueStrategyFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E79065C16E49DD900CFC696 /* JFFQueueStrategyFactory.m */; }; + 4C1A0F7D182577BE0020FBF6 /* JFFStrategyStack.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E79066416E49F8000CFC696 /* JFFStrategyStack.m */; }; + 4C1A0F7E182577BE0020FBF6 /* JFFStrategyRandom.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E79066C16E4A49B00CFC696 /* JFFStrategyRandom.mm */; }; + 4C1A0F7F182577BE0020FBF6 /* JFFBaseLoaderOwner.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF62FB316FDB6FE00DAE2BB /* JFFBaseLoaderOwner.m */; }; + 4C1A0F80182577BE0020FBF6 /* JFFAsyncOperationLoadBalancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F9513B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.m */; }; + 4C1A0F81182577BE0020FBF6 /* JFFActiveLoaderData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF62FAF16FDB6FE00DAE2BB /* JFFActiveLoaderData.m */; }; + 4C1A0F82182577BE0020FBF6 /* JFFAsyncOperationLoadBalancerContexts.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF62FB116FDB6FE00DAE2BB /* JFFAsyncOperationLoadBalancerContexts.m */; }; + 4C1A0F83182577BE0020FBF6 /* JFFContextLoaders.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF62FB516FDB6FE00DAE2BB /* JFFContextLoaders.m */; }; + 4C1A0F84182577BE0020FBF6 /* JFFPedingLoaderData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF62FB716FDB6FE00DAE2BB /* JFFPedingLoaderData.m */; }; + 4C1A0F85182577BE0020FBF6 /* JFFBaseStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6DFB0D1718446600D86975 /* JFFBaseStrategy.m */; }; + 4C1A0F86182577BE0020FBF6 /* NSArray+AsyncMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB5CDE6174F54E100F2B600 /* NSArray+AsyncMap.m */; }; + 4C1A0F87182577BE0020FBF6 /* NSDictionary+AsyncMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB5CDEA174F551300F2B600 /* NSDictionary+AsyncMap.m */; }; + 4C1A0F89182577BE0020FBF6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; + 4C1A0FC018257F590020FBF6 /* JFFAsyncTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C1A0FBE18257F590020FBF6 /* JFFAsyncTools.h */; }; + 4C1A0FC118257F590020FBF6 /* JFFAsyncTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C1A0FBE18257F590020FBF6 /* JFFAsyncTools.h */; }; + 4C1A0FC218257F590020FBF6 /* JFFAsyncTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1A0FBF18257F590020FBF6 /* JFFAsyncTools.m */; }; + 4C1A0FC318257F590020FBF6 /* JFFAsyncTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1A0FBF18257F590020FBF6 /* JFFAsyncTools.m */; }; 4C6DFB0E1718446600D86975 /* JFFBaseStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C6DFB0C1718446500D86975 /* JFFBaseStrategy.h */; }; 4C6DFB0F1718446600D86975 /* JFFBaseStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6DFB0D1718446600D86975 /* JFFBaseStrategy.m */; }; 4CB5CDE7174F54E200F2B600 /* NSArray+AsyncMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CB5CDE5174F54E100F2B600 /* NSArray+AsyncMap.h */; }; @@ -50,17 +133,20 @@ 4CBBDCCE1717422D004D670D /* JFFPedingLoaderData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF62FB716FDB6FE00DAE2BB /* JFFPedingLoaderData.m */; }; 4CBBDCCF1717422E004D670D /* JFFPedingLoaderData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF62FB716FDB6FE00DAE2BB /* JFFPedingLoaderData.m */; }; 4CBBDCD01717422E004D670D /* JFFPedingLoaderData.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF62FB716FDB6FE00DAE2BB /* JFFPedingLoaderData.m */; }; + 4CDB8E10182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CDB8E0E182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.h */; }; + 4CDB8E11182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CDB8E0E182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.h */; }; + 4CDB8E12182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CDB8E0F182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.m */; }; + 4CDB8E13182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CDB8E0F182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.m */; }; 4CF62FCD16FDBA3800DAE2BB /* JFFAsyncOperationLoadBalancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F9513B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.m */; }; 4CF62FCE16FDBA3800DAE2BB /* JFFAsyncOperationLoadBalancer.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F9513B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.m */; }; 5391035714A88BB5007315A3 /* JFFAsyncOperations_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = AA747D9E0F9514B9006C5449 /* JFFAsyncOperations_Prefix.pch */; }; 5391035814A88BB5007315A3 /* JFFAsyncOperationsBlockDefinitions.h in Headers */ = {isa = PBXBuildFile; fileRef = 651BE1611391913300DD6890 /* JFFAsyncOperationsBlockDefinitions.h */; }; 5391035914A88BB5007315A3 /* JFFAsyncOperationContinuity.h in Headers */ = {isa = PBXBuildFile; fileRef = 651BE1651391928400DD6890 /* JFFAsyncOperationContinuity.h */; }; - 5391035A14A88BB5007315A3 /* JFFCallbacksBlocksHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648BAD1392407F001E163C /* JFFCallbacksBlocksHolder.h */; }; 5391035C14A88BB5007315A3 /* JFFBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648BD313924220001E163C /* JFFBlockOperation.h */; }; 5391035D14A88BB5007315A3 /* JFFAsyncOperationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C381392490F001E163C /* JFFAsyncOperationUtils.h */; }; 5391035E14A88BB5007315A3 /* JFFAsyncOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C5013924A77001E163C /* JFFAsyncOperations.h */; }; 5391035F14A88BB5007315A3 /* NSObject+AutoCancelAsyncOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 655ADDDE13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h */; }; - 5391036014A88BB5007315A3 /* JFFCancelAsyncOperationBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F6B13B7EEE50002CF73 /* JFFCancelAsyncOperationBlockHolder.h */; }; + 5391036014A88BB5007315A3 /* JFFAsyncOperationHandlerBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F6B13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.h */; }; 5391036114A88BB5007315A3 /* JFFAsyncOperationLoadBalancer.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F9413B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.h */; }; 5391036514A88BB5007315A3 /* JFFAsyncOperationProgressBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6534804A13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h */; }; 5391036714A88BB5007315A3 /* JFFDidFinishAsyncOperationBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D1B3D6D13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.h */; }; @@ -71,20 +157,18 @@ 5391036C14A88BB5007315A3 /* NSObject+PropertyExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D61CD2F13F2BCE40003AC4A /* NSObject+PropertyExtractor.h */; }; 5391036F14A88BB5007315A3 /* NSObject+AutoCancelAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 655ADDDF13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.m */; }; 5391037014A88BB5007315A3 /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D1B3D6E13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.m */; }; - 5391037114A88BB5007315A3 /* JFFCancelAsyncOperationBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F6C13B7EEE50002CF73 /* JFFCancelAsyncOperationBlockHolder.m */; }; + 5391037114A88BB5007315A3 /* JFFAsyncOperationHandlerBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F6C13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.m */; }; 5391037214A88BB5007315A3 /* JFFAsyncOperationProgressBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6534804B13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.m */; }; 5391037314A88BB5007315A3 /* JFFAsyncOperationContinuity.m in Sources */ = {isa = PBXBuildFile; fileRef = 651BE1661391928400DD6890 /* JFFAsyncOperationContinuity.m */; }; - 5391037414A88BB5007315A3 /* JFFCallbacksBlocksHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65648BAE1392407F001E163C /* JFFCallbacksBlocksHolder.m */; }; 5391037714A88BB5007315A3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; 651BE1621391913300DD6890 /* JFFAsyncOperationsBlockDefinitions.h in Headers */ = {isa = PBXBuildFile; fileRef = 651BE1611391913300DD6890 /* JFFAsyncOperationsBlockDefinitions.h */; }; 651BE1671391928400DD6890 /* JFFAsyncOperationContinuity.h in Headers */ = {isa = PBXBuildFile; fileRef = 651BE1651391928400DD6890 /* JFFAsyncOperationContinuity.h */; }; 6532667C14C1EB27004E90B0 /* JFFAsyncOperationsPredefinedBlocks.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B835B31142CBA2200FC004C /* JFFAsyncOperationsPredefinedBlocks.h */; }; - 65347F6D13B7EEE50002CF73 /* JFFCancelAsyncOperationBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F6B13B7EEE50002CF73 /* JFFCancelAsyncOperationBlockHolder.h */; }; + 65347F6D13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F6B13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.h */; }; 65347F9613B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F9413B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.h */; }; 6534804C13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6534804A13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h */; }; 65462C9514D8811100685ED8 /* JFFBlockOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65648BD413924220001E163C /* JFFBlockOperation.mm */; }; 655ADDE013B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 655ADDDE13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h */; }; - 65648BAF1392407F001E163C /* JFFCallbacksBlocksHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648BAD1392407F001E163C /* JFFCallbacksBlocksHolder.h */; }; 65648BD513924220001E163C /* JFFBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648BD313924220001E163C /* JFFBlockOperation.h */; }; 65648C3A1392490F001E163C /* JFFAsyncOperationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C381392490F001E163C /* JFFAsyncOperationUtils.h */; }; 65648C5113924A77001E163C /* JFFAsyncOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C5013924A77001E163C /* JFFAsyncOperations.h */; }; @@ -129,8 +213,7 @@ 7E8F20DB14F94C3100588C7D /* JFFPropertyPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D9827F813F2B9D5009DD73B /* JFFPropertyPath.m */; }; 7E8F20DD14F94C3100588C7D /* JFFPropertyExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D98280013F2BA10009DD73B /* JFFPropertyExtractor.m */; }; 7E8F20DF14F94C3100588C7D /* NSObject+AsyncPropertyReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D9827FA13F2B9D5009DD73B /* NSObject+AsyncPropertyReader.m */; }; - 7E8F20E114F94C3100588C7D /* JFFCallbacksBlocksHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65648BAE1392407F001E163C /* JFFCallbacksBlocksHolder.m */; }; - 7E8F20E314F94C3100588C7D /* JFFCancelAsyncOperationBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F6C13B7EEE50002CF73 /* JFFCancelAsyncOperationBlockHolder.m */; }; + 7E8F20E314F94C3100588C7D /* JFFAsyncOperationHandlerBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F6C13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.m */; }; 7E8F20E514F94C3100588C7D /* JFFAsyncOperationProgressBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6534804B13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.m */; }; 7E8F20E714F94C3100588C7D /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D1B3D6E13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.m */; }; 7E8F20F414F94C3100588C7D /* JFFAsyncOperationsPredefinedBlocks.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B835B32142CBA2200FC004C /* JFFAsyncOperationsPredefinedBlocks.m */; }; @@ -142,8 +225,7 @@ 7E8F210214F94C6100588C7D /* JFFPropertyPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D9827F713F2B9D5009DD73B /* JFFPropertyPath.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7E8F210414F94C6100588C7D /* JFFPropertyExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D9827FF13F2BA10009DD73B /* JFFPropertyExtractor.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7E8F210614F94C6100588C7D /* NSObject+AsyncPropertyReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D9827F913F2B9D5009DD73B /* NSObject+AsyncPropertyReader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E8F210814F94C6100588C7D /* JFFCallbacksBlocksHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648BAD1392407F001E163C /* JFFCallbacksBlocksHolder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E8F210A14F94C6100588C7D /* JFFCancelAsyncOperationBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F6B13B7EEE50002CF73 /* JFFCancelAsyncOperationBlockHolder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E8F210A14F94C6100588C7D /* JFFAsyncOperationHandlerBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F6B13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7E8F210C14F94C6100588C7D /* JFFAsyncOperationProgressBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6534804A13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7E8F210E14F94C6100588C7D /* JFFDidFinishAsyncOperationBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D1B3D6D13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7E8F211814F94C6100588C7D /* JFFAsyncOperationLoadBalancer.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F9413B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -178,12 +260,27 @@ 1B9368DF156504D800F8A394 /* JFFAsyncOperationInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationInterface.h; sourceTree = ""; }; 1B9528FA1500E67900C9B979 /* NSError+ResultOwnerships.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSError+ResultOwnerships.h"; sourceTree = ""; }; 1B9528FB1500E67900C9B979 /* NSError+ResultOwnerships.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSError+ResultOwnerships.m"; sourceTree = ""; }; + 4C0C3EFE1826CC9200984027 /* JFFAsyncOperationState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationState.h; sourceTree = ""; }; + 4C0C3F001826D33B00984027 /* JFFAsyncOperationError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationError.h; sourceTree = ""; }; + 4C0C3F011826D33B00984027 /* JFFAsyncOperationError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOperationError.m; sourceTree = ""; }; + 4C0C3F061826D39100984027 /* JFFAsyncOperationAbstractFinishError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationAbstractFinishError.h; sourceTree = ""; }; + 4C0C3F071826D39100984027 /* JFFAsyncOperationAbstractFinishError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOperationAbstractFinishError.m; sourceTree = ""; }; + 4C0C3F0C1826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOpFinishedByUnsubscriptionError.h; sourceTree = ""; }; + 4C0C3F0D1826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOpFinishedByUnsubscriptionError.m; sourceTree = ""; }; + 4C0C3F121826D60400984027 /* JFFAsyncOpFinishedByCancellationError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOpFinishedByCancellationError.h; sourceTree = ""; }; + 4C0C3F131826D60400984027 /* JFFAsyncOpFinishedByCancellationError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOpFinishedByCancellationError.m; sourceTree = ""; }; + 4C1A0F8D182577BE0020FBF6 /* libJFFAsyncOperationsMacOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libJFFAsyncOperationsMacOS.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C1A0FBE18257F590020FBF6 /* JFFAsyncTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncTools.h; sourceTree = ""; }; + 4C1A0FBF18257F590020FBF6 /* JFFAsyncTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncTools.m; sourceTree = ""; }; + 4C1A0FEF1826A8E60020FBF6 /* JFFAsyncOperationHandlerTask.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationHandlerTask.h; sourceTree = ""; }; 4C6DFB0C1718446500D86975 /* JFFBaseStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFBaseStrategy.h; sourceTree = ""; }; 4C6DFB0D1718446600D86975 /* JFFBaseStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFBaseStrategy.m; sourceTree = ""; }; 4CB5CDE5174F54E100F2B600 /* NSArray+AsyncMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+AsyncMap.h"; sourceTree = ""; }; 4CB5CDE6174F54E100F2B600 /* NSArray+AsyncMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+AsyncMap.m"; sourceTree = ""; }; 4CB5CDE9174F551200F2B600 /* NSDictionary+AsyncMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+AsyncMap.h"; sourceTree = ""; }; 4CB5CDEA174F551300F2B600 /* NSDictionary+AsyncMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+AsyncMap.m"; sourceTree = ""; }; + 4CDB8E0E182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFFileDescriptorReaderError.h; sourceTree = ""; }; + 4CDB8E0F182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFFileDescriptorReaderError.m; sourceTree = ""; }; 4CF62FAE16FDB6FE00DAE2BB /* JFFActiveLoaderData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFActiveLoaderData.h; sourceTree = ""; }; 4CF62FAF16FDB6FE00DAE2BB /* JFFActiveLoaderData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFActiveLoaderData.m; sourceTree = ""; }; 4CF62FB016FDB6FE00DAE2BB /* JFFAsyncOperationLoadBalancerContexts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationLoadBalancerContexts.h; sourceTree = ""; }; @@ -198,16 +295,14 @@ 651BE1611391913300DD6890 /* JFFAsyncOperationsBlockDefinitions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationsBlockDefinitions.h; sourceTree = ""; }; 651BE1651391928400DD6890 /* JFFAsyncOperationContinuity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationContinuity.h; sourceTree = ""; }; 651BE1661391928400DD6890 /* JFFAsyncOperationContinuity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOperationContinuity.m; sourceTree = ""; }; - 65347F6B13B7EEE50002CF73 /* JFFCancelAsyncOperationBlockHolder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFCancelAsyncOperationBlockHolder.h; sourceTree = ""; }; - 65347F6C13B7EEE50002CF73 /* JFFCancelAsyncOperationBlockHolder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFCancelAsyncOperationBlockHolder.m; sourceTree = ""; }; + 65347F6B13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationHandlerBlockHolder.h; sourceTree = ""; }; + 65347F6C13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOperationHandlerBlockHolder.m; sourceTree = ""; }; 65347F9413B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationLoadBalancer.h; sourceTree = ""; }; 65347F9513B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOperationLoadBalancer.m; sourceTree = ""; }; 6534804A13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationProgressBlockHolder.h; sourceTree = ""; }; 6534804B13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOperationProgressBlockHolder.m; sourceTree = ""; }; 655ADDDE13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+AutoCancelAsyncOperation.h"; sourceTree = ""; }; 655ADDDF13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+AutoCancelAsyncOperation.m"; sourceTree = ""; }; - 65648BAD1392407F001E163C /* JFFCallbacksBlocksHolder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFCallbacksBlocksHolder.h; sourceTree = ""; }; - 65648BAE1392407F001E163C /* JFFCallbacksBlocksHolder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFCallbacksBlocksHolder.m; sourceTree = ""; }; 65648BD313924220001E163C /* JFFBlockOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFBlockOperation.h; sourceTree = ""; }; 65648BD413924220001E163C /* JFFBlockOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JFFBlockOperation.mm; sourceTree = ""; }; 65648C381392490F001E163C /* JFFAsyncOperationUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationUtils.h; sourceTree = ""; }; @@ -249,6 +344,14 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 4C1A0F88182577BE0020FBF6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C1A0F89182577BE0020FBF6 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5391037514A88BB5007315A3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -282,6 +385,7 @@ D2AAC07E0554694100DB518D /* libJFFAsyncOperations.a */, 5391037B14A88BB5007315A3 /* libJFFAsyncOperations-clang.a */, 7E8F20C914F94BDF00588C7D /* JFFAsyncOperationsFW.framework */, + 4C1A0F8D182577BE0020FBF6 /* libJFFAsyncOperationsMacOS.a */, ); name = Products; sourceTree = ""; @@ -310,6 +414,8 @@ 08FB77AEFE84172EC02AAC07 /* Classes */ = { isa = PBXGroup; children = ( + 4C0C3EFF1826D31E00984027 /* Errors */, + 4C1A0FBD18257F1D0020FBF6 /* Tools */, 4CB5CDE4174F54CA00F2B600 /* Categories */, 1B0D88BF1519F80C00EC4A92 /* AsyncOperartionsBuilder */, 8D9827F613F2B9AF009DD73B /* CachedAsyncOperations */, @@ -319,6 +425,8 @@ 651BE1611391913300DD6890 /* JFFAsyncOperationsBlockDefinitions.h */, 1B835B31142CBA2200FC004C /* JFFAsyncOperationsPredefinedBlocks.h */, 1B835B32142CBA2200FC004C /* JFFAsyncOperationsPredefinedBlocks.m */, + 4C0C3EFE1826CC9200984027 /* JFFAsyncOperationState.h */, + 4C1A0FEF1826A8E60020FBF6 /* JFFAsyncOperationHandlerTask.h */, 65648BD313924220001E163C /* JFFBlockOperation.h */, 65648BD413924220001E163C /* JFFBlockOperation.mm */, 655ADDDE13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h */, @@ -359,6 +467,32 @@ name = "Other Sources"; sourceTree = ""; }; + 4C0C3EFF1826D31E00984027 /* Errors */ = { + isa = PBXGroup; + children = ( + 4C0C3F001826D33B00984027 /* JFFAsyncOperationError.h */, + 4C0C3F011826D33B00984027 /* JFFAsyncOperationError.m */, + 4C0C3F061826D39100984027 /* JFFAsyncOperationAbstractFinishError.h */, + 4C0C3F071826D39100984027 /* JFFAsyncOperationAbstractFinishError.m */, + 4C0C3F0C1826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.h */, + 4C0C3F0D1826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.m */, + 4C0C3F121826D60400984027 /* JFFAsyncOpFinishedByCancellationError.h */, + 4C0C3F131826D60400984027 /* JFFAsyncOpFinishedByCancellationError.m */, + 4CDB8E0E182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.h */, + 4CDB8E0F182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.m */, + ); + path = Errors; + sourceTree = ""; + }; + 4C1A0FBD18257F1D0020FBF6 /* Tools */ = { + isa = PBXGroup; + children = ( + 4C1A0FBE18257F590020FBF6 /* JFFAsyncTools.h */, + 4C1A0FBF18257F590020FBF6 /* JFFAsyncTools.m */, + ); + path = Tools; + sourceTree = ""; + }; 4CB5CDE4174F54CA00F2B600 /* Categories */ = { isa = PBXGroup; children = ( @@ -390,8 +524,8 @@ 65347F2E13B7ECDB0002CF73 /* Helpers */ = { isa = PBXGroup; children = ( - 65347F6B13B7EEE50002CF73 /* JFFCancelAsyncOperationBlockHolder.h */, - 65347F6C13B7EEE50002CF73 /* JFFCancelAsyncOperationBlockHolder.m */, + 65347F6B13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.h */, + 65347F6C13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.m */, 6534804A13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h */, 6534804B13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.m */, 8D1B3D6D13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.h */, @@ -417,8 +551,6 @@ 65648AF913923C47001E163C /* Detail */ = { isa = PBXGroup; children = ( - 65648BAD1392407F001E163C /* JFFCallbacksBlocksHolder.h */, - 65648BAE1392407F001E163C /* JFFCallbacksBlocksHolder.m */, 1B9528FA1500E67900C9B979 /* NSError+ResultOwnerships.h */, 1B9528FB1500E67900C9B979 /* NSError+ResultOwnerships.m */, 1B0E83A71563954B00825E3C /* JFFAsyncOperationAdapter.h */, @@ -493,6 +625,50 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 4C1A0F45182577BE0020FBF6 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C1A0F46182577BE0020FBF6 /* JFFAsyncOperations_Prefix.pch in Headers */, + 4C1A0F47182577BE0020FBF6 /* JFFAsyncOperationsBlockDefinitions.h in Headers */, + 4C1A0F48182577BE0020FBF6 /* JFFAsyncOperationContinuity.h in Headers */, + 4C0C3F091826D39100984027 /* JFFAsyncOperationAbstractFinishError.h in Headers */, + 4C1A0F4A182577BE0020FBF6 /* JFFBlockOperation.h in Headers */, + 4C1A0F4B182577BE0020FBF6 /* JFFAsyncOperationUtils.h in Headers */, + 4C1A0F4C182577BE0020FBF6 /* JFFAsyncOperations.h in Headers */, + 4C1A0F4D182577BE0020FBF6 /* NSObject+AutoCancelAsyncOperation.h in Headers */, + 4C0C3F151826D60400984027 /* JFFAsyncOpFinishedByCancellationError.h in Headers */, + 4C1A0F4E182577BE0020FBF6 /* JFFAsyncOperationHandlerBlockHolder.h in Headers */, + 4C1A0F4F182577BE0020FBF6 /* JFFAsyncOperationLoadBalancer.h in Headers */, + 4C1A0F50182577BE0020FBF6 /* JFFAsyncOperationProgressBlockHolder.h in Headers */, + 4C1A0F51182577BE0020FBF6 /* JFFDidFinishAsyncOperationBlockHolder.h in Headers */, + 4C1A0F52182577BE0020FBF6 /* JFFPropertyPath.h in Headers */, + 4C1A0F53182577BE0020FBF6 /* NSObject+AsyncPropertyReader.h in Headers */, + 4C1A0F54182577BE0020FBF6 /* JFFPropertyExtractor.h in Headers */, + 4C1A0F55182577BE0020FBF6 /* JFFObjectRelatedPropertyData.h in Headers */, + 4C1A0F56182577BE0020FBF6 /* NSObject+PropertyExtractor.h in Headers */, + 4C1A0F57182577BE0020FBF6 /* JFFAsyncOperationsPredefinedBlocks.h in Headers */, + 4C1A0F58182577BE0020FBF6 /* NSError+ResultOwnerships.h in Headers */, + 4C1A0F59182577BE0020FBF6 /* JFFAsyncOperationHelpers.h in Headers */, + 4C1A0F5A182577BE0020FBF6 /* JFFAsyncOperationBuilder.h in Headers */, + 4C1A0F5B182577BE0020FBF6 /* JFFAsyncOperationAdapter.h in Headers */, + 4C1A0FC118257F590020FBF6 /* JFFAsyncTools.h in Headers */, + 4C1A0F5C182577BE0020FBF6 /* JFFLimitedLoadersQueue.h in Headers */, + 4C1A0F5D182577BE0020FBF6 /* JFFStrategyFifo.h in Headers */, + 4C1A0F5E182577BE0020FBF6 /* JFFQueueState.h in Headers */, + 4CDB8E11182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.h in Headers */, + 4C0C3F0F1826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.h in Headers */, + 4C1A0F5F182577BE0020FBF6 /* JFFQueueStrategyFactory.h in Headers */, + 4C1A0F60182577BE0020FBF6 /* JFFStrategyStack.h in Headers */, + 4C1A0F61182577BE0020FBF6 /* JFFStrategyRandom.h in Headers */, + 4C1A0F62182577BE0020FBF6 /* JFFAsyncOperationLoadBalancerContexts.h in Headers */, + 4C1A0F63182577BE0020FBF6 /* JFFBaseStrategy.h in Headers */, + 4C0C3F031826D33B00984027 /* JFFAsyncOperationError.h in Headers */, + 4C1A0F64182577BE0020FBF6 /* NSArray+AsyncMap.h in Headers */, + 4C1A0F65182577BE0020FBF6 /* NSDictionary+AsyncMap.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5391035614A88BB5007315A3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -500,12 +676,11 @@ 5391035714A88BB5007315A3 /* JFFAsyncOperations_Prefix.pch in Headers */, 5391035814A88BB5007315A3 /* JFFAsyncOperationsBlockDefinitions.h in Headers */, 5391035914A88BB5007315A3 /* JFFAsyncOperationContinuity.h in Headers */, - 5391035A14A88BB5007315A3 /* JFFCallbacksBlocksHolder.h in Headers */, 5391035C14A88BB5007315A3 /* JFFBlockOperation.h in Headers */, 5391035D14A88BB5007315A3 /* JFFAsyncOperationUtils.h in Headers */, 5391035E14A88BB5007315A3 /* JFFAsyncOperations.h in Headers */, 5391035F14A88BB5007315A3 /* NSObject+AutoCancelAsyncOperation.h in Headers */, - 5391036014A88BB5007315A3 /* JFFCancelAsyncOperationBlockHolder.h in Headers */, + 5391036014A88BB5007315A3 /* JFFAsyncOperationHandlerBlockHolder.h in Headers */, 5391036114A88BB5007315A3 /* JFFAsyncOperationLoadBalancer.h in Headers */, 5391036514A88BB5007315A3 /* JFFAsyncOperationProgressBlockHolder.h in Headers */, 5391036714A88BB5007315A3 /* JFFDidFinishAsyncOperationBlockHolder.h in Headers */, @@ -533,8 +708,7 @@ 7E8F210214F94C6100588C7D /* JFFPropertyPath.h in Headers */, 7E8F210414F94C6100588C7D /* JFFPropertyExtractor.h in Headers */, 7E8F210614F94C6100588C7D /* NSObject+AsyncPropertyReader.h in Headers */, - 7E8F210814F94C6100588C7D /* JFFCallbacksBlocksHolder.h in Headers */, - 7E8F210A14F94C6100588C7D /* JFFCancelAsyncOperationBlockHolder.h in Headers */, + 7E8F210A14F94C6100588C7D /* JFFAsyncOperationHandlerBlockHolder.h in Headers */, 7E8F210C14F94C6100588C7D /* JFFAsyncOperationProgressBlockHolder.h in Headers */, 7E8F210E14F94C6100588C7D /* JFFDidFinishAsyncOperationBlockHolder.h in Headers */, 7E8F211814F94C6100588C7D /* JFFAsyncOperationLoadBalancer.h in Headers */, @@ -561,12 +735,13 @@ AA747D9F0F9514B9006C5449 /* JFFAsyncOperations_Prefix.pch in Headers */, 651BE1621391913300DD6890 /* JFFAsyncOperationsBlockDefinitions.h in Headers */, 651BE1671391928400DD6890 /* JFFAsyncOperationContinuity.h in Headers */, - 65648BAF1392407F001E163C /* JFFCallbacksBlocksHolder.h in Headers */, + 4C0C3F081826D39100984027 /* JFFAsyncOperationAbstractFinishError.h in Headers */, 65648BD513924220001E163C /* JFFBlockOperation.h in Headers */, 65648C3A1392490F001E163C /* JFFAsyncOperationUtils.h in Headers */, 65648C5113924A77001E163C /* JFFAsyncOperations.h in Headers */, 655ADDE013B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h in Headers */, - 65347F6D13B7EEE50002CF73 /* JFFCancelAsyncOperationBlockHolder.h in Headers */, + 4C0C3F141826D60400984027 /* JFFAsyncOpFinishedByCancellationError.h in Headers */, + 65347F6D13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.h in Headers */, 65347F9613B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.h in Headers */, 6534804C13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h in Headers */, 8D1B3D6F13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.h in Headers */, @@ -580,14 +755,18 @@ 1B0FB887150604860056F14E /* JFFAsyncOperationHelpers.h in Headers */, 1B0D88C31519F81F00EC4A92 /* JFFAsyncOperationBuilder.h in Headers */, 1B0E83A91563954B00825E3C /* JFFAsyncOperationAdapter.h in Headers */, + 4C1A0FC018257F590020FBF6 /* JFFAsyncTools.h in Headers */, CE4031CC163D266B00FE6427 /* JFFLimitedLoadersQueue.h in Headers */, 7E79064D16E4981700CFC696 /* JFFStrategyFifo.h in Headers */, 7E79065516E4984400CFC696 /* JFFQueueState.h in Headers */, + 4CDB8E10182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.h in Headers */, + 4C0C3F0E1826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.h in Headers */, 7E79065D16E49DD900CFC696 /* JFFQueueStrategyFactory.h in Headers */, 7E79066516E49F8000CFC696 /* JFFStrategyStack.h in Headers */, 7E79066D16E4A49B00CFC696 /* JFFStrategyRandom.h in Headers */, 4CBBDCC0171741DB004D670D /* JFFAsyncOperationLoadBalancerContexts.h in Headers */, 4C6DFB0E1718446600D86975 /* JFFBaseStrategy.h in Headers */, + 4C0C3F021826D33B00984027 /* JFFAsyncOperationError.h in Headers */, 4CB5CDE7174F54E200F2B600 /* NSArray+AsyncMap.h in Headers */, 4CB5CDEB174F551300F2B600 /* NSDictionary+AsyncMap.h in Headers */, ); @@ -596,6 +775,23 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + 4C1A0F44182577BE0020FBF6 /* JFFAsyncOperationsMacOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C1A0F8A182577BE0020FBF6 /* Build configuration list for PBXNativeTarget "JFFAsyncOperationsMacOS" */; + buildPhases = ( + 4C1A0F45182577BE0020FBF6 /* Headers */, + 4C1A0F66182577BE0020FBF6 /* Sources */, + 4C1A0F88182577BE0020FBF6 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = JFFAsyncOperationsMacOS; + productName = JFFAsyncOperations; + productReference = 4C1A0F8D182577BE0020FBF6 /* libJFFAsyncOperationsMacOS.a */; + productType = "com.apple.product-type.library.static"; + }; 5391035314A88BB5007315A3 /* JFFAsyncOperations-clang */ = { isa = PBXNativeTarget; buildConfigurationList = 5391037814A88BB5007315A3 /* Build configuration list for PBXNativeTarget "JFFAsyncOperations-clang" */; @@ -678,6 +874,7 @@ D2AAC07D0554694100DB518D /* JFFAsyncOperations */, 5391035314A88BB5007315A3 /* JFFAsyncOperations-clang */, 7E8F20C814F94BDF00588C7D /* JFFAsyncOperationsFW */, + 4C1A0F44182577BE0020FBF6 /* JFFAsyncOperationsMacOS */, ); }; /* End PBXProject section */ @@ -739,16 +936,60 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 4C1A0F66182577BE0020FBF6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C1A0F67182577BE0020FBF6 /* NSObject+AutoCancelAsyncOperation.m in Sources */, + 4C1A0F68182577BE0020FBF6 /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */, + 4C1A0F69182577BE0020FBF6 /* JFFAsyncOperationHandlerBlockHolder.m in Sources */, + 4C1A0F6A182577BE0020FBF6 /* JFFAsyncOperationProgressBlockHolder.m in Sources */, + 4C1A0F6B182577BE0020FBF6 /* JFFAsyncOperationContinuity.m in Sources */, + 4C1A0F6D182577BE0020FBF6 /* NSObject+AsyncPropertyReader.m in Sources */, + 4C1A0F6E182577BE0020FBF6 /* JFFPropertyExtractor.m in Sources */, + 4C1A0F6F182577BE0020FBF6 /* JFFPropertyPath.m in Sources */, + 4C1A0F70182577BE0020FBF6 /* JFFObjectRelatedPropertyData.m in Sources */, + 4C1A0F71182577BE0020FBF6 /* NSObject+PropertyExtractor.m in Sources */, + 4C1A0FC318257F590020FBF6 /* JFFAsyncTools.m in Sources */, + 4C1A0F72182577BE0020FBF6 /* JFFAsyncOperationsPredefinedBlocks.m in Sources */, + 4C1A0F73182577BE0020FBF6 /* JFFBlockOperation.mm in Sources */, + 4C1A0F74182577BE0020FBF6 /* NSError+ResultOwnerships.m in Sources */, + 4C1A0F75182577BE0020FBF6 /* JFFAsyncOperationHelpers.m in Sources */, + 4C1A0F76182577BE0020FBF6 /* JFFAsyncOperationBuilder.m in Sources */, + 4C1A0F77182577BE0020FBF6 /* JFFAsyncOperationUtils.mm in Sources */, + 4C1A0F78182577BE0020FBF6 /* JFFAsyncOperationAdapter.mm in Sources */, + 4CDB8E13182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.m in Sources */, + 4C1A0F79182577BE0020FBF6 /* JFFLimitedLoadersQueue.m in Sources */, + 4C0C3F111826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.m in Sources */, + 4C1A0F7A182577BE0020FBF6 /* JFFStrategyFifo.m in Sources */, + 4C0C3F0B1826D39100984027 /* JFFAsyncOperationAbstractFinishError.m in Sources */, + 4C0C3F171826D60400984027 /* JFFAsyncOpFinishedByCancellationError.m in Sources */, + 4C1A0F7B182577BE0020FBF6 /* JFFQueueState.m in Sources */, + 4C1A0F7C182577BE0020FBF6 /* JFFQueueStrategyFactory.m in Sources */, + 4C1A0F7D182577BE0020FBF6 /* JFFStrategyStack.m in Sources */, + 4C1A0F7E182577BE0020FBF6 /* JFFStrategyRandom.mm in Sources */, + 4C1A0F7F182577BE0020FBF6 /* JFFBaseLoaderOwner.m in Sources */, + 4C1A0F80182577BE0020FBF6 /* JFFAsyncOperationLoadBalancer.m in Sources */, + 4C1A0F81182577BE0020FBF6 /* JFFActiveLoaderData.m in Sources */, + 4C1A0F82182577BE0020FBF6 /* JFFAsyncOperationLoadBalancerContexts.m in Sources */, + 4C1A0F83182577BE0020FBF6 /* JFFContextLoaders.m in Sources */, + 4C1A0F84182577BE0020FBF6 /* JFFPedingLoaderData.m in Sources */, + 4C1A0F85182577BE0020FBF6 /* JFFBaseStrategy.m in Sources */, + 4C1A0F86182577BE0020FBF6 /* NSArray+AsyncMap.m in Sources */, + 4C0C3F051826D33B00984027 /* JFFAsyncOperationError.m in Sources */, + 4C1A0F87182577BE0020FBF6 /* NSDictionary+AsyncMap.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 5391036E14A88BB5007315A3 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 5391036F14A88BB5007315A3 /* NSObject+AutoCancelAsyncOperation.m in Sources */, 5391037014A88BB5007315A3 /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */, - 5391037114A88BB5007315A3 /* JFFCancelAsyncOperationBlockHolder.m in Sources */, + 5391037114A88BB5007315A3 /* JFFAsyncOperationHandlerBlockHolder.m in Sources */, 5391037214A88BB5007315A3 /* JFFAsyncOperationProgressBlockHolder.m in Sources */, 5391037314A88BB5007315A3 /* JFFAsyncOperationContinuity.m in Sources */, - 5391037414A88BB5007315A3 /* JFFCallbacksBlocksHolder.m in Sources */, 4CF62FCD16FDBA3800DAE2BB /* JFFAsyncOperationLoadBalancer.m in Sources */, 7E79065116E4981700CFC696 /* JFFStrategyFifo.m in Sources */, 7E79065916E4984400CFC696 /* JFFQueueState.m in Sources */, @@ -771,8 +1012,7 @@ 7E8F20DB14F94C3100588C7D /* JFFPropertyPath.m in Sources */, 7E8F20DD14F94C3100588C7D /* JFFPropertyExtractor.m in Sources */, 7E8F20DF14F94C3100588C7D /* NSObject+AsyncPropertyReader.m in Sources */, - 7E8F20E114F94C3100588C7D /* JFFCallbacksBlocksHolder.m in Sources */, - 7E8F20E314F94C3100588C7D /* JFFCancelAsyncOperationBlockHolder.m in Sources */, + 7E8F20E314F94C3100588C7D /* JFFAsyncOperationHandlerBlockHolder.m in Sources */, 7E8F20E514F94C3100588C7D /* JFFAsyncOperationProgressBlockHolder.m in Sources */, 7E8F20E714F94C3100588C7D /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */, 7E8F20F414F94C3100588C7D /* JFFAsyncOperationsPredefinedBlocks.m in Sources */, @@ -800,15 +1040,15 @@ files = ( 1B2A678D143F3D0E00BC284F /* NSObject+AutoCancelAsyncOperation.m in Sources */, 1B2A67E5143F4CAB00BC284F /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */, - 1B2A682B143F532500BC284F /* JFFCancelAsyncOperationBlockHolder.m in Sources */, + 1B2A682B143F532500BC284F /* JFFAsyncOperationHandlerBlockHolder.m in Sources */, 1B2A682E143F537B00BC284F /* JFFAsyncOperationProgressBlockHolder.m in Sources */, 1BA2551C1443109B00C9B2BE /* JFFAsyncOperationContinuity.m in Sources */, - 1B0857D3145169B3001DDE0A /* JFFCallbacksBlocksHolder.m in Sources */, 6572C43814A75CD8008CFCFD /* NSObject+AsyncPropertyReader.m in Sources */, 6572C43914A75CDA008CFCFD /* JFFPropertyExtractor.m in Sources */, 6572C43A14A75CDC008CFCFD /* JFFPropertyPath.m in Sources */, 6572C43B14A75CE1008CFCFD /* JFFObjectRelatedPropertyData.m in Sources */, 6572C43C14A75CE3008CFCFD /* NSObject+PropertyExtractor.m in Sources */, + 4C1A0FC218257F590020FBF6 /* JFFAsyncTools.m in Sources */, 65BA0A4E14A7821200EB2AAB /* JFFAsyncOperationsPredefinedBlocks.m in Sources */, 65462C9514D8811100685ED8 /* JFFBlockOperation.mm in Sources */, 1B9528FD1500E67900C9B979 /* NSError+ResultOwnerships.m in Sources */, @@ -816,8 +1056,12 @@ 1B0D88C41519F81F00EC4A92 /* JFFAsyncOperationBuilder.m in Sources */, 1B0E83A51563953300825E3C /* JFFAsyncOperationUtils.mm in Sources */, 1B0E83AA1563954B00825E3C /* JFFAsyncOperationAdapter.mm in Sources */, + 4CDB8E12182BE4AD00C5BFA3 /* JFFFileDescriptorReaderError.m in Sources */, CE4031CD163D266B00FE6427 /* JFFLimitedLoadersQueue.m in Sources */, + 4C0C3F101826D3ED00984027 /* JFFAsyncOpFinishedByUnsubscriptionError.m in Sources */, 7E79065016E4981700CFC696 /* JFFStrategyFifo.m in Sources */, + 4C0C3F0A1826D39100984027 /* JFFAsyncOperationAbstractFinishError.m in Sources */, + 4C0C3F161826D60400984027 /* JFFAsyncOpFinishedByCancellationError.m in Sources */, 7E79065816E4984400CFC696 /* JFFQueueState.m in Sources */, 7E79066016E49DD900CFC696 /* JFFQueueStrategyFactory.m in Sources */, 7E79066816E49F8000CFC696 /* JFFStrategyStack.m in Sources */, @@ -830,6 +1074,7 @@ 4CBBDCCE1717422D004D670D /* JFFPedingLoaderData.m in Sources */, 4C6DFB0F1718446600D86975 /* JFFBaseStrategy.m in Sources */, 4CB5CDE8174F54E200F2B600 /* NSArray+AsyncMap.m in Sources */, + 4C0C3F041826D33B00984027 /* JFFAsyncOperationError.m in Sources */, 4CB5CDEC174F551300F2B600 /* NSDictionary+AsyncMap.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -886,6 +1131,7 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; GCC_OPTIMIZATION_LEVEL = 0; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; @@ -905,6 +1151,7 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -918,6 +1165,41 @@ }; name = Release; }; + 4C1A0F8B182577BE0020FBF6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + DSTROOT = /tmp/JFFAsyncOperations.dst; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = JFFAsyncOperations_Prefix.pch; + INSTALL_PATH = /usr/local/lib; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + PRODUCT_NAME = JFFAsyncOperationsMacOS; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 4C1A0F8C182577BE0020FBF6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DSTROOT = /tmp/JFFAsyncOperations.dst; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = JFFAsyncOperations_Prefix.pch; + INSTALL_PATH = /usr/local/lib; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + PRODUCT_NAME = JFFAsyncOperationsMacOS; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Release; + }; 5391037914A88BB5007315A3 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1021,6 +1303,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 4C1A0F8A182577BE0020FBF6 /* Build configuration list for PBXNativeTarget "JFFAsyncOperationsMacOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4C1A0F8B182577BE0020FBF6 /* Debug */, + 4C1A0F8C182577BE0020FBF6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 5391037814A88BB5007315A3 /* Build configuration list for PBXNativeTarget "JFFAsyncOperations-clang" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationsBlockDefinitions.h b/lib/JFFAsyncOperations/JFFAsyncOperationsBlockDefinitions.h index c67629d..2178116 100644 --- a/lib/JFFAsyncOperations/JFFAsyncOperationsBlockDefinitions.h +++ b/lib/JFFAsyncOperations/JFFAsyncOperationsBlockDefinitions.h @@ -2,30 +2,32 @@ #define __JASYNC__BLOCK_DEFINITIONS_H__ #import +#include +#include @class NSError; -typedef void (^JFFAsyncOperationProgressHandler)(id progressInfo); +typedef void (^JFFAsyncOperationProgressCallback)(id progressInfo); //Synchronous block which can take a lot of time typedef id (^JFFSyncOperation)(NSError *__autoreleasing *outError); //This block should call progress_callback_ block only from own thread typedef id (^JFFSyncOperationWithProgress)(NSError *__autoreleasing *error, - JFFAsyncOperationProgressHandler progressCallback); + JFFAsyncOperationProgressCallback progressCallback); -typedef void (^JFFDidFinishAsyncOperationHandler)(id result, NSError *error); +typedef void (^JFFDidFinishAsyncOperationCallback)(id result, NSError *error); -typedef void (^JFFCancelAsyncOperation)(BOOL unsubscribeOnlyIfNo); +typedef void (^JFFAsyncOperationHandler)(JFFAsyncOperationHandlerTask task); -typedef JFFCancelAsyncOperation JFFCancelAsyncOperationHandler; +typedef void (^JFFAsyncOperationChangeStateCallback)(JFFAsyncOperationState state); //@@ progressCallback -- nil | valid block -//@@ cancelCallback -- nil | valid block +//@@ stateCallback -- nil | valid block //@@ doneCallback -- nil | valid block -typedef JFFCancelAsyncOperation (^JFFAsyncOperation)(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback); +typedef JFFAsyncOperationHandler (^JFFAsyncOperation)(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback); //@@ next binder receives the result of the previous operation //@@ next binder may receive an error if previous operation fails and the binder gets called @@ -33,7 +35,7 @@ typedef JFFAsyncOperation (^JFFAsyncOperationBinder)(id result); typedef void (^JFFDidFinishAsyncOperationHook)(id result, NSError *error, - JFFDidFinishAsyncOperationHandler doneCallback); + JFFDidFinishAsyncOperationCallback doneCallback); typedef JFFAsyncOperation (^JFFContinueLoaderWithResult)(id result, NSError *error); diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationsPredefinedBlocks.h b/lib/JFFAsyncOperations/JFFAsyncOperationsPredefinedBlocks.h index 8a14750..16980db 100755 --- a/lib/JFFAsyncOperations/JFFAsyncOperationsPredefinedBlocks.h +++ b/lib/JFFAsyncOperations/JFFAsyncOperationsPredefinedBlocks.h @@ -2,4 +2,4 @@ #import -extern JFFCancelAsyncOperation JFFStubCancelAsyncOperationBlock; +extern JFFAsyncOperationHandler JFFStubHandlerAsyncOperationBlock; diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationsPredefinedBlocks.m b/lib/JFFAsyncOperations/JFFAsyncOperationsPredefinedBlocks.m index c969922..8480494 100755 --- a/lib/JFFAsyncOperations/JFFAsyncOperationsPredefinedBlocks.m +++ b/lib/JFFAsyncOperations/JFFAsyncOperationsPredefinedBlocks.m @@ -1,3 +1,3 @@ #import "JFFAsyncOperationsPredefinedBlocks.h" -JFFCancelAsyncOperation JFFStubCancelAsyncOperationBlock = ^void(BOOL cancel){ /*do nothing*/ }; +JFFAsyncOperationHandler JFFStubHandlerAsyncOperationBlock = ^void(JFFAsyncOperationHandlerTask task){ /*do nothing*/ }; diff --git a/lib/JFFAsyncOperations/JFFBlockOperation.h b/lib/JFFAsyncOperations/JFFBlockOperation.h index aae400f..7b8fed7 100644 --- a/lib/JFFAsyncOperations/JFFBlockOperation.h +++ b/lib/JFFAsyncOperations/JFFBlockOperation.h @@ -6,15 +6,15 @@ + (instancetype)performOperationWithQueueName:(const char*)queueName loadDataBlock:(JFFSyncOperationWithProgress)loadDataBlock - didLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didLoadDataBlock - progressBlock:(JFFAsyncOperationProgressHandler)progressBlock + didLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didLoadDataBlock + progressBlock:(JFFAsyncOperationProgressCallback)progressBlock barrier:(BOOL)barrier currentQueue:(dispatch_queue_t)currentQueue serialOrConcurrent:(dispatch_queue_attr_t)serialOrConcurrent; + (instancetype)performOperationWithQueueName:(const char*)queueName loadDataBlock:(JFFSyncOperationWithProgress)loadDataBlock - didLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didLoadDataBlock; + didLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didLoadDataBlock; - (void)cancel; diff --git a/lib/JFFAsyncOperations/JFFBlockOperation.mm b/lib/JFFAsyncOperations/JFFBlockOperation.mm index ca38e21..d578b55 100644 --- a/lib/JFFAsyncOperations/JFFBlockOperation.mm +++ b/lib/JFFAsyncOperations/JFFBlockOperation.mm @@ -4,9 +4,9 @@ @interface JFFBlockOperation () -@property (nonatomic, copy) JFFSyncOperationWithProgress loadDataBlock; -@property (nonatomic, copy) JFFDidFinishAsyncOperationHandler didLoadDataBlock; -@property (nonatomic, copy) JFFAsyncOperationProgressHandler progressBlock; +@property (nonatomic, copy) JFFSyncOperationWithProgress loadDataBlock; +@property (nonatomic, copy) JFFDidFinishAsyncOperationCallback didLoadDataBlock; +@property (nonatomic, copy) JFFAsyncOperationProgressCallback progressBlock; @property BOOL finishedOrCanceled; @end @@ -25,8 +25,8 @@ - (void)dealloc } - (instancetype)initWithLoadDataBlock:(JFFSyncOperationWithProgress)loadDataBlock - didLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didLoadDataBlock - progressBlock:(JFFAsyncOperationProgressHandler)progressBlock + didLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didLoadDataBlock + progressBlock:(JFFAsyncOperationProgressCallback)progressBlock currentQueue:(dispatch_queue_t)currentQueue barrier:(BOOL)barrier serialOrConcurrent:(dispatch_queue_attr_t)serialOrConcurrent @@ -93,7 +93,7 @@ - (void)performBackgroundOperationInQueue:(dispatch_queue_t)queue NSError *error; id opResult; @try { - JFFAsyncOperationProgressHandler progressCallback = ^(id info) { + JFFAsyncOperationProgressCallback progressCallback = ^(id info) { //TODO to garante that finish will called after progress dispatch_async(_currentQueue, ^ { [self progressWithInfo:info]; @@ -122,8 +122,8 @@ - (void)performBackgroundOperationInQueue:(dispatch_queue_t)queue + (instancetype)performOperationWithQueueName:(const char*)queueName loadDataBlock:(JFFSyncOperationWithProgress)loadDataBlock - didLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didLoadDataBlock - progressBlock:(JFFAsyncOperationProgressHandler)progressBlock + didLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didLoadDataBlock + progressBlock:(JFFAsyncOperationProgressCallback)progressBlock barrier:(BOOL)barrier currentQueue:(dispatch_queue_t)currentQueue serialOrConcurrent:(dispatch_queue_attr_t)serialOrConcurrent @@ -156,7 +156,7 @@ + (instancetype)performOperationWithQueueName:(const char*)queueName + (instancetype)performOperationWithQueueName:(const char *)queueName loadDataBlock:(JFFSyncOperationWithProgress)loadDataBlock - didLoadDataBlock:(JFFDidFinishAsyncOperationHandler)didLoadDataBlock + didLoadDataBlock:(JFFDidFinishAsyncOperationCallback)didLoadDataBlock { NSParameterAssert([NSThread isMainThread]); return [self performOperationWithQueueName:queueName diff --git a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFActiveLoaderData.h b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFActiveLoaderData.h index d1e4a7e..521313f 100755 --- a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFActiveLoaderData.h +++ b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFActiveLoaderData.h @@ -5,6 +5,6 @@ @interface JFFActiveLoaderData : NSObject @property (nonatomic, copy) JFFAsyncOperation nativeLoader; -@property (nonatomic, copy) JFFCancelAsyncOperation wrappedCancel; +@property (nonatomic, copy) JFFAsyncOperationHandler wrappedHandler; @end diff --git a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFBaseLoaderOwner.h b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFBaseLoaderOwner.h index 1067bdc..ff3ae0c 100644 --- a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFBaseLoaderOwner.h +++ b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFBaseLoaderOwner.h @@ -11,10 +11,10 @@ @property (nonatomic, copy) JFFAsyncOperation loader; @property (nonatomic, weak) JFFLimitedLoadersQueue *queue; -@property (nonatomic, copy) JFFCancelAsyncOperation cancelLoader; -@property (nonatomic, copy) JFFAsyncOperationProgressHandler progressCallback; -@property (nonatomic, copy) JFFCancelAsyncOperationHandler cancelCallback; -@property (nonatomic, copy) JFFDidFinishAsyncOperationHandler doneCallback; +@property (nonatomic, copy) JFFAsyncOperationHandler loadersHandler; +@property (nonatomic, copy) JFFAsyncOperationProgressCallback progressCallback; +@property (nonatomic, copy) JFFAsyncOperationChangeStateCallback stateCallback; +@property (nonatomic, copy) JFFDidFinishAsyncOperationCallback doneCallback; + (instancetype)newLoaderOwnerWithLoader:(JFFAsyncOperation)loader queue:(JFFLimitedLoadersQueue *)queue; diff --git a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFBaseLoaderOwner.m b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFBaseLoaderOwner.m index df8be16..4c6fa6a 100644 --- a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFBaseLoaderOwner.m +++ b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFBaseLoaderOwner.m @@ -28,38 +28,29 @@ - (void)clear { _loader = nil; _queue = nil; - _cancelLoader = nil; + _loadersHandler = nil; _progressCallback = nil; - _cancelCallback = nil; + _stateCallback = nil; _doneCallback = nil; } - (void)performLoader { - NSParameterAssert(_cancelLoader == nil); + NSParameterAssert(_loadersHandler == nil); - JFFAsyncOperationProgressHandler progressCallback = ^(id progress) { + JFFAsyncOperationProgressCallback progressCallback = ^(id progress) { if (_progressCallback) _progressCallback(progress); }; - JFFCancelAsyncOperationHandler cancelCallback = ^(BOOL canceled) { + JFFAsyncOperationChangeStateCallback stateCallback = ^(JFFAsyncOperationState state) { - if (canceled) { - [_queue didFinishActiveLoader:self]; - } - - if (_cancelCallback) { - JFFCancelAsyncOperationHandler cancelCallback = _cancelCallback; - _cancelCallback = nil; - cancelCallback(canceled); - } - - [self clear]; + if (_stateCallback) + _stateCallback(state); }; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { [_queue didFinishActiveLoader:self]; @@ -69,7 +60,7 @@ - (void)performLoader [self clear]; }; - _cancelLoader = _loader(progressCallback, cancelCallback, doneCallback); + _loadersHandler = _loader(progressCallback, stateCallback, doneCallback); } @end diff --git a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFContextLoaders.h b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFContextLoaders.h index b085540..411d5fb 100644 --- a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFContextLoaders.h +++ b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFContextLoaders.h @@ -8,36 +8,36 @@ @end -@interface JFFContextLoaders ( ActiveLoaders ) +@interface JFFContextLoaders (ActiveLoaders) @property (nonatomic, readonly) NSUInteger activeLoadersNumber; - (void)addActiveNativeLoader:(JFFAsyncOperation)nativeLoader - wrappedCancel:(JFFCancelAsyncOperation)cancel; + wrappedCancel:(JFFAsyncOperationHandler)cancel; - (BOOL)removeActiveNativeLoader:(JFFAsyncOperation)nativeLoader; -- (void)cancelActiveNativeLoader:(JFFAsyncOperation)nativeLoader cancel:(BOOL)canceled; +- (void)handleActiveNativeLoader:(JFFAsyncOperation)nativeLoader + withTask:(JFFAsyncOperationHandlerTask)task; @end @class JFFPedingLoaderData; -@interface JFFContextLoaders ( PendingLoaders ) +@interface JFFContextLoaders (PendingLoaders) @property (nonatomic, readonly) NSUInteger pendingLoadersNumber; - -- (JFFPedingLoaderData *)popPendingLoaderData; +@property (nonatomic, readonly) BOOL hasReadyToStartPendingLoaders; - (void)addPendingNativeLoader:(JFFAsyncOperation)nativeLoader - progressCallback:(JFFAsyncOperationProgressHandler)progressCallback - cancelCallback:(JFFCancelAsyncOperationHandler)cancelCallback - doneCallback:(JFFDidFinishAsyncOperationHandler)doneCallback; + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback + stateCallback:(JFFAsyncOperationChangeStateCallback)stateCallback + doneCallback:(JFFDidFinishAsyncOperationCallback)doneCallback; -- (BOOL)containsPendingNativeLoader:(JFFAsyncOperation)nativeLoader; +- (JFFPedingLoaderData *)popNotSuspendedPendingLoaderData; -- (void)removePendingNativeLoader:(JFFAsyncOperation)nativeLoader; +- (JFFPedingLoaderData *)pendingLoaderDataForNativeLoader:(JFFAsyncOperation)nativeLoader; -- (void)unsubscribePendingNativeLoader:(JFFAsyncOperation)nativeLoader; +- (void)removePedingLoaderData:(JFFPedingLoaderData *)data; @end diff --git a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFContextLoaders.m b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFContextLoaders.m index f3aba91..52335a1 100644 --- a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFContextLoaders.m +++ b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFContextLoaders.m @@ -35,11 +35,11 @@ - (NSUInteger)activeLoadersNumber } - (void)addActiveNativeLoader:(JFFAsyncOperation)nativeLoader - wrappedCancel:(JFFCancelAsyncOperation)cancel + wrappedCancel:(JFFAsyncOperationHandler)cancel { JFFActiveLoaderData *data = [JFFActiveLoaderData new]; - data.nativeLoader = nativeLoader; - data.wrappedCancel = cancel; + data.nativeLoader = nativeLoader; + data.wrappedHandler = cancel; [self.activeLoadersData addObject:data]; } @@ -52,12 +52,13 @@ - (JFFActiveLoaderData*)activeLoaderDataForNativeLoader:(JFFAsyncOperation)nativ }]; } -- (void)cancelActiveNativeLoader:(JFFAsyncOperation)nativeLoader cancel:(BOOL)canceled +- (void)handleActiveNativeLoader:(JFFAsyncOperation)nativeLoader + withTask:(JFFAsyncOperationHandlerTask)task { JFFActiveLoaderData *data = [self activeLoaderDataForNativeLoader:nativeLoader]; if (data) - data.wrappedCancel(canceled); + data.wrappedHandler(task); } - (BOOL)removeActiveNativeLoader:(JFFAsyncOperation)nativeLoader @@ -81,10 +82,26 @@ - (NSUInteger)pendingLoadersNumber return [_pendingLoadersData count]; } -- (JFFPedingLoaderData *)popPendingLoaderData +- (BOOL)hasReadyToStartPendingLoaders { - JFFPedingLoaderData *data = _pendingLoadersData[0]; - [_pendingLoadersData removeObjectAtIndex:0]; + return [_pendingLoadersData any:^BOOL(JFFPedingLoaderData *data) { + + return !data.suspended; + }]; +} + +- (JFFPedingLoaderData *)popPendingLoaderDataWithPredicate:(JFFPredicateBlock)predicate +{ + NSUInteger index = [_pendingLoadersData indexOfObjectPassingTest:^BOOL(JFFPedingLoaderData *data, NSUInteger idx, BOOL *stop) { + + return predicate(data); + }]; + + if (index == NSNotFound) + return nil; + + JFFPedingLoaderData *data = _pendingLoadersData[index]; + [_pendingLoadersData removeObjectAtIndex:index]; if ([_pendingLoadersData count] == 0) { _pendingLoadersData = nil; @@ -92,21 +109,32 @@ - (JFFPedingLoaderData *)popPendingLoaderData return data; } +- (JFFPedingLoaderData *)popNotSuspendedPendingLoaderData +{ + JFFPedingLoaderData *data = [self popPendingLoaderDataWithPredicate:^BOOL(JFFPedingLoaderData *data) { + + return !data.suspended; + }]; + + NSAssert(data != nil, @"invalid state preconditions for popNotSuspendedPendingLoaderData"); + return data; +} + - (void)addPendingNativeLoader:(JFFAsyncOperation)nativeLoader - progressCallback:(JFFAsyncOperationProgressHandler)progressCallback - cancelCallback:(JFFCancelAsyncOperationHandler)cancelCallback - doneCallback:(JFFDidFinishAsyncOperationHandler)doneCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback + stateCallback:(JFFAsyncOperationChangeStateCallback)stateCallback + doneCallback:(JFFDidFinishAsyncOperationCallback)doneCallback { JFFPedingLoaderData *data = [JFFPedingLoaderData new]; - data.nativeLoader = nativeLoader; + data.nativeLoader = nativeLoader ; data.progressCallback = progressCallback; - data.cancelCallback = cancelCallback; - data.doneCallback = doneCallback; + data.stateCallback = stateCallback ; + data.doneCallback = doneCallback ; [self.pendingLoadersData addObject:data]; } -- (JFFPedingLoaderData*)pendingLoaderDataForNativeLoader:(JFFAsyncOperation)nativeLoader +- (JFFPedingLoaderData *)pendingLoaderDataForNativeLoader:(JFFAsyncOperation)nativeLoader { return [self.pendingLoadersData firstMatch:^BOOL(id object) { @@ -115,26 +143,9 @@ - (JFFPedingLoaderData*)pendingLoaderDataForNativeLoader:(JFFAsyncOperation)nati }]; } -- (BOOL)containsPendingNativeLoader:(JFFAsyncOperation)nativeLoader -{ - return [self pendingLoaderDataForNativeLoader:nativeLoader] != nil; -} - -- (void)removePendingNativeLoader:(JFFAsyncOperation)nativeLoader +- (void)removePedingLoaderData:(JFFPedingLoaderData *)data { - JFFPedingLoaderData *data = [self pendingLoaderDataForNativeLoader:nativeLoader]; - [_pendingLoadersData removeObject:data]; } -- (void)unsubscribePendingNativeLoader:(JFFAsyncOperation)nativeLoader -{ - JFFPedingLoaderData *data = [self pendingLoaderDataForNativeLoader:nativeLoader]; - NSAssert(data, @"pending loader data should exist" ); - - data.progressCallback = nil; - data.cancelCallback = nil; - data.doneCallback = nil; -} - @end diff --git a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFPedingLoaderData.h b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFPedingLoaderData.h index 4c5f1df..6994908 100755 --- a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFPedingLoaderData.h +++ b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFPedingLoaderData.h @@ -5,8 +5,12 @@ @interface JFFPedingLoaderData : NSObject @property (nonatomic, copy) JFFAsyncOperation nativeLoader; -@property (nonatomic, copy) JFFAsyncOperationProgressHandler progressCallback; -@property (nonatomic, copy) JFFCancelAsyncOperationHandler cancelCallback; -@property (nonatomic, copy) JFFDidFinishAsyncOperationHandler doneCallback; +@property (nonatomic, copy) JFFAsyncOperationProgressCallback progressCallback; +@property (nonatomic, copy) JFFAsyncOperationChangeStateCallback stateCallback; +@property (nonatomic, copy) JFFDidFinishAsyncOperationCallback doneCallback; + +@property (nonatomic) BOOL suspended; + +- (void)unsubscribe; @end diff --git a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFPedingLoaderData.m b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFPedingLoaderData.m index fa8460f..26d93f9 100755 --- a/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFPedingLoaderData.m +++ b/lib/JFFAsyncOperations/LoadBalancer/Detail/JFFPedingLoaderData.m @@ -1,4 +1,12 @@ #import "JFFPedingLoaderData.h" @implementation JFFPedingLoaderData + +- (void)unsubscribe +{ + _progressCallback = nil; + _stateCallback = nil; + _doneCallback = nil; +} + @end diff --git a/lib/JFFAsyncOperations/LoadBalancer/JFFAsyncOperationLoadBalancer.m b/lib/JFFAsyncOperations/LoadBalancer/JFFAsyncOperationLoadBalancer.m index b8d7cab..c8636cb 100644 --- a/lib/JFFAsyncOperations/LoadBalancer/JFFAsyncOperationLoadBalancer.m +++ b/lib/JFFAsyncOperations/LoadBalancer/JFFAsyncOperationLoadBalancer.m @@ -2,11 +2,14 @@ #import "JFFContextLoaders.h" #import "JFFPedingLoaderData.h" -#import "JFFAsyncOperationLoadBalancerContexts.h" +#import "JFFAsyncOperationsPredefinedBlocks.h" +#import "JFFAsyncOperationHandlerBlockHolder.h" #import "JFFAsyncOperationProgressBlockHolder.h" -#import "JFFCancelAsyncOperationBlockHolder.h" +#import "JFFAsyncOperationLoadBalancerContexts.h" #import "JFFDidFinishAsyncOperationBlockHolder.h" -#import "JFFAsyncOperationsPredefinedBlocks.h" + +#import "JFFAsyncOpFinishedByCancellationError.h" +#import "JFFAsyncOpFinishedByUnsubscriptionError.h" static const NSUInteger maxOperationCount = 5; static const NSUInteger totalMaxBackgroundCount = 2; @@ -38,19 +41,19 @@ void setBalancerActiveContextName(NSString *contextName) while (findAndTryToPerformNextNativeLoader()); } -NSString * balancerActiveContextName(void) +NSString *balancerActiveContextName(void) { return sharedBalancer().activeContextName; } -NSString * balancerCurrentContextName(void) +NSString *balancerCurrentContextName(void) { return sharedBalancer().currentContextName; } static void peformBlockWithinContext(JFFSimpleBlock block, JFFContextLoaders *contextLoaders) { - NSString* currentContextName = sharedBalancer().currentContextName; + NSString *currentContextName = sharedBalancer().currentContextName; sharedBalancer().currentContextName = contextLoaders.name; block(); @@ -67,24 +70,24 @@ static void performInBalancerPedingLoaderData(JFFPedingLoaderData *pendingLoader JFFAsyncOperation balancedLoader = wrappedAsyncOperationWithContext(pendingLoaderData.nativeLoader, contextLoaders); balancedLoader(pendingLoaderData.progressCallback, - pendingLoaderData.cancelCallback, + pendingLoaderData.stateCallback, pendingLoaderData.doneCallback); } static BOOL performLoaderFromContextIfPossible(JFFContextLoaders *contextLoaders) { - BOOL have_pending_loaders_ = (contextLoaders.pendingLoadersNumber > 0); - if ( have_pending_loaders_ - && canPeformAsyncOperationForContext(contextLoaders)) - { - JFFPedingLoaderData* pendingLoaderData_ = [ contextLoaders popPendingLoaderData ]; - performInBalancerPedingLoaderData( pendingLoaderData_, contextLoaders ); + BOOL havePendingLoaders = contextLoaders.hasReadyToStartPendingLoaders; + if (havePendingLoaders + && canPeformAsyncOperationForContext(contextLoaders)) { + + JFFPedingLoaderData *pendingLoaderData = [contextLoaders popNotSuspendedPendingLoaderData]; + performInBalancerPedingLoaderData(pendingLoaderData, contextLoaders); return YES; } return NO; } -static BOOL findAndTryToPerformNextNativeLoader( void ) +static BOOL findAndTryToPerformNextNativeLoader(void) { JFFAsyncOperationLoadBalancerContexts *balancer = sharedBalancer(); @@ -138,33 +141,9 @@ static void finishExecuteOfNativeLoader( JFFAsyncOperation nativeLoader } } -static JFFCancelAsyncOperationHandler cancelCallbackWrapper(JFFCancelAsyncOperationHandler nativeCancelCallback, - JFFAsyncOperation nativeLoader, - JFFContextLoaders *contextLoaders) -{ - nativeCancelCallback = [nativeCancelCallback copy]; - return ^void(BOOL canceled) { - - if (!canceled) { - NSCAssert(NO, @"balanced loaders should not be unsubscribed from native loader not supported yet"); - return; - } - - finishExecuteOfNativeLoader(nativeLoader, contextLoaders); - - if (nativeCancelCallback) { - peformBlockWithinContext(^{ - nativeCancelCallback(canceled); - }, contextLoaders); - } - - findAndTryToPerformNextNativeLoader(); - }; -} - -static JFFDidFinishAsyncOperationHandler doneCallbackWrapper(JFFDidFinishAsyncOperationHandler nativeDoneCallback, - JFFAsyncOperation nativeLoader, - JFFContextLoaders* contextLoaders) +static JFFDidFinishAsyncOperationCallback doneCallbackWrapper(JFFDidFinishAsyncOperationCallback nativeDoneCallback, + JFFAsyncOperation nativeLoader, + JFFContextLoaders* contextLoaders) { nativeDoneCallback = [nativeDoneCallback copy]; @@ -190,14 +169,14 @@ static JFFAsyncOperation wrappedAsyncOperationWithContext(JFFAsyncOperation nati NSCParameterAssert(nativeLoader); nativeLoader = [nativeLoader copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler nativeProgressCallback, - JFFCancelAsyncOperationHandler nativeCancelCallback, - JFFDidFinishAsyncOperationHandler nativeDoneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback nativeProgressCallback, + JFFAsyncOperationChangeStateCallback nativeStateCallback, + JFFDidFinishAsyncOperationCallback nativeDoneCallback) { //progress holder for unsubscribe JFFAsyncOperationProgressBlockHolder *progressBlockHolder = [JFFAsyncOperationProgressBlockHolder new]; progressBlockHolder.progressBlock = nativeProgressCallback; - JFFAsyncOperationProgressHandler wrappedProgressCallback = ^void(id progressInfo) { + JFFAsyncOperationProgressCallback wrappedProgressCallback = ^void(id progressInfo) { peformBlockWithinContext( ^ { [progressBlockHolder performProgressBlockWithArgument:progressInfo]; }, contextLoaders); @@ -205,49 +184,47 @@ static JFFAsyncOperation wrappedAsyncOperationWithContext(JFFAsyncOperation nati __block BOOL done = NO; - //cancel holder for unsubscribe - JFFCancelAsyncOperationBlockHolder *cancelCallbackBlockHolder = [JFFCancelAsyncOperationBlockHolder new]; - cancelCallbackBlockHolder.cancelBlock = nativeCancelCallback; - JFFCancelAsyncOperation wrappedCancelCallback = ^void(BOOL canceled) { - done = YES; - cancelCallbackBlockHolder.onceCancelBlock(canceled); + __block JFFAsyncOperationChangeStateCallback nativeStateCallbackHolder = nativeStateCallback; + JFFAsyncOperationChangeStateCallback wrappedStateCallback = ^void(JFFAsyncOperationState state) { + + if (nativeStateCallbackHolder) + nativeStateCallbackHolder(state); }; //finish holder for unsubscribe JFFDidFinishAsyncOperationBlockHolder *finishBlockHolder = [JFFDidFinishAsyncOperationBlockHolder new]; finishBlockHolder.didFinishBlock = nativeDoneCallback; - JFFDidFinishAsyncOperationHandler wrappedDoneCallback = ^void(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback wrappedDoneCallback = ^void(id result, NSError *error) { done = YES; finishBlockHolder.onceDidFinishBlock(result, error); }; - wrappedCancelCallback = cancelCallbackWrapper(wrappedCancelCallback, - nativeLoader, - contextLoaders); - wrappedDoneCallback = doneCallbackWrapper(wrappedDoneCallback, nativeLoader, contextLoaders); // JTODO check native loader no within balancer !!! - JFFCancelAsyncOperation cancelBlock = nativeLoader(wrappedProgressCallback, - wrappedCancelCallback, - wrappedDoneCallback); + JFFAsyncOperationHandler nativeHandler = nativeLoader(wrappedProgressCallback, + wrappedStateCallback, + wrappedDoneCallback); if (done) { - return JFFStubCancelAsyncOperationBlock; + return JFFStubHandlerAsyncOperationBlock; } ++totalActiveNumber; - JFFCancelAsyncOperation wrappedCancelBlock = [^void(BOOL canceled) { - if (canceled) { - cancelBlock(YES); + JFFAsyncOperationHandler wrappedCancelBlock = [^void(JFFAsyncOperationHandlerTask task) { + + if (JFFAsyncOperationHandlerTaskUnsubscribe == task) { + + finishBlockHolder.onceDidFinishBlock(nil, [JFFAsyncOpFinishedByUnsubscriptionError new]); + + nativeStateCallbackHolder = nil; + progressBlockHolder.progressBlock = nil; } else { - cancelCallbackBlockHolder.onceCancelBlock(NO); - progressBlockHolder.progressBlock = nil; - finishBlockHolder.didFinishBlock = nil; + nativeHandler(task); } } copy]; @@ -286,9 +263,9 @@ JFFAsyncOperation balancedAsyncOperationInContext(JFFAsyncOperation nativeLoader NSCParameterAssert(nativeLoader); nativeLoader = [nativeLoader copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback hendlerCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { JFFContextLoaders *contextLoaders = [sharedBalancer() contextLoadersForName:contextName]; @@ -296,32 +273,58 @@ JFFAsyncOperation balancedAsyncOperationInContext(JFFAsyncOperation nativeLoader JFFAsyncOperation contextLoader = wrappedAsyncOperationWithContext(nativeLoader, contextLoaders); - return contextLoader(progressCallback, cancelCallback, doneCallback); + return contextLoader(progressCallback, hendlerCallback, doneCallback); } - cancelCallback = [cancelCallback copy]; + hendlerCallback = [hendlerCallback copy]; [contextLoaders addPendingNativeLoader:nativeLoader progressCallback:progressCallback - cancelCallback:cancelCallback + stateCallback:hendlerCallback doneCallback:doneCallback]; logBalancerState(contextLoaders); - JFFCancelAsyncOperation cancel = ^void(BOOL canceled) { + JFFAsyncOperationHandler cancel = ^void(JFFAsyncOperationHandlerTask task) { - if (![contextLoaders containsPendingNativeLoader:nativeLoader]) { + JFFPedingLoaderData *pedingLoaderData = [contextLoaders pendingLoaderDataForNativeLoader:nativeLoader]; + + if (!pedingLoaderData) { //cancel only wrapped cancel block - [contextLoaders cancelActiveNativeLoader:nativeLoader cancel:canceled]; + [contextLoaders handleActiveNativeLoader:nativeLoader withTask:task]; return; } - if (canceled) { - [contextLoaders removePendingNativeLoader:nativeLoader]; - cancelCallback(YES); - } else { - cancelCallback(NO); - - [contextLoaders unsubscribePendingNativeLoader:nativeLoader]; + switch (task) { + case JFFAsyncOperationHandlerTaskUnsubscribe: + { + [pedingLoaderData unsubscribe]; + if (doneCallback) + doneCallback(nil, [JFFAsyncOpFinishedByUnsubscriptionError new]); + break; + } + case JFFAsyncOperationHandlerTaskCancel: + { + [contextLoaders removePedingLoaderData:pedingLoaderData]; + if (doneCallback) + doneCallback(nil, [JFFAsyncOpFinishedByCancellationError new]); + break; + } + case JFFAsyncOperationHandlerTaskResume: + { + pedingLoaderData.suspended = NO; + findAndTryToPerformNextNativeLoader(); + break; + } + case JFFAsyncOperationHandlerTaskSuspend: + { + pedingLoaderData.suspended = YES; + break; + } + default: + { + NSCAssert1(NO, @"balancer not implemeted for handler task: %lu", (unsigned long)task); + break; + } } }; diff --git a/lib/JFFAsyncOperations/LoadBalancer/JFFLimitedLoadersQueue.m b/lib/JFFAsyncOperations/LoadBalancer/JFFLimitedLoadersQueue.m index aa58dc8..df8098d 100644 --- a/lib/JFFAsyncOperations/LoadBalancer/JFFLimitedLoadersQueue.m +++ b/lib/JFFAsyncOperations/LoadBalancer/JFFLimitedLoadersQueue.m @@ -1,9 +1,11 @@ #import "JFFLimitedLoadersQueue.h" -#import "JFFBaseLoaderOwner.h" #import "JFFQueueStrategy.h" -#import "JFFQueueStrategyFactory.h" #import "JFFQueueState.h" +#import "JFFBaseLoaderOwner.h" +#import "JFFQueueStrategyFactory.h" + +#import "JFFAsyncOpFinishedByCancellationError.h" @implementation JFFLimitedLoadersQueue { @@ -89,17 +91,16 @@ - (JFFAsyncOperation)balancedLoaderWithLoader:(JFFAsyncOperation)loader barrier:(BOOL)barrier { loader = [loader copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { - JFFBaseLoaderOwner *loaderHolder = - [JFFBaseLoaderOwner newLoaderOwnerWithLoader:loader - queue:self]; + JFFBaseLoaderOwner *loaderHolder = [JFFBaseLoaderOwner newLoaderOwnerWithLoader:loader + queue:self]; loaderHolder.barrier = barrier; loaderHolder.progressCallback = progressCallback; - loaderHolder.cancelCallback = cancelCallback; + loaderHolder.stateCallback = stateCallback; loaderHolder.doneCallback = doneCallback; [_pendingLoaders addObject:loaderHolder]; @@ -108,29 +109,40 @@ - (JFFAsyncOperation)balancedLoaderWithLoader:(JFFAsyncOperation)loader __weak JFFBaseLoaderOwner *weakLoaderHolder = loaderHolder; - return ^(BOOL canceled) { + return ^(JFFAsyncOperationHandlerTask task) { JFFBaseLoaderOwner *loaderHolder = weakLoaderHolder; if (!loaderHolder) return; - JFFCancelAsyncOperationHandler cancelCallback = loaderHolder.cancelCallback; - - if (canceled) { - if (!loaderHolder.cancelLoader) { - //TODO self owning here fix? - [_pendingLoaders removeObject:loaderHolder]; + switch (task) { + case JFFAsyncOperationHandlerTaskUnsubscribe: + { + loaderHolder.progressCallback = nil; + loaderHolder.stateCallback = nil; + loaderHolder.doneCallback = nil; + break; + } + case JFFAsyncOperationHandlerTaskCancel: + { + if (loaderHolder.loadersHandler) { + + loaderHolder.loadersHandler(JFFAsyncOperationHandlerTaskCancel); + } else { + + //TODO self owning here fix? + JFFDidFinishAsyncOperationCallback doneCallback = loaderHolder.doneCallback; + [_pendingLoaders removeObject:loaderHolder]; + if (doneCallback) + doneCallback(nil, [JFFAsyncOpFinishedByCancellationError new]); + } + break; + } + default: + { + NSCAssert(NO, @"Unsupported type of task: %lu", (unsigned long)task); + break; } - } else { - loaderHolder.progressCallback = nil; - loaderHolder.cancelCallback = nil; - loaderHolder.doneCallback = nil; - } - - if (loaderHolder.cancelLoader) { - loaderHolder.cancelLoader(YES); - } else if (cancelCallback) { - cancelCallback(canceled); } }; }; diff --git a/lib/JFFAsyncOperations/NSObject+AutoCancelAsyncOperation.m b/lib/JFFAsyncOperations/NSObject+AutoCancelAsyncOperation.m index ada707b..3679690 100755 --- a/lib/JFFAsyncOperations/NSObject+AutoCancelAsyncOperation.m +++ b/lib/JFFAsyncOperations/NSObject+AutoCancelAsyncOperation.m @@ -2,29 +2,30 @@ #import "JFFAsyncOperationsPredefinedBlocks.h" #import "JFFDidFinishAsyncOperationBlockHolder.h" +#import "JFFAsyncOperationAbstractFinishError.h" @implementation NSObject (WeakAsyncOperation) - (JFFAsyncOperation)autoUnsibscribeOrCancelAsyncOperation:(JFFAsyncOperation)nativeAsyncOp - cancel:(BOOL)cancelNativeAsyncOp + task:(JFFAsyncOperationHandlerTask)task { NSParameterAssert(nativeAsyncOp); __weak id weakSelf = self; nativeAsyncOp = [nativeAsyncOp copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { id self_ = weakSelf; if (self_ == nil) { - if (cancelCallback) { - cancelCallback(cancelNativeAsyncOp); - } - return JFFStubCancelAsyncOperationBlock; + NSError *error = [JFFAsyncOperationAbstractFinishError newAsyncOperationAbstractFinishErrorWithHandlerTask:task]; + if (doneCallback) + doneCallback(nil, error); + return JFFStubHandlerAsyncOperationBlock; } __block BOOL finished = NO; @@ -41,50 +42,44 @@ - (JFFAsyncOperation)autoUnsibscribeOrCancelAsyncOperation:(JFFAsyncOperation)na } }; - __block JFFCancelAsyncOperation cancelCallbackHolder; - cancelCallbackHolder = [cancelCallback copy]; - JFFCancelAsyncOperationHandler cancelCallbackWrapper = ^void(BOOL cancelOp) { - removeOndeallocBlockHolder.onceSimpleBlock(); - if (cancelCallbackHolder) { - cancelCallbackHolder(cancelOp); - cancelCallbackHolder = nil; - } - }; - JFFDidFinishAsyncOperationBlockHolder *doneCallbackHolder = [JFFDidFinishAsyncOperationBlockHolder new]; doneCallbackHolder.didFinishBlock = doneCallback; - JFFDidFinishAsyncOperationHandler doneCallbackWrapper = ^void(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallbackWrapper = ^void(id result, NSError *error) { removeOndeallocBlockHolder.onceSimpleBlock(); doneCallbackHolder.onceDidFinishBlock(result, error); }; - JFFCancelAsyncOperation cancel = nativeAsyncOp(progressCallback, - cancelCallbackWrapper, - doneCallbackWrapper); + JFFAsyncOperationHandler loadersHandler = nativeAsyncOp(progressCallback, + stateCallback, + doneCallbackWrapper); if (finished) { - return JFFStubCancelAsyncOperationBlock; + return JFFStubHandlerAsyncOperationBlock; } - + //TODO remove using of ondealloc block holder class ondeallocBlockHolder.simpleBlock = ^void(void) { - cancel(cancelNativeAsyncOp); + loadersHandler(task); }; //try assert retain count [self_ addOnDeallocBlock:ondeallocBlockHolder.onceSimpleBlock]; - __block JFFCancelAsyncOperation cancelBlockHolder = [^void(BOOL canceled) { - cancel(canceled); + __block JFFAsyncOperationHandler handlerBlockHolder = [^void(JFFAsyncOperationHandlerTask task) { + loadersHandler(task); } copy]; - return ^(BOOL canceled) { - JFFCancelAsyncOperation cancel = cancelBlockHolder; - if (!cancel) + return ^(JFFAsyncOperationHandlerTask task) { + + JFFAsyncOperationHandler hadler = handlerBlockHolder; + if (!hadler) return; - cancelBlockHolder = nil; - cancel(canceled); + + if (task <= JFFAsyncOperationHandlerTaskCancel) { + handlerBlockHolder = nil; + } + hadler(task); }; }; } @@ -92,13 +87,13 @@ - (JFFAsyncOperation)autoUnsibscribeOrCancelAsyncOperation:(JFFAsyncOperation)na - (JFFAsyncOperation)autoUnsubsribeOnDeallocAsyncOperation:(JFFAsyncOperation)nativeLoader { return [self autoUnsibscribeOrCancelAsyncOperation:nativeLoader - cancel:NO]; + task:JFFAsyncOperationHandlerTaskUnsubscribe]; } - (JFFAsyncOperation)autoCancelOnDeallocAsyncOperation:(JFFAsyncOperation)nativeLoader { return [self autoUnsibscribeOrCancelAsyncOperation:nativeLoader - cancel:YES]; + task:JFFAsyncOperationHandlerTaskCancel]; } @end diff --git a/lib/JFFAsyncOperations/Tools/JFFAsyncTools.h b/lib/JFFAsyncOperations/Tools/JFFAsyncTools.h new file mode 100644 index 0000000..2013cf7 --- /dev/null +++ b/lib/JFFAsyncOperations/Tools/JFFAsyncTools.h @@ -0,0 +1,16 @@ +#import + +#import + +#ifdef __cplusplus +extern "C" { +#endif + + typedef uintptr_t (^JFFFileHendlerBuilder)(void); + + JFFAsyncOperation jFileDescriptorReader(JFFFileHendlerBuilder handleBuilder, + dispatch_queue_t queue); + +#ifdef __cplusplus +} /* closing brace for extern "C" */ +#endif diff --git a/lib/JFFAsyncOperations/Tools/JFFAsyncTools.m b/lib/JFFAsyncOperations/Tools/JFFAsyncTools.m new file mode 100644 index 0000000..70d3db8 --- /dev/null +++ b/lib/JFFAsyncOperations/Tools/JFFAsyncTools.m @@ -0,0 +1,190 @@ +#import "JFFAsyncTools.h" + +#import "JFFAsyncOperationHelpers.h" +#import "JFFAsyncOperationsPredefinedBlocks.h" + +#import "JFFAsyncOperationBuilder.h" +#import "JFFAsyncOperationInterface.h" + +#import "JFFFileDescriptorReaderError.h" + +#include + +@interface JFFAsyncFileReader : NSObject +@end + +@implementation JFFAsyncFileReader +{ + dispatch_source_t _inputSrc; + char *_readBuffer; +@public + JFFFileHendlerBuilder _handleBuilder; + dispatch_queue_t _queue; +} + +- (void)dealloc +{ + +} + +//https://developer.apple.com/library/ios/DOCUMENTATION/General/Conceptual/ConcurrencyProgrammingGuide/GCDWorkQueues/GCDWorkQueues.html + +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finnishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback +{ + _readBuffer = NULL; + + uintptr_t handle = _handleBuilder(); + + int result = fcntl(handle, F_SETFL, O_NONBLOCK); + //FILE * stream = fdopen(handle, "r"); + + if (result == -1) { + + if (finnishCallback) + finnishCallback(nil, [JFFFileDescriptorReaderError new]); + return; + } + + _inputSrc = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, handle, 0, _queue); + + //TODO implement lseek + +// dispatch_connect(); +// dispatch_read(); + + dispatch_source_set_event_handler(_inputSrc, ^{ + + //process_input(my_file); + + unsigned long availableToRead = dispatch_source_get_data(_inputSrc); + + _readBuffer = reallocf(_readBuffer, availableToRead); + + if (_readBuffer == NULL) { + + ///TODO change error + if (finnishCallback) + finnishCallback(nil, [JFFFileDescriptorReaderError new]); + return; + } + + ssize_t result = read(handle, _readBuffer, availableToRead); + + if (result < 0) { + + ///TODO change error + if (finnishCallback) + finnishCallback(nil, [JFFFileDescriptorReaderError new]); + return; + } + + if (progressCallback && result > 0) { + + NSData *chunk = [NSData dataWithBytesNoCopy:_readBuffer length:result]; + progressCallback(chunk); + } + + FILE *f = fdopen(handle, "r"); + if (feof(f)) { + + if (finnishCallback) + finnishCallback(@YES, nil); + return; + } + + off_t offset = lseek(handle, 0, SEEK_CUR); + + if (offset == EOF) { + + if (finnishCallback) + finnishCallback(@YES, nil); + } + + { + struct stat buf; + fstat(handle, &buf); + int size = buf.st_size; + + if (size == offset) { + + if (finnishCallback) + finnishCallback(@YES, nil); + } + } + + +// if (feof(stream)) { +// +// if (finnishCallback) +// finnishCallback(@YES, nil); +// } + }); + + dispatch_source_set_cancel_handler(_inputSrc, ^{ + + //fclose(stream); + close(handle); + + if (_readBuffer != NULL) { + free(_readBuffer); + _readBuffer = NULL; + } + }); + + dispatch_resume(_inputSrc); +} + +- (void)doTask:(JFFAsyncOperationHandlerTask)task +{ + switch (task) { + case JFFAsyncOperationHandlerTaskUnsubscribe: + { + break; + } + case JFFAsyncOperationHandlerTaskCancel: + { + dispatch_source_cancel(_inputSrc); + break; + } + case JFFAsyncOperationHandlerTaskResume: + { + dispatch_resume(_inputSrc); + break; + } + case JFFAsyncOperationHandlerTaskSuspend: + { + dispatch_suspend(_inputSrc); + break; + } + default: + { + NSAssert1(NO, @"unsupported task: %lu", (unsigned long)task); + break; + } + } +} + +@end + +JFFAsyncOperation jFileDescriptorReader(JFFFileHendlerBuilder handleBuilder, + dispatch_queue_t queue) +{ + handleBuilder = [handleBuilder copy]; + + id (^factory)(void) = ^id(void) { + + JFFAsyncFileReader *result = [JFFAsyncFileReader new]; + + if (result) { + + result->_handleBuilder = handleBuilder; + result->_queue = queue; + } + + return result; + }; + + return buildAsyncOperationWithAdapterFactoryWithDispatchQueue(factory, queue); +} diff --git a/lib/JFFCache/JFFCache.xcodeproj/project.pbxproj b/lib/JFFCache/JFFCache.xcodeproj/project.pbxproj index c785d6f..f271fc8 100644 --- a/lib/JFFCache/JFFCache.xcodeproj/project.pbxproj +++ b/lib/JFFCache/JFFCache.xcodeproj/project.pbxproj @@ -294,6 +294,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ENABLE_MODULES = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; @@ -323,6 +324,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ENABLE_MODULES = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; COPY_PHASE_STRIP = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; diff --git a/lib/JFFCache/JFFCache/Categories/UIImageView+CachedAsyncImageLoader.m b/lib/JFFCache/JFFCache/Categories/UIImageView+CachedAsyncImageLoader.m index 858e68e..436a087 100644 --- a/lib/JFFCache/JFFCache/Categories/UIImageView+CachedAsyncImageLoader.m +++ b/lib/JFFCache/JFFCache/Categories/UIImageView+CachedAsyncImageLoader.m @@ -44,7 +44,7 @@ - (void)setImageWithURL:(NSURL *)url andPlaceholder:(UIImage *)placeholder __weak UIImageView *weakSelf = self; - JFFDidFinishAsyncOperationHandler doneCallback = ^(UIImage *result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallback = ^(UIImage *result, NSError *error) { [error writeErrorWithJFFLogger]; [weakSelf jffSetImage:result URL:url]; diff --git a/lib/JFFCache/JFFCache/JFFThumbnailStorage.m b/lib/JFFCache/JFFCache/JFFThumbnailStorage.m index f0b7a7b..0943207 100644 --- a/lib/JFFCache/JFFCache/JFFThumbnailStorage.m +++ b/lib/JFFCache/JFFCache/JFFThumbnailStorage.m @@ -8,6 +8,7 @@ #import #import +#import static NSString *const cacheQueueName = @"com.embedded_sources.jffcache.thumbnail_storage.cache"; @@ -24,6 +25,8 @@ - (BOOL)isURLToImageData @interface JFFCanNotCreateImageError : JFFError +@property (nonatomic) id context; + @end @implementation JFFCanNotCreateImageError @@ -33,10 +36,30 @@ - (instancetype)init return [self initWithDescription:@"can not create image with given data"]; } +- (instancetype)copyWithZone:(NSZone *)zone +{ + JFFCanNotCreateImageError *copy = [super copyWithZone:zone]; + + if (copy) { + copy->_context = [_context copyWithZone:zone]; + } + + return copy; +} + - (void)writeErrorWithJFFLogger { } +- (NSString *)errorLogDescription +{ + return [[NSString alloc] initWithFormat:@"%@ : %@ context: %@", + [self class], + [self localizedDescription], + _context + ]; +} + @end //TODO try to use NSURLCache @@ -51,7 +74,9 @@ static JFFAsyncBinderForIdentifier imageDataToUIImageBinder() if (image) return asyncOperationWithResult(image); - return asyncOperationWithError([JFFCanNotCreateImageError new]); + JFFCanNotCreateImageError *error = [JFFCanNotCreateImageError new]; + error.context = url; + return asyncOperationWithError(error); }; // TODO: Test perfomance // return ^JFFAsyncOperation(NSData *imageData) { @@ -231,22 +256,22 @@ - (JFFAsyncOperation)thumbnailLoaderForUrl:(NSURL *)url return asyncOperationWithError([JFFCacheNoURLError new]); } - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { JFFAsyncOperation loader = [self cachedInDBImageDataLoaderForUrl:url ignoreFreshDataLoadFail:YES]; //TODO: also check the last update date here - JFFPropertyPath* propertyPath = [[JFFPropertyPath alloc] initWithName:NSStringFromSelector(@selector(imagesByUrl)) + JFFPropertyPath *propertyPath = [[JFFPropertyPath alloc] initWithName:NSStringFromSelector(@selector(imagesByUrl)) key:url]; loader = [self asyncOperationForPropertyWithPath:propertyPath asyncOperation:loader]; return loader(progressCallback, - cancelCallback, + stateCallback, doneCallback); }; } diff --git a/lib/JFFContacts/JFFContacts/Async/JFFAsyncContacts.m b/lib/JFFContacts/JFFContacts/Async/JFFAsyncContacts.m index 7b16804..14212c5 100644 --- a/lib/JFFContacts/JFFContacts/Async/JFFAsyncContacts.m +++ b/lib/JFFContacts/JFFContacts/Async/JFFAsyncContacts.m @@ -10,20 +10,20 @@ @interface JFFAsyncRequestAccessToContactsLoader : NSObject + @implementation JFFContactPhotoField + (instancetype)newContactFieldWithName:(NSString *)name diff --git a/lib/JFFContacts/JFFContacts/Details/JFFContactStringArrayField.m b/lib/JFFContacts/JFFContacts/Details/JFFContactStringArrayField.m index 17282a7..a8bfdf2 100644 --- a/lib/JFFContacts/JFFContacts/Details/JFFContactStringArrayField.m +++ b/lib/JFFContacts/JFFContacts/Details/JFFContactStringArrayField.m @@ -72,14 +72,14 @@ - (void)setPropertyFromValue:(id)value self.value = [self filteredValues:value]; CFErrorRef error = NULL; - ABMutableMultiValueRef values_ = createMutableMultiValueWithArray(self.value, _labels); + ABMutableMultiValueRef values = createMutableMultiValueWithArray(self.value, _labels); BOOL didSet = ABRecordSetValue(self.record, self.propertyID, - values_, + values, &error); if (!didSet) { NSLog( @"can not set %@", self.name ); } - if ( values_ ) - CFRelease( values_ ); + if (values) + CFRelease(values); } @end diff --git a/lib/JFFContacts/JFFContacts/Details/NSArray+kABMultiValue.m b/lib/JFFContacts/JFFContacts/Details/NSArray+kABMultiValue.m index 25a8c99..28642d3 100644 --- a/lib/JFFContacts/JFFContacts/Details/NSArray+kABMultiValue.m +++ b/lib/JFFContacts/JFFContacts/Details/NSArray+kABMultiValue.m @@ -5,17 +5,17 @@ @implementation NSArray (kABMultiValue) + (instancetype)arrayWithMultyValue:(ABMutableMultiValueRef)multyValue { CFIndex count = multyValue - ? ABMultiValueGetCount(multyValue) - : 0; + ?ABMultiValueGetCount(multyValue) + :0; if (0 == count) return nil; - + NSArray *result = [NSArray arrayWithCapacity:count ignoringNilsProducer:^id(NSUInteger index) { CFTypeRef value = ABMultiValueCopyValueAtIndex(multyValue, index); - + return (__bridge_transfer NSString *)value; }]; diff --git a/lib/JFFContacts/JFFContacts/JFFContact.m b/lib/JFFContacts/JFFContacts/JFFContact.m index fca1ae1..372bb56 100644 --- a/lib/JFFContacts/JFFContacts/JFFContact.m +++ b/lib/JFFContacts/JFFContacts/JFFContact.m @@ -18,7 +18,7 @@ static ABRecordRef createOrGetContactPerson(ABRecordID contactInternalId, ABRecordRef result = ABAddressBookGetPersonWithRecordID(addressBook, contactInternalId); - + if (result) { CFRetain(result); return result; @@ -88,7 +88,7 @@ - (void)initializeDynamicFields { _fieldByName = [NSMutableDictionary new]; - NSDictionary* fieldNameByPropertyId_ = @{ + NSDictionary *fieldNameByPropertyId = @{ @(kABPersonFirstNameProperty) : JFFContactFirstName, @(kABPersonLastNameProperty) : JFFContactLastName , @(kABPersonOrganizationProperty) : JFFContactCompany , @@ -97,7 +97,7 @@ - (void)initializeDynamicFields ABRecordRef person = self.person; - [fieldNameByPropertyId_ enumerateKeysAndObjectsUsingBlock:^(NSNumber *propertyID, id fieldName, BOOL *stop) { + [fieldNameByPropertyId enumerateKeysAndObjectsUsingBlock:^(NSNumber *propertyID, id fieldName, BOOL *stop) { JFFContactStringField *field = [JFFContactStringField newContactFieldWithName:fieldName propertyID:(ABPropertyID)[propertyID longLongValue] diff --git a/lib/JFFContacts/JFFContacts/JFFContactFieldsKeys.h b/lib/JFFContacts/JFFContacts/JFFContactFieldsKeys.h index f5e3094..045bcda 100644 --- a/lib/JFFContacts/JFFContacts/JFFContactFieldsKeys.h +++ b/lib/JFFContacts/JFFContacts/JFFContactFieldsKeys.h @@ -1,18 +1,18 @@ #import -extern NSString* const JFFContactFirstName; -extern NSString* const JFFContactLastName ; -extern NSString* const JFFContactCompany ; -extern NSString* const JFFContactBirthday ; -extern NSString* const JFFContactPhoto ; -extern NSString* const JFFContactEmails ; -extern NSString* const JFFContactPhones ; -extern NSString* const JFFContactWebsites ; -extern NSString* const JFFContactAddresses; +extern NSString *const JFFContactFirstName; +extern NSString *const JFFContactLastName ; +extern NSString *const JFFContactCompany ; +extern NSString *const JFFContactBirthday ; +extern NSString *const JFFContactPhoto ; +extern NSString *const JFFContactEmails ; +extern NSString *const JFFContactPhones ; +extern NSString *const JFFContactWebsites ; +extern NSString *const JFFContactAddresses; //Address fields -extern NSString* JFFContactAddresseStreetKey (); -extern NSString* JFFContactAddresseCityKey (); -extern NSString* JFFContactAddresseStateKey (); -extern NSString* JFFContactAddresseZIPKey (); -extern NSString* JFFContactAddresseCountryKey(); +extern NSString *JFFContactAddresseStreetKey (); +extern NSString *JFFContactAddresseCityKey (); +extern NSString *JFFContactAddresseStateKey (); +extern NSString *JFFContactAddresseZIPKey (); +extern NSString *JFFContactAddresseCountryKey(); diff --git a/lib/JFFContacts/JFFContacts/JFFContactFieldsKeys.m b/lib/JFFContacts/JFFContacts/JFFContactFieldsKeys.m index 792a212..46bdfc8 100644 --- a/lib/JFFContacts/JFFContacts/JFFContactFieldsKeys.m +++ b/lib/JFFContacts/JFFContacts/JFFContactFieldsKeys.m @@ -12,27 +12,27 @@ NSString* const JFFContactWebsites = @"websites" ; NSString* const JFFContactAddresses = @"addresses"; -NSString* JFFContactAddresseStreetKey() +NSString *JFFContactAddresseStreetKey() { - return (__bridge NSString*)kABPersonAddressStreetKey; + return (__bridge NSString *)kABPersonAddressStreetKey; } -NSString* JFFContactAddresseCityKey() +NSString *JFFContactAddresseCityKey() { - return (__bridge NSString*)kABPersonAddressCityKey; + return (__bridge NSString *)kABPersonAddressCityKey; } -NSString* JFFContactAddresseStateKey() +NSString *JFFContactAddresseStateKey() { - return (__bridge NSString*)kABPersonAddressStateKey; + return (__bridge NSString *)kABPersonAddressStateKey; } -NSString* JFFContactAddresseZIPKey() +NSString *JFFContactAddresseZIPKey() { - return (__bridge NSString*)kABPersonAddressZIPKey; + return (__bridge NSString *)kABPersonAddressZIPKey; } -NSString* JFFContactAddresseCountryKey() +NSString *JFFContactAddresseCountryKey() { - return (__bridge NSString*)kABPersonAddressCountryKey; + return (__bridge NSString *)kABPersonAddressCountryKey; } diff --git a/lib/JFFCoreLocation/JFFCoreLocation.xcodeproj/project.pbxproj b/lib/JFFCoreLocation/JFFCoreLocation.xcodeproj/project.pbxproj index 84f4568..498be67 100644 --- a/lib/JFFCoreLocation/JFFCoreLocation.xcodeproj/project.pbxproj +++ b/lib/JFFCoreLocation/JFFCoreLocation.xcodeproj/project.pbxproj @@ -352,6 +352,7 @@ CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; COPY_PHASE_STRIP = NO; @@ -383,6 +384,7 @@ CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; COPY_PHASE_STRIP = YES; diff --git a/lib/JFFCoreLocation/JFFCoreLocation/asyncAdapters/JFFLocationLoader.m b/lib/JFFCoreLocation/JFFCoreLocation/asyncAdapters/JFFLocationLoader.m index afb10ba..d818386 100644 --- a/lib/JFFCoreLocation/JFFCoreLocation/asyncAdapters/JFFLocationLoader.m +++ b/lib/JFFCoreLocation/JFFCoreLocation/asyncAdapters/JFFLocationLoader.m @@ -20,7 +20,7 @@ @implementation JFFCoreLocationAsyncAdapter @private JFFLocationLoaderSupervisor *_supervisor; CLLocationAccuracy _accuracy; - JFFAsyncOperationInterfaceResultHandler _handler; + JFFDidFinishAsyncOperationCallback _finishCallback; JFFTimer *_timer; } @@ -41,12 +41,12 @@ + (instancetype)newCoreLocationAsyncAdapterWithAccuracy:(double)accuracyInMeters return [[self alloc] initWithAccuracy:accuracyInMeters]; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { - handler = [handler copy]; - _handler = handler; + finishCallback = [finishCallback copy]; + _finishCallback = finishCallback; _supervisor = [JFFLocationLoaderSupervisor sharedLocationLoaderSupervisorWithAccuracy:_accuracy]; @@ -63,7 +63,7 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler if ([CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorized) { - handler(nil, [JFFLocationServicesDisabledError new]); + finishCallback(nil, [JFFLocationServicesDisabledError new]); return; } @@ -73,16 +73,16 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler cancel(); - [weakSelf onSchedulerWithHandler:handler]; + [weakSelf onSchedulerWithHandler:finishCallback]; } duration:_tolerance]; } -- (void)onSchedulerWithHandler:(JFFAsyncOperationInterfaceResultHandler)handler +- (void)onSchedulerWithHandler:(JFFDidFinishAsyncOperationCallback)finishCallback { if (_supervisor.location) { [self forceProcessLocation:_supervisor.location]; } else { - handler(nil, [JFFUnableToGetLocationError new]); + finishCallback(nil, [JFFUnableToGetLocationError new]); } } @@ -92,9 +92,11 @@ - (void)stopObserving _supervisor = nil; } -- (void)cancel:(BOOL)canceled +- (void)doTask:(JFFAsyncOperationHandlerTask)task { - if (canceled) { + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); + + if (task == JFFAsyncOperationHandlerTaskCancel) { [self stopObserving]; } } @@ -103,7 +105,7 @@ - (void)forceProcessLocation:(CLLocation *)location { NSParameterAssert(location); - _handler(location, nil); + _finishCallback(location, nil); } - (BOOL)processLocation:(CLLocation *)location diff --git a/lib/JFFCoreLocation/JFFCoreLocation/asyncAdapters/JFFPlacemarksLoader.m b/lib/JFFCoreLocation/JFFCoreLocation/asyncAdapters/JFFPlacemarksLoader.m index 0d35e5f..0883aa6 100644 --- a/lib/JFFCoreLocation/JFFCoreLocation/asyncAdapters/JFFPlacemarksLoader.m +++ b/lib/JFFCoreLocation/JFFCoreLocation/asyncAdapters/JFFPlacemarksLoader.m @@ -48,24 +48,25 @@ + (instancetype)newPlacemarksAsyncAdapterWithLocation:(CLLocation *)location return [[self alloc] initWithLocation:location]; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { - handler = [handler copy]; + finishCallback = [finishCallback copy]; _geocoder = [CLGeocoder new]; CLGeocodeCompletionHandler completionHandler = ^void(NSArray *placemarks, NSError *error) { - handler(placemarks, error); + finishCallback(placemarks, error); }; [_geocoder reverseGeocodeLocation:_location completionHandler:completionHandler]; } -- (void)cancel:(BOOL)canceled +- (void)doTask:(JFFAsyncOperationHandlerTask)task { - if (canceled) { + NSCParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); + if (task == JFFAsyncOperationHandlerTaskCancel) { [_geocoder cancelGeocode]; } } diff --git a/lib/JFFJpeg/JFFJpeg.xcodeproj/project.pbxproj b/lib/JFFJpeg/JFFJpeg.xcodeproj/project.pbxproj index 6c42c20..78b142c 100644 --- a/lib/JFFJpeg/JFFJpeg.xcodeproj/project.pbxproj +++ b/lib/JFFJpeg/JFFJpeg.xcodeproj/project.pbxproj @@ -272,7 +272,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -317,7 +316,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; diff --git a/lib/JFFJsonTools/JFFJsonTools/Details/JFFOptionalObjectFieldKey.m b/lib/JFFJsonTools/JFFJsonTools/Details/JFFOptionalObjectFieldKey.m index 58f0b3b..23f4946 100644 --- a/lib/JFFJsonTools/JFFJsonTools/Details/JFFOptionalObjectFieldKey.m +++ b/lib/JFFJsonTools/JFFJsonTools/Details/JFFOptionalObjectFieldKey.m @@ -38,4 +38,9 @@ - (NSUInteger)hash return [_fieldKey hash]; } +- (NSString *)description +{ + return [[NSString alloc] initWithFormat:@"<%@: %p fieldKey: %@>", [self class], self, _fieldKey]; +} + @end diff --git a/lib/JFFJsonTools/JFFJsonTools/Details/JFFOptionalObjectFieldValue.m b/lib/JFFJsonTools/JFFJsonTools/Details/JFFOptionalObjectFieldValue.m index 847f5b3..391c068 100644 --- a/lib/JFFJsonTools/JFFJsonTools/Details/JFFOptionalObjectFieldValue.m +++ b/lib/JFFJsonTools/JFFJsonTools/Details/JFFOptionalObjectFieldValue.m @@ -13,4 +13,9 @@ + (instancetype)newOptionalObjectFieldWithFieldValue:(id)fieldValue return result; } +- (NSString *)description +{ + return [[NSString alloc] initWithFormat:@"<%@: %p fieldValue: %@>", [self class], self, _fieldValue]; +} + @end diff --git a/lib/JFFNetwork/ContentEncodings/JNHttpEncodingsFactory.m b/lib/JFFNetwork/ContentEncodings/JNHttpEncodingsFactory.m index 3811b24..4ec471e 100755 --- a/lib/JFFNetwork/ContentEncodings/JNHttpEncodingsFactory.m +++ b/lib/JFFNetwork/ContentEncodings/JNHttpEncodingsFactory.m @@ -13,8 +13,11 @@ @implementation JNHttpEncodingsFactory - (instancetype)initWithContentLength:( unsigned long long )contentLength { - self = [ super init ]; - self.contentLength = contentLength; + self = [super init]; + + if (self) { + _contentLength = contentLength; + } return self; } diff --git a/lib/JFFNetwork/Detail/JFFNetworkAsyncOperation.m b/lib/JFFNetwork/Detail/JFFNetworkAsyncOperation.m index b43c5b8..2d6b0a7 100644 --- a/lib/JFFNetwork/Detail/JFFNetworkAsyncOperation.m +++ b/lib/JFFNetwork/Detail/JFFNetworkAsyncOperation.m @@ -11,12 +11,12 @@ @implementation JFFNetworkAsyncOperation -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { - NSParameterAssert(handler ); - NSParameterAssert(progress); + NSParameterAssert(finishCallback ); + NSParameterAssert(progressCallback); { JNConnectionsFactory *factory = @@ -30,7 +30,7 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler __unsafe_unretained JFFNetworkAsyncOperation *unretainedSelf = self; id connection = self.connection; - progress = [progress copy]; + progressCallback = [progressCallback copy]; _connection.didReceiveDataBlock = ^(NSData *dataChunk) { JFFNetworkResponseDataCallback *progressData = [JFFNetworkResponseDataCallback new]; @@ -40,7 +40,7 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler progressData.downloadedBytesCount = [connection downloadedBytesCount]; } - progress(progressData); + progressCallback(progressData); }; _connection.didUploadDataBlock = ^(NSNumber *progressNum) { @@ -48,24 +48,23 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler JFFNetworkUploadProgressCallback *uploadProgress = [JFFNetworkUploadProgressCallback new]; uploadProgress.progress = progressNum; uploadProgress.params = unretainedSelf.params; - progress(uploadProgress); + progressCallback(uploadProgress); }; __block id resultHolder; JFFNetworkErrorTransformer errorTransformer = _errorTransformer; - handler = [handler copy]; + finishCallback = [finishCallback copy]; JFFDidFinishLoadingHandler finish = [^(NSError *error) { if (error) { - handler(nil, errorTransformer?errorTransformer(error):error); + finishCallback(nil, errorTransformer?errorTransformer(error):error); return; } - handler(resultHolder, nil); - + finishCallback(resultHolder, nil); } copy]; finish = [finish copy]; @@ -92,11 +91,13 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler - (void)forceCancel { - [self cancel:YES]; + [self doTask:JFFAsyncOperationHandlerTaskCancel]; } -- (void)cancel:(BOOL)canceled +- (void)doTask:(JFFAsyncOperationHandlerTask)task { + NSCParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); + _connection.didReceiveDataBlock = nil; _connection.didFinishLoadingBlock = nil; _connection.didReceiveResponseBlock = nil; @@ -104,7 +105,7 @@ - (void)cancel:(BOOL)canceled _connection.shouldAcceptCertificateBlock = nil; //TODO maybe always cancel? - if (canceled) { + if (task == JFFAsyncOperationHandlerTaskCancel) { [_connection cancel]; _connection = nil; } diff --git a/lib/JFFNetwork/DownloadManager/JFFDownloadItem.m b/lib/JFFNetwork/DownloadManager/JFFDownloadItem.m index 6316229..36263da 100644 --- a/lib/JFFNetwork/DownloadManager/JFFDownloadItem.m +++ b/lib/JFFNetwork/DownloadManager/JFFDownloadItem.m @@ -13,7 +13,8 @@ #import #import -#import +#import +#import static JFFMutableAssignArray *downloadItems = nil; @@ -27,7 +28,7 @@ @interface JFFDownloadItem () @property (nonatomic) unsigned long long fileLength; @property (nonatomic) unsigned long long downloadedFileLength; @property (nonatomic) NSNull *downloadedFlag; -@property (nonatomic, copy) JFFCancelAsyncOperation stopBlock; +@property (nonatomic, copy) JFFAsyncOperationHandler stopBlock; @end @@ -36,7 +37,7 @@ @implementation JFFDownloadItem JFFTrafficCalculator *_trafficCalculator; FILE *_file; float _previousProgress; - JFFMulticastDelegate< JFFDownloadItemDelegate > *_multicastDelegate; + JFFMulticastDelegate *_multicastDelegate; } @dynamic downloadedFlag; @@ -78,10 +79,10 @@ - (instancetype)initWithURL:(NSURL *)url - (JFFTrafficCalculator *)trafficCalculator { - if (!_trafficCalculator) { - _trafficCalculator = [[JFFTrafficCalculator alloc] initWithDelegate:self]; - } - return _trafficCalculator; + if (!_trafficCalculator) { + _trafficCalculator = [[JFFTrafficCalculator alloc] initWithDelegate:self]; + } + return _trafficCalculator; } - (void)closeFile @@ -134,7 +135,7 @@ + (BOOL)checkNotAlreadyUsedLocalPath:(NSString *)localFilePath BOOL result = ![downloadItems any:^BOOL(id object) { JFFDownloadItem *item_ = object; return ![item_.url isEqual:url] - && [ item_.localFilePath isEqualToString:localFilePath]; + && [ item_.localFilePath isEqualToString:localFilePath]; }]; if (!result && outError) { @@ -156,7 +157,7 @@ + (instancetype)downloadItemWithURL:(NSURL *)url id result = [downloadItems firstMatch: ^BOOL(id object) { JFFDownloadItem *item = object; return [item.url isEqual:url] - && [item.localFilePath isEqualToString:localFilePath]; + && [item.localFilePath isEqualToString:localFilePath]; } ]; if (!result) { @@ -167,7 +168,7 @@ + (instancetype)downloadItemWithURL:(NSURL *)url } [downloadItems addObject:result]; } - + return result; } @@ -194,7 +195,7 @@ - (void)start - (void)stop { - JFFCancelAsyncOperation stopBlock = [self.stopBlock copy]; + JFFAsyncOperationHandler stopBlock = [self.stopBlock copy]; if (stopBlock) { self.stopBlock = nil; stopBlock(YES); @@ -257,20 +258,15 @@ - (void)didFinishLoadedWithError:(NSError *)error [self finalizeLoading]; } -- (void)didCancelWithFlag:(BOOL)canceled - cancelCallback:(JFFCancelAsyncOperationHandler)cancelCallback +- (void)cancel { - NSParameterAssert(canceled); [self finalizeLoading]; [_multicastDelegate didCancelLoadingOfDownloadItem:self]; - - if (cancelCallback) - cancelCallback(canceled); } - (void)didReceiveData:(NSData *)data - progressHandler:(JFFAsyncOperationProgressHandler)progressCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { if (!_trafficCalculator) [self.trafficCalculator startLoading]; @@ -301,9 +297,9 @@ - (void)didReceiveResponse:(JFFURLResponse *)response - (JFFAsyncOperation)fileLoader { - JFFAsyncOperation loader = ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) + JFFAsyncOperation loader = ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { NSString *range = [[NSString alloc] initWithFormat:@"bytes=%qu-", self.downloadedFileLength]; NSDictionary *headers = @{ @"Range" : range }; @@ -316,7 +312,7 @@ - (JFFAsyncOperation)fileLoader progressCallback = [ progressCallback copy ]; connection.didReceiveDataBlock = ^(NSData *data) { [self didReceiveData:data - progressHandler:progressCallback]; + progressCallback:progressCallback]; }; doneCallback = [doneCallback copy]; @@ -332,26 +328,27 @@ - (JFFAsyncOperation)fileLoader [self didReceiveResponse:response]; }; - JFFCancelAsyncOperationBlockHolder *cancelCallbackBlockHolder = [JFFCancelAsyncOperationBlockHolder new]; - cancelCallback = [cancelCallback copy]; - JFFCancelAsyncOperationHandler cancelCallbackWrapper = ^(BOOL canceled) - { - [self didCancelWithFlag:canceled cancelCallback:cancelCallback]; + JFFAsyncOperationHandlerBlockHolder *cancelCallbackBlockHolder = [JFFAsyncOperationHandlerBlockHolder new]; + JFFAsyncOperationHandler loaderHandlerWrapper = ^(JFFAsyncOperationHandlerTask task) { + + [self cancel]; + if (doneCallback) + doneCallback(nil, [JFFAsyncOpFinishedByCancellationError new]); }; - cancelCallbackBlockHolder.cancelBlock = cancelCallbackWrapper; + cancelCallbackBlockHolder.loaderHandler = loaderHandlerWrapper; [connection start]; [_multicastDelegate didProgressChangeForDownloadItem:self]; - self.stopBlock = ^void(BOOL canceled) - { - if (canceled) + self.stopBlock = ^void(JFFAsyncOperationHandlerTask task) { + + if (task == JFFAsyncOperationHandlerTaskCancel) [connection cancel]; else - NSCAssert(NO, @"pass canceled as YES only"); + NSCAssert(NO, @"pass task: JFFAsyncOperationHandlerTaskCancel only"); - cancelCallbackBlockHolder.onceCancelBlock(canceled); + [cancelCallbackBlockHolder performCancelBlockOnceWithArgument:JFFAsyncOperationHandlerTaskCancel]; }; return self.stopBlock; }; @@ -359,7 +356,7 @@ - (JFFAsyncOperation)fileLoader loader = [self asyncOperationForPropertyWithName:NSStringFromSelector(@selector(downloadedFlag)) asyncOperation:loader]; - JFFDidFinishAsyncOperationHandler didFinishOperation = ^void(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback didFinishOperation = ^void(id result, NSError *error) { [self notifyFinishWithError:error]; }; return asyncOperationWithFinishCallbackBlock(loader, diff --git a/lib/JFFNetwork/JFFNetwork.xcodeproj/project.pbxproj b/lib/JFFNetwork/JFFNetwork.xcodeproj/project.pbxproj index 718f2fe..644cdce 100644 --- a/lib/JFFNetwork/JFFNetwork.xcodeproj/project.pbxproj +++ b/lib/JFFNetwork/JFFNetwork.xcodeproj/project.pbxproj @@ -15,6 +15,75 @@ 1B166C941546E5AD00475B6A /* JFFLocalCookiesStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B166C921546E5AD00475B6A /* JFFLocalCookiesStorage.m */; }; 1B166C981546E65C00475B6A /* NSString+RFC_2965.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B166C961546E65C00475B6A /* NSString+RFC_2965.h */; }; 1B166C991546E65C00475B6A /* NSString+RFC_2965.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B166C971546E65C00475B6A /* NSString+RFC_2965.m */; }; + 4C0694AF182D40A60099BB66 /* JHttpBodyBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C377B1C175BD8E100F1B993 /* JHttpBodyBuilder.m */; }; + 4C0694B0182D40A60099BB66 /* NSHTTPCookie+MatchesURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA098FF174A3BFB002BEA0F /* NSHTTPCookie+MatchesURL.m */; }; + 4C0694B1182D40A60099BB66 /* NSData+DataForHTTPPost.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA09903174A3C3F002BEA0F /* NSData+DataForHTTPPost.m */; }; + 4C0694B2182D40A60099BB66 /* NSURL+Cookies.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA09907174A3C64002BEA0F /* NSURL+Cookies.m */; }; + 4C0694B3182D40A60099BB66 /* NSMutableURLRequest+CreateRequestWithURLParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA09917174A3E24002BEA0F /* NSMutableURLRequest+CreateRequestWithURLParams.m */; }; + 4C0694B4182D40A60099BB66 /* NSDictionary+JHTTPHeaders.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0991B174A3E28002BEA0F /* NSDictionary+JHTTPHeaders.m */; }; + 4C0694B5182D40A60099BB66 /* JHttpBodyBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C377B1C175BD8E100F1B993 /* JHttpBodyBuilder.m */; }; + 4C0694B6182D40A60099BB66 /* NSHTTPCookie+MatchesURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA098FF174A3BFB002BEA0F /* NSHTTPCookie+MatchesURL.m */; }; + 4C0694B7182D40A60099BB66 /* NSData+DataForHTTPPost.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA09903174A3C3F002BEA0F /* NSData+DataForHTTPPost.m */; }; + 4C0694B8182D40A60099BB66 /* NSURL+Cookies.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA09907174A3C64002BEA0F /* NSURL+Cookies.m */; }; + 4C0694B9182D40A60099BB66 /* NSMutableURLRequest+CreateRequestWithURLParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA09917174A3E24002BEA0F /* NSMutableURLRequest+CreateRequestWithURLParams.m */; }; + 4C0694BA182D40A60099BB66 /* NSDictionary+JHTTPHeaders.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0991B174A3E28002BEA0F /* NSDictionary+JHTTPHeaders.m */; }; + 4C0694BB182D40A70099BB66 /* JHttpBodyBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C377B1C175BD8E100F1B993 /* JHttpBodyBuilder.m */; }; + 4C0694BC182D40A70099BB66 /* NSHTTPCookie+MatchesURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA098FF174A3BFB002BEA0F /* NSHTTPCookie+MatchesURL.m */; }; + 4C0694BD182D40A70099BB66 /* NSData+DataForHTTPPost.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA09903174A3C3F002BEA0F /* NSData+DataForHTTPPost.m */; }; + 4C0694BE182D40A70099BB66 /* NSURL+Cookies.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA09907174A3C64002BEA0F /* NSURL+Cookies.m */; }; + 4C0694BF182D40A70099BB66 /* NSMutableURLRequest+CreateRequestWithURLParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA09917174A3E24002BEA0F /* NSMutableURLRequest+CreateRequestWithURLParams.m */; }; + 4C0694C0182D40A70099BB66 /* NSDictionary+JHTTPHeaders.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0991B174A3E28002BEA0F /* NSDictionary+JHTTPHeaders.m */; }; + 4C0694C1182D40B10099BB66 /* JNConnectionMock.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBBDBF117173BE4004D670D /* JNConnectionMock.m */; }; + 4C0694C2182D40B10099BB66 /* JNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FAC916E0ACE400B6EFD8 /* JNetworkError.m */; }; + 4C0694C3182D40B10099BB66 /* JStreamError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FAC516E0ACC500B6EFD8 /* JStreamError.m */; }; + 4C0694C4182D40B10099BB66 /* JHttpError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FACD16E0AE7500B6EFD8 /* JHttpError.m */; }; + 4C0694C5182D40B20099BB66 /* JNConnectionMock.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBBDBF117173BE4004D670D /* JNConnectionMock.m */; }; + 4C0694C6182D40B20099BB66 /* JNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FAC916E0ACE400B6EFD8 /* JNetworkError.m */; }; + 4C0694C7182D40B20099BB66 /* JStreamError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FAC516E0ACC500B6EFD8 /* JStreamError.m */; }; + 4C0694C8182D40B20099BB66 /* JHttpError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FACD16E0AE7500B6EFD8 /* JHttpError.m */; }; + 4C0694C9182D40B30099BB66 /* JNConnectionMock.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBBDBF117173BE4004D670D /* JNConnectionMock.m */; }; + 4C0694CA182D40B30099BB66 /* JNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FAC916E0ACE400B6EFD8 /* JNetworkError.m */; }; + 4C0694CB182D40B30099BB66 /* JStreamError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FAC516E0ACC500B6EFD8 /* JStreamError.m */; }; + 4C0694CC182D40B30099BB66 /* JHttpError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FACD16E0AE7500B6EFD8 /* JHttpError.m */; }; + 4C0694CD182D40BE0099BB66 /* JFFNetworkAsyncOperationCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF162DE16760ECD00B0B6E4 /* JFFNetworkAsyncOperationCallback.m */; }; + 4C0694CE182D40BE0099BB66 /* JFFNetworkResponseDataCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF162E216760EF100B0B6E4 /* JFFNetworkResponseDataCallback.m */; }; + 4C0694CF182D40BE0099BB66 /* JFFNetworkUploadProgressCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF162E616760F1C00B0B6E4 /* JFFNetworkUploadProgressCallback.m */; }; + 4C0694D0182D40BE0099BB66 /* NSString+RFC_2965.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B166C971546E65C00475B6A /* NSString+RFC_2965.m */; }; + 4C0694D1182D40BE0099BB66 /* JFFLocalCookiesStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B166C921546E5AD00475B6A /* JFFLocalCookiesStorage.m */; }; + 4C0694D2182D40BE0099BB66 /* JFFNetworkAsyncOperationCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF162DE16760ECD00B0B6E4 /* JFFNetworkAsyncOperationCallback.m */; }; + 4C0694D3182D40BE0099BB66 /* JFFNetworkResponseDataCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF162E216760EF100B0B6E4 /* JFFNetworkResponseDataCallback.m */; }; + 4C0694D4182D40BE0099BB66 /* JFFNetworkUploadProgressCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF162E616760F1C00B0B6E4 /* JFFNetworkUploadProgressCallback.m */; }; + 4C0694D5182D40BE0099BB66 /* NSString+RFC_2965.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B166C971546E65C00475B6A /* NSString+RFC_2965.m */; }; + 4C0694D6182D40BE0099BB66 /* JFFLocalCookiesStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B166C921546E5AD00475B6A /* JFFLocalCookiesStorage.m */; }; + 4C0694D7182D40BE0099BB66 /* JFFNetworkAsyncOperationCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF162DE16760ECD00B0B6E4 /* JFFNetworkAsyncOperationCallback.m */; }; + 4C0694D8182D40BE0099BB66 /* JFFNetworkResponseDataCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF162E216760EF100B0B6E4 /* JFFNetworkResponseDataCallback.m */; }; + 4C0694D9182D40BE0099BB66 /* JFFNetworkUploadProgressCallback.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF162E616760F1C00B0B6E4 /* JFFNetworkUploadProgressCallback.m */; }; + 4C0694DA182D40BE0099BB66 /* NSString+RFC_2965.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B166C971546E65C00475B6A /* NSString+RFC_2965.m */; }; + 4C0694DB182D40BE0099BB66 /* JFFLocalCookiesStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B166C921546E5AD00475B6A /* JFFLocalCookiesStorage.m */; }; + 4C0694DC182D40C90099BB66 /* NSString+XQueryComponents.m in Sources */ = {isa = PBXBuildFile; fileRef = 65F47AC91539A38000D8C865 /* NSString+XQueryComponents.m */; }; + 4C0694DD182D40C90099BB66 /* NSURL+XQueryComponents.m in Sources */ = {isa = PBXBuildFile; fileRef = 65F47ACE1539A3BE00D8C865 /* NSURL+XQueryComponents.m */; }; + 4C0694DE182D40C90099BB66 /* NSDictionary+XQueryComponents.m in Sources */ = {isa = PBXBuildFile; fileRef = 65F47AD21539A3FF00D8C865 /* NSDictionary+XQueryComponents.m */; }; + 4C0694DF182D40C90099BB66 /* NSString+XQueryComponents.m in Sources */ = {isa = PBXBuildFile; fileRef = 65F47AC91539A38000D8C865 /* NSString+XQueryComponents.m */; }; + 4C0694E0182D40C90099BB66 /* NSURL+XQueryComponents.m in Sources */ = {isa = PBXBuildFile; fileRef = 65F47ACE1539A3BE00D8C865 /* NSURL+XQueryComponents.m */; }; + 4C0694E1182D40C90099BB66 /* NSDictionary+XQueryComponents.m in Sources */ = {isa = PBXBuildFile; fileRef = 65F47AD21539A3FF00D8C865 /* NSDictionary+XQueryComponents.m */; }; + 4C0694E2182D40CA0099BB66 /* NSString+XQueryComponents.m in Sources */ = {isa = PBXBuildFile; fileRef = 65F47AC91539A38000D8C865 /* NSString+XQueryComponents.m */; }; + 4C0694E3182D40CA0099BB66 /* NSURL+XQueryComponents.m in Sources */ = {isa = PBXBuildFile; fileRef = 65F47ACE1539A3BE00D8C865 /* NSURL+XQueryComponents.m */; }; + 4C0694E4182D40CA0099BB66 /* NSDictionary+XQueryComponents.m in Sources */ = {isa = PBXBuildFile; fileRef = 65F47AD21539A3FF00D8C865 /* NSDictionary+XQueryComponents.m */; }; + 4C0694E5182D40E20099BB66 /* JFFNetworkAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B15CCB21535CAF4005F2B56 /* JFFNetworkAsyncOperation.m */; }; + 4C0694E6182D40E20099BB66 /* NSUrlLocationValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBBDBE217173AF3004D670D /* NSUrlLocationValidator.m */; }; + 4C0694E7182D40E20099BB66 /* JFFNetworkAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B15CCB21535CAF4005F2B56 /* JFFNetworkAsyncOperation.m */; }; + 4C0694E8182D40E20099BB66 /* NSUrlLocationValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBBDBE217173AF3004D670D /* NSUrlLocationValidator.m */; }; + 4C0694E9182D40E30099BB66 /* JFFNetworkAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B15CCB21535CAF4005F2B56 /* JFFNetworkAsyncOperation.m */; }; + 4C0694EA182D40E30099BB66 /* NSUrlLocationValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBBDBE217173AF3004D670D /* NSUrlLocationValidator.m */; }; + 4C0694EB182D41000099BB66 /* JFFURLConnectionParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B15CCB71535CB39005F2B56 /* JFFURLConnectionParams.m */; }; + 4C0694EC182D41000099BB66 /* JFFURLConnectionParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B15CCB71535CB39005F2B56 /* JFFURLConnectionParams.m */; }; + 4C0694ED182D41010099BB66 /* JFFURLConnectionParams.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B15CCB71535CB39005F2B56 /* JFFURLConnectionParams.m */; }; + 4C069505182D412A0099BB66 /* JNSNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B39216F0960300A20C25 /* JNSNetworkError.m */; }; + 4C069506182D412A0099BB66 /* JNSNoInternetNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B39616F0965700A20C25 /* JNSNoInternetNetworkError.m */; }; + 4C069507182D412A0099BB66 /* JNSNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B39216F0960300A20C25 /* JNSNetworkError.m */; }; + 4C069508182D412A0099BB66 /* JNSNoInternetNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B39616F0965700A20C25 /* JNSNoInternetNetworkError.m */; }; + 4C069509182D412B0099BB66 /* JNSNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B39216F0960300A20C25 /* JNSNetworkError.m */; }; + 4C06950A182D412B0099BB66 /* JNSNoInternetNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0B39616F0965700A20C25 /* JNSNoInternetNetworkError.m */; }; 4C377B1D175BD8E100F1B993 /* JHttpBodyBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C377B1B175BD8E000F1B993 /* JHttpBodyBuilder.h */; }; 4C377B1E175BD8E100F1B993 /* JHttpBodyBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C377B1C175BD8E100F1B993 /* JHttpBodyBuilder.m */; }; 4C98FAC616E0ACC500B6EFD8 /* JStreamError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C98FAC416E0ACC500B6EFD8 /* JStreamError.h */; }; @@ -1067,25 +1136,48 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4C0694EC182D41000099BB66 /* JFFURLConnectionParams.m in Sources */, 5391037F14A88BCA007315A3 /* JFFURLConnection.m in Sources */, 5391038014A88BCA007315A3 /* JFFURLResponse.m in Sources */, 5391038114A88BCA007315A3 /* JFFNetworkBlocksFunctions.m in Sources */, 5391038214A88BCA007315A3 /* NSMutableSet+DownloadManager.m in Sources */, + 4C0694D6182D40BE0099BB66 /* JFFLocalCookiesStorage.m in Sources */, + 4C0694B8182D40A60099BB66 /* NSURL+Cookies.m in Sources */, + 4C0694E7182D40E20099BB66 /* JFFNetworkAsyncOperation.m in Sources */, 5391038314A88BCA007315A3 /* JFFFileManager.m in Sources */, 5391038414A88BCA007315A3 /* JFFTrafficCalculator.m in Sources */, + 4C0694C9182D40B30099BB66 /* JNConnectionMock.m in Sources */, + 4C0694CC182D40B30099BB66 /* JHttpError.m in Sources */, + 4C0694E1182D40C90099BB66 /* NSDictionary+XQueryComponents.m in Sources */, + 4C069507182D412A0099BB66 /* JNSNetworkError.m in Sources */, 5391038514A88BCA007315A3 /* JFFDownloadItem.m in Sources */, + 4C0694CB182D40B30099BB66 /* JStreamError.m in Sources */, + 4C0694B6182D40A60099BB66 /* NSHTTPCookie+MatchesURL.m in Sources */, 5391038614A88BCA007315A3 /* NSMutableDictionary+DownloadingFileInfo.m in Sources */, 5391038714A88BCA007315A3 /* JFFUrlResponseLogger.m in Sources */, 5391038814A88BCA007315A3 /* JNHttpEncodingsFactory.m in Sources */, 5391038914A88BCA007315A3 /* JNGzipDecoder.m in Sources */, + 4C069508182D412A0099BB66 /* JNSNoInternetNetworkError.m in Sources */, + 4C0694D5182D40BE0099BB66 /* NSString+RFC_2965.m in Sources */, + 4C0694D3182D40BE0099BB66 /* JFFNetworkResponseDataCallback.m in Sources */, + 4C0694DF182D40C90099BB66 /* NSString+XQueryComponents.m in Sources */, + 4C0694BA182D40A60099BB66 /* NSDictionary+JHTTPHeaders.m in Sources */, + 4C0694B9182D40A60099BB66 /* NSMutableURLRequest+CreateRequestWithURLParams.m in Sources */, + 4C0694E0182D40C90099BB66 /* NSURL+XQueryComponents.m in Sources */, + 4C0694E8182D40E20099BB66 /* NSUrlLocationValidator.m in Sources */, 5391038A14A88BCA007315A3 /* JNStubDecoder.m in Sources */, + 4C0694D4182D40BE0099BB66 /* JFFNetworkUploadProgressCallback.m in Sources */, 5391038B14A88BCA007315A3 /* JNZipDecoder.m in Sources */, 5391038C14A88BCA007315A3 /* JNGzipErrorsLogger.m in Sources */, 5391038D14A88BCA007315A3 /* JNNsUrlConnection.m in Sources */, 5391038E14A88BCA007315A3 /* JNAbstractConnection.m in Sources */, + 4C0694B5182D40A60099BB66 /* JHttpBodyBuilder.m in Sources */, 5391039014A88BCA007315A3 /* JNConnectionsFactory.m in Sources */, CE29B5E515F5E823000A05B8 /* NSURL+URLWithLocation.m in Sources */, + 4C0694B7182D40A60099BB66 /* NSData+DataForHTTPPost.m in Sources */, 7E54F3C215FA25C6006F386A /* JHttpFlagChecker.mm in Sources */, + 4C0694CA182D40B30099BB66 /* JNetworkError.m in Sources */, + 4C0694D2182D40BE0099BB66 /* JFFNetworkAsyncOperationCallback.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1093,25 +1185,48 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4C0694EB182D41000099BB66 /* JFFURLConnectionParams.m in Sources */, 65802B32148BFC2C0040A93A /* JFFUrlResponseLogger.m in Sources */, 65802B39148BFC4B0040A93A /* JFFURLResponse.m in Sources */, 65802B3C148BFC4B0040A93A /* JFFURLConnection.m in Sources */, 65802B3E148BFC4B0040A93A /* JNAbstractConnection.m in Sources */, + 4C0694D1182D40BE0099BB66 /* JFFLocalCookiesStorage.m in Sources */, + 4C0694B2182D40A60099BB66 /* NSURL+Cookies.m in Sources */, + 4C0694E5182D40E20099BB66 /* JFFNetworkAsyncOperation.m in Sources */, 65802B40148BFC4B0040A93A /* JNNsUrlConnection.m in Sources */, 65802B42148BFC4B0040A93A /* JFFNetworkBlocksFunctions.m in Sources */, + 4C0694C1182D40B10099BB66 /* JNConnectionMock.m in Sources */, + 4C0694C4182D40B10099BB66 /* JHttpError.m in Sources */, + 4C0694DE182D40C90099BB66 /* NSDictionary+XQueryComponents.m in Sources */, + 4C069505182D412A0099BB66 /* JNSNetworkError.m in Sources */, 65802B48148BFC6E0040A93A /* JFFDownloadItem.m in Sources */, + 4C0694C3182D40B10099BB66 /* JStreamError.m in Sources */, + 4C0694B0182D40A60099BB66 /* NSHTTPCookie+MatchesURL.m in Sources */, 65802B4B148BFC790040A93A /* JFFFileManager.m in Sources */, 65802B4D148BFC790040A93A /* NSMutableSet+DownloadManager.m in Sources */, 65802B4F148BFC790040A93A /* JFFTrafficCalculator.m in Sources */, 65802B52148BFC790040A93A /* NSMutableDictionary+DownloadingFileInfo.m in Sources */, + 4C069506182D412A0099BB66 /* JNSNoInternetNetworkError.m in Sources */, + 4C0694D0182D40BE0099BB66 /* NSString+RFC_2965.m in Sources */, + 4C0694CE182D40BE0099BB66 /* JFFNetworkResponseDataCallback.m in Sources */, + 4C0694DC182D40C90099BB66 /* NSString+XQueryComponents.m in Sources */, + 4C0694B4182D40A60099BB66 /* NSDictionary+JHTTPHeaders.m in Sources */, + 4C0694B3182D40A60099BB66 /* NSMutableURLRequest+CreateRequestWithURLParams.m in Sources */, + 4C0694DD182D40C90099BB66 /* NSURL+XQueryComponents.m in Sources */, + 4C0694E6182D40E20099BB66 /* NSUrlLocationValidator.m in Sources */, 65802B57148BFC8F0040A93A /* JNHttpEncodingsFactory.m in Sources */, + 4C0694CF182D40BE0099BB66 /* JFFNetworkUploadProgressCallback.m in Sources */, 65802B59148BFC8F0040A93A /* JNGzipDecoder.m in Sources */, 65802B5B148BFC8F0040A93A /* JNStubDecoder.m in Sources */, 65802B5D148BFC8F0040A93A /* JNZipDecoder.m in Sources */, 65802B60148BFC8F0040A93A /* JNGzipErrorsLogger.m in Sources */, + 4C0694AF182D40A60099BB66 /* JHttpBodyBuilder.m in Sources */, 65802B62148BFC930040A93A /* JNConnectionsFactory.m in Sources */, CE29B5E415F5E823000A05B8 /* NSURL+URLWithLocation.m in Sources */, + 4C0694B1182D40A60099BB66 /* NSData+DataForHTTPPost.m in Sources */, 7E54F3C115FA25C6006F386A /* JHttpFlagChecker.mm in Sources */, + 4C0694C2182D40B10099BB66 /* JNetworkError.m in Sources */, + 4C0694CD182D40BE0099BB66 /* JFFNetworkAsyncOperationCallback.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1119,25 +1234,48 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4C0694ED182D41010099BB66 /* JFFURLConnectionParams.m in Sources */, 7E8F205014F949A000588C7D /* JNConnectionsFactory.m in Sources */, 7E8F205314F949A000588C7D /* JNHttpEncodingsFactory.m in Sources */, 7E8F205514F949A000588C7D /* JNGzipDecoder.m in Sources */, 7E8F205714F949A000588C7D /* JNStubDecoder.m in Sources */, + 4C0694DB182D40BE0099BB66 /* JFFLocalCookiesStorage.m in Sources */, + 4C0694BE182D40A70099BB66 /* NSURL+Cookies.m in Sources */, + 4C0694E9182D40E30099BB66 /* JFFNetworkAsyncOperation.m in Sources */, 7E8F205914F949A000588C7D /* JNZipDecoder.m in Sources */, 7E8F205C14F949A000588C7D /* JNGzipErrorsLogger.m in Sources */, + 4C0694C5182D40B20099BB66 /* JNConnectionMock.m in Sources */, + 4C0694C8182D40B20099BB66 /* JHttpError.m in Sources */, + 4C0694E4182D40CA0099BB66 /* NSDictionary+XQueryComponents.m in Sources */, + 4C069509182D412B0099BB66 /* JNSNetworkError.m in Sources */, 7E8F206014F949A000588C7D /* JFFFileManager.m in Sources */, + 4C0694C7182D40B20099BB66 /* JStreamError.m in Sources */, + 4C0694BC182D40A70099BB66 /* NSHTTPCookie+MatchesURL.m in Sources */, 7E8F206214F949A000588C7D /* NSMutableSet+DownloadManager.m in Sources */, 7E8F206414F949A000588C7D /* JFFTrafficCalculator.m in Sources */, 7E8F206714F949A000588C7D /* NSMutableDictionary+DownloadingFileInfo.m in Sources */, 7E8F206914F949A000588C7D /* JFFDownloadItem.m in Sources */, + 4C06950A182D412B0099BB66 /* JNSNoInternetNetworkError.m in Sources */, + 4C0694DA182D40BE0099BB66 /* NSString+RFC_2965.m in Sources */, + 4C0694D8182D40BE0099BB66 /* JFFNetworkResponseDataCallback.m in Sources */, + 4C0694E2182D40CA0099BB66 /* NSString+XQueryComponents.m in Sources */, + 4C0694C0182D40A70099BB66 /* NSDictionary+JHTTPHeaders.m in Sources */, + 4C0694BF182D40A70099BB66 /* NSMutableURLRequest+CreateRequestWithURLParams.m in Sources */, + 4C0694E3182D40CA0099BB66 /* NSURL+XQueryComponents.m in Sources */, + 4C0694EA182D40E30099BB66 /* NSUrlLocationValidator.m in Sources */, 7E8F207114F949A000588C7D /* JFFURLResponse.m in Sources */, + 4C0694D9182D40BE0099BB66 /* JFFNetworkUploadProgressCallback.m in Sources */, 7E8F207414F949A000588C7D /* JFFURLConnection.m in Sources */, 7E8F207614F949A000588C7D /* JNAbstractConnection.m in Sources */, 7E8F207814F949A000588C7D /* JNNsUrlConnection.m in Sources */, 7E8F207A14F949A000588C7D /* JFFNetworkBlocksFunctions.m in Sources */, + 4C0694BB182D40A70099BB66 /* JHttpBodyBuilder.m in Sources */, 7E8F207C14F949A000588C7D /* JFFUrlResponseLogger.m in Sources */, CE29B5E615F5E824000A05B8 /* NSURL+URLWithLocation.m in Sources */, + 4C0694BD182D40A70099BB66 /* NSData+DataForHTTPPost.m in Sources */, 7E54F3C315FA25C6006F386A /* JHttpFlagChecker.mm in Sources */, + 4C0694C6182D40B20099BB66 /* JNetworkError.m in Sources */, + 4C0694D7182D40BE0099BB66 /* JFFNetworkAsyncOperationCallback.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1314,6 +1452,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; @@ -1343,6 +1482,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; COPY_PHASE_STRIP = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; diff --git a/lib/JFFNetwork/JFFNetworkBlocksFunctions.m b/lib/JFFNetwork/JFFNetworkBlocksFunctions.m index 3ba8c5a..32e6c37 100644 --- a/lib/JFFNetwork/JFFNetworkBlocksFunctions.m +++ b/lib/JFFNetwork/JFFNetworkBlocksFunctions.m @@ -74,15 +74,15 @@ static JFFAsyncOperation privateGenericDataURLResponseLoader(JFFURLConnectionPar { NSCParameterAssert([params.url isKindOfClass:[NSURL class]]); params = [params copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { JFFAsyncOperation loader = privateGenericChunkedURLResponseLoader(params, responseAnalyzer); NSMutableData *responseData = [NSMutableData new]; progressCallback = [progressCallback copy]; - JFFAsyncOperationProgressHandler dataProgressCallback = ^void(id progressInfo) { + JFFAsyncOperationProgressCallback dataProgressCallback = ^void(id progressInfo) { if ([progressInfo isKindOfClass:[JFFNetworkResponseDataCallback class]]) { @@ -93,7 +93,14 @@ static JFFAsyncOperation privateGenericDataURLResponseLoader(JFFURLConnectionPar progressCallback(progressInfo); }; - JFFDidFinishAsyncOperationHandler doneCallbackWrapper; + /*NSArray *skipPt = @[@"profile/profileapi/changes", @"/info/api/report", @"/api/addDeviceProfileId"]; + + if ([skipPt all:^BOOL(id object) { + return ![[params.url description] containsString:object]; + }])*/ + //NSLog(@"start url: %@", params.url); + + JFFDidFinishAsyncOperationCallback doneCallbackWrapper; if (doneCallback) { doneCallback = [doneCallback copy]; doneCallbackWrapper = ^void(id result, NSError *error) { @@ -101,11 +108,16 @@ static JFFAsyncOperation privateGenericDataURLResponseLoader(JFFURLConnectionPar if ([responseData length] == 0 && !error) { NSLog(@"!!!WARNING!!! request with params: %@ got an empty reponse", params); } + /*if ([skipPt all:^BOOL(id object) { + return ![[params.url description] containsString:object]; + }]) + //NSLog(@"done url: %@ response: %@ \n \n", params.url, [responseData toString]);*/ + //NSLog(@"done url: %@", params.url); doneCallback(result?responseData:nil, error); }; } - return loader(dataProgressCallback, cancelCallback, doneCallbackWrapper); + return loader(dataProgressCallback, stateCallback, doneCallbackWrapper); }; } diff --git a/lib/JFFNetwork/JFFNetworkFW/JFFNetworkFW-Prefix.pch b/lib/JFFNetwork/JFFNetworkFW/JFFNetworkFW-Prefix.pch index 9f74cb1..90d718d 100644 --- a/lib/JFFNetwork/JFFNetworkFW/JFFNetworkFW-Prefix.pch +++ b/lib/JFFNetwork/JFFNetworkFW/JFFNetworkFW-Prefix.pch @@ -1,5 +1,4 @@ #ifdef __OBJC__ - #import #import #import diff --git a/lib/JFFNetwork/JFFNetworkMacOS/JFFNetworkMacOS-Prefix.pch b/lib/JFFNetwork/JFFNetworkMacOS/JFFNetworkMacOS-Prefix.pch index 25f2284..07a9af1 100644 --- a/lib/JFFNetwork/JFFNetworkMacOS/JFFNetworkMacOS-Prefix.pch +++ b/lib/JFFNetwork/JFFNetworkMacOS/JFFNetworkMacOS-Prefix.pch @@ -3,8 +3,8 @@ // #ifdef __OBJC__ - #import + #import #import - + #include #endif diff --git a/lib/JFFNetwork/JFFURLConnectionParams.h b/lib/JFFNetwork/JFFURLConnectionParams.h index 4b6d6b9..310316b 100644 --- a/lib/JFFNetwork/JFFURLConnectionParams.h +++ b/lib/JFFNetwork/JFFURLConnectionParams.h @@ -6,7 +6,7 @@ typedef NSInputStream *(^JFFInputStreamBuilder)(void); @class JFFLocalCookiesStorage; -@interface JFFURLConnectionParams : NSObject +@interface JFFURLConnectionParams : NSObject @property (nonatomic) NSURL *url; @property (nonatomic) NSData *httpBody; diff --git a/lib/JFFNetwork/JNNsUrlConnection.m b/lib/JFFNetwork/JNNsUrlConnection.m index e511f71..79da17d 100644 --- a/lib/JFFNetwork/JNNsUrlConnection.m +++ b/lib/JFFNetwork/JNNsUrlConnection.m @@ -260,4 +260,19 @@ - (void)connection:(NSURLConnection *)connection self.didUploadDataBlock(progress); } +- (void)connection:(NSURLConnection *)connection +willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge +{ + if ([challenge previousFailureCount] == 0) { + NSURLCredential *newCredential = [NSURLCredential credentialWithUser:@"malygin" + password:@"sdftgb32" + persistence:NSURLCredentialPersistencePermanent]; + [challenge.sender useCredential:newCredential forAuthenticationChallenge:challenge]; + } else { + [challenge.sender cancelAuthenticationChallenge:challenge]; +// self.errorLabel.text = @"Invalid Username and/or Password"; +// self.imageView.image = [UIImage imageWithData:[[NSData alloc] init]]; + } +} + @end diff --git a/lib/JFFRestKit/JFFRestKit.xcodeproj/project.pbxproj b/lib/JFFRestKit/JFFRestKit.xcodeproj/project.pbxproj index ba6c4a7..8fc3052 100644 --- a/lib/JFFRestKit/JFFRestKit.xcodeproj/project.pbxproj +++ b/lib/JFFRestKit/JFFRestKit.xcodeproj/project.pbxproj @@ -318,6 +318,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; @@ -351,6 +352,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; COPY_PHASE_STRIP = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -496,6 +498,7 @@ 4C043A5C181E9D8300246A88 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/lib/JFFRestKit/JFFRestKit/JFFDataLoadersTools.m b/lib/JFFRestKit/JFFRestKit/JFFDataLoadersTools.m index ea5ae79..e6703a8 100755 --- a/lib/JFFRestKit/JFFRestKit/JFFDataLoadersTools.m +++ b/lib/JFFRestKit/JFFRestKit/JFFDataLoadersTools.m @@ -24,44 +24,20 @@ JFFAsyncOperation jTmpFileLoaderWithChunkedDataLoader(JFFAsyncOperation chunkedD { chunkedDataLoader = [chunkedDataLoader copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { NSString *fileName = [[NSUUID new] UUIDString]; NSString *filePath = [NSString cachesPathByAppendingPathComponent:fileName]; __block NSFileHandle *handle = nil; __block volatile BOOL canceled = NO; - //TODO work with file with dispatch_io_create + //TODO work with file with dispatch_io_create !!! //https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html#//apple_ref/c/func/dispatch_io_create - void (^closeFile)(void) = ^(void) { - - [handle closeFile]; - handle = nil; - }; - - __block void (^closeAndRemoveFile)(void) = ^(void) { - - canceled = YES; - - dispatch_queue_t fileQueue = queueForFileAtPath(fileName); - - dispatch_barrier_async(fileQueue, ^(void) { - - closeFile(); - - if (filePath) - [[NSFileManager defaultManager] removeItemAtPath:filePath - error:nil]; - - disposeQueueForFileAtPath(fileName); - }); - }; - progressCallback = [progressCallback copy]; - JFFAsyncOperationProgressHandler progressWrapperCallback = ^(NSData *dataChunk) { + JFFAsyncOperationProgressCallback progressWrapperCallback = ^(NSData *dataChunk) { NSCParameterAssert([dataChunk isKindOfClass:[NSData class]]); @@ -97,24 +73,31 @@ __block void (^closeAndRemoveFile)(void) = ^(void) { progressCallback(dataChunk); }; - cancelCallback = [cancelCallback copy]; - JFFCancelAsyncOperationHandler cancelWrapperCallback = ^(BOOL canceled) { - closeAndRemoveFile(); + stateCallback = [stateCallback copy]; + JFFAsyncOperationChangeStateCallback cancelWrapperCallback = ^(JFFAsyncOperationState state) { - if (cancelCallback) - cancelCallback(canceled); + if (stateCallback) + stateCallback(state); }; - JFFDidFinishAsyncOperationHandler doneWrapperCallback = ^(id response, NSError *error) { + JFFDidFinishAsyncOperationCallback doneWrapperCallback = ^(id response, NSError *error) { id result = response?filePath:nil; - if (response) { + canceled = [error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]]; + + if (response || canceled) { dispatch_queue_t writerQueue = queueForFileAtPath(fileName); dispatch_barrier_sync(writerQueue, ^(void) { - closeFile(); + [handle closeFile]; + handle = nil; + + if (filePath && canceled) + [[NSFileManager defaultManager] removeItemAtPath:filePath + error:nil]; + disposeQueueForFileAtPath(fileName); }); } diff --git a/lib/JFFRestKit/JFFRestKit/JFFSmartUrlDataLoader.m b/lib/JFFRestKit/JFFRestKit/JFFSmartUrlDataLoader.m index b08dd2a..78007b4 100644 --- a/lib/JFFRestKit/JFFRestKit/JFFSmartUrlDataLoader.m +++ b/lib/JFFRestKit/JFFRestKit/JFFSmartUrlDataLoader.m @@ -66,7 +66,7 @@ static JFFAsyncOperationBinder dataLoaderWithCachedResultBinder(BOOL doesNotIgno JFFDidFinishAsyncOperationHook finishCallbackHook = ^(NSData* srvResponse, NSError* error, - JFFDidFinishAsyncOperationHandler doneCallback) { + JFFDidFinishAsyncOperationCallback doneCallback) { if (!doneCallback) return; @@ -147,9 +147,9 @@ JFFAsyncOperation jSmartDataLoaderWithCache(JFFSmartUrlDataLoaderFields *args) :[loadDataIdentifier description]; } - JFFAsyncOperation cachedDataLoader = ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + JFFAsyncOperation cachedDataLoader = ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { JFFAsyncOperationBinder dataLoaderBinder = dataLoaderWithCachedResultBinder(doesNotIgnoreFreshDataLoadFail, dataLoaderForIdentifier, @@ -169,7 +169,7 @@ JFFAsyncOperation jSmartDataLoaderWithCache(JFFSmartUrlDataLoaderFields *args) } return loader(progressCallback, - cancelCallback, + stateCallback, doneCallback); }; diff --git a/lib/JFFScheduler/Async/JFFAsyncOperationHelpers.h b/lib/JFFScheduler/Async/JFFAsyncOperationHelpers.h index 01c21ee..4536e1c 100644 --- a/lib/JFFScheduler/Async/JFFAsyncOperationHelpers.h +++ b/lib/JFFScheduler/Async/JFFAsyncOperationHelpers.h @@ -8,14 +8,28 @@ extern "C" { #endif - JFFAsyncOperation asyncOperationWithDelay(NSTimeInterval delay, NSTimeInterval leeway); + JFFAsyncOperation asyncOperationWithDelay(NSTimeInterval delay, + NSTimeInterval leeway); + + JFFAsyncOperation asyncOperationWithDelayWithDispatchQueue(NSTimeInterval delay, + NSTimeInterval leeway, + dispatch_queue_t callbacksQueue); JFFAsyncOperation asyncOperationAfterDelay(NSTimeInterval delay, NSTimeInterval leeway, JFFAsyncOperation loader); + JFFAsyncOperation asyncOperationAfterDelayWithDispatchQueue(NSTimeInterval delay, + NSTimeInterval leeway, + JFFAsyncOperation loader, + dispatch_queue_t callbacksQueue); + ///////////////////////// AUTO REPEAT CIRCLE //////////////////////// + JFFAsyncOperation repeatAsyncOperationWithDelayLoader(JFFAsyncOperation nativeLoader, + JFFContinueLoaderWithResult continueLoaderBuilder, + NSInteger maxRepeatCount); + JFFAsyncOperation repeatAsyncOperation(JFFAsyncOperation loader, JFFContinueLoaderWithResult continueLoaderBuilder, NSTimeInterval delay, diff --git a/lib/JFFScheduler/Async/JFFAsyncOperationHelpers.m b/lib/JFFScheduler/Async/JFFAsyncOperationHelpers.m index 128db96..da81c68 100644 --- a/lib/JFFScheduler/Async/JFFAsyncOperationHelpers.m +++ b/lib/JFFScheduler/Async/JFFAsyncOperationHelpers.m @@ -2,6 +2,7 @@ #import "JFFTimer.h" +#import #import #import @@ -17,59 +18,108 @@ @interface JFFAsyncOperationScheduler : NSObject @implementation JFFAsyncOperationScheduler { JFFTimer *_timer; + JFFDidFinishAsyncOperationCallback _finishCallback; @public NSTimeInterval _duration; NSTimeInterval _leeway; + dispatch_queue_t _callbacksQueue; } -- (void)asyncOperationWithResultHandler:(void(^)(id, NSError *))handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)startIfNeeds { - handler = [handler copy]; + if (_timer) + return; + + __unsafe_unretained JFFAsyncOperationScheduler *unsafeUnretainedSelf = self; _timer = [JFFTimer new]; [_timer addBlock:^(JFFCancelScheduledBlock cancel) { cancel(); - if (handler) - handler([JFFAsyncTimerResult new], nil); - } duration:_duration leeway:_leeway]; + + JFFDidFinishAsyncOperationCallback finishCallback = unsafeUnretainedSelf->_finishCallback; + + if (finishCallback) + finishCallback([JFFAsyncTimerResult new], nil); + } duration:_duration leeway:_leeway dispatchQueue:_callbacksQueue]; +} + +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback +{ + _finishCallback = finishCallback; + + [self startIfNeeds]; } -- (void)cancel:(BOOL)canceled +- (void)doTask:(JFFAsyncOperationHandlerTask)task { - _timer = nil; + switch (task) { + + case JFFAsyncOperationHandlerTaskUnsubscribe: + case JFFAsyncOperationHandlerTaskCancel: + case JFFAsyncOperationHandlerTaskSuspend: + { + _timer = nil; + break; + } + case JFFAsyncOperationHandlerTaskResume: + { + [self startIfNeeds]; + break; + } + default: + { + NSAssert1(NO, @"invalid parameter: %lu", (unsigned long)task); + break; + } + } } @end JFFAsyncOperation asyncOperationWithDelay(NSTimeInterval delay, NSTimeInterval leeway) +{ + NSCAssert([NSThread isMainThread], @"main thread expected"); + return asyncOperationWithDelayWithDispatchQueue(delay, leeway, dispatch_get_main_queue()); +} + +JFFAsyncOperation asyncOperationWithDelayWithDispatchQueue(NSTimeInterval delay, NSTimeInterval leeway, dispatch_queue_t callbacksQueue) { JFFAsyncOperationInstanceBuilder factory = ^id(void) { JFFAsyncOperationScheduler *asyncObject = [JFFAsyncOperationScheduler new]; - asyncObject->_duration = delay; - asyncObject->_leeway = leeway; + asyncObject->_duration = delay; + asyncObject->_leeway = leeway; + asyncObject->_callbacksQueue = callbacksQueue; return asyncObject; }; - return buildAsyncOperationWithAdapterFactory(factory); + return buildAsyncOperationWithAdapterFactoryWithDispatchQueue(factory, callbacksQueue); } JFFAsyncOperation asyncOperationAfterDelay(NSTimeInterval delay, NSTimeInterval leeway, JFFAsyncOperation loader) { - return sequenceOfAsyncOperations(asyncOperationWithDelay(delay, leeway), loader, nil); + NSCAssert([NSThread isMainThread], @"main thread expected"); + return asyncOperationAfterDelayWithDispatchQueue(delay, + leeway, + loader, + dispatch_get_main_queue()); } +JFFAsyncOperation asyncOperationAfterDelayWithDispatchQueue(NSTimeInterval delay, + NSTimeInterval leeway, + JFFAsyncOperation loader, + dispatch_queue_t callbacksQueue) +{ + return sequenceOfAsyncOperations(asyncOperationWithDelayWithDispatchQueue(delay, leeway, callbacksQueue), loader, nil); +} -//TODO test it, on leaks also -JFFAsyncOperation repeatAsyncOperation(JFFAsyncOperation nativeLoader, - JFFContinueLoaderWithResult continueLoaderBuilder, - NSTimeInterval delay, - NSTimeInterval leeway, - NSInteger maxRepeatCount) +JFFAsyncOperation repeatAsyncOperationWithDelayLoader(JFFAsyncOperation nativeLoader, + JFFContinueLoaderWithResult continueLoaderBuilder, + NSInteger maxRepeatCount) { NSCParameterAssert(nativeLoader );//can not be nil NSCParameterAssert(continueLoaderBuilder);//can not be nil @@ -77,39 +127,76 @@ JFFAsyncOperation repeatAsyncOperation(JFFAsyncOperation nativeLoader, nativeLoader = [nativeLoader copy]; continueLoaderBuilder = [continueLoaderBuilder copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { progressCallback = [progressCallback copy]; - cancelCallback = [cancelCallback copy]; + stateCallback = [stateCallback copy]; doneCallback = [doneCallback copy]; - __block JFFCancelAsyncOperation cancelBlockHolder; - + __block JFFAsyncOperationHandler currentLoaderHandlerHolder; __block JFFDidFinishAsyncOperationHook finishHookHolder; + __block JFFAsyncOperationProgressCallback progressCallbackHolder = [progressCallback copy]; + __block JFFAsyncOperationChangeStateCallback stateCallbackHolder = [stateCallback copy]; + __block JFFDidFinishAsyncOperationCallback doneCallbackkHolder = [doneCallback copy]; + + JFFAsyncOperationProgressCallback progressCallbackWrapper = ^(id progressInfo) { + + if (progressCallbackHolder) + progressCallbackHolder(progressInfo); + }; + JFFAsyncOperationChangeStateCallback stateCallbackWrapper = ^(JFFAsyncOperationState state) { + + if (stateCallbackHolder) + stateCallbackHolder(state); + }; + JFFDidFinishAsyncOperationCallback doneCallbackkWrapper = ^(id result, NSError *error) { + + if (doneCallbackkHolder) { + doneCallbackkHolder(result, error); + doneCallbackkHolder = nil; + } + }; + __block NSInteger currentLeftCount = maxRepeatCount; JFFDidFinishAsyncOperationHook finishCallbackHook = ^(id result, NSError *error, - JFFDidFinishAsyncOperationHandler doneCallback) { + JFFDidFinishAsyncOperationCallback doneCallback) { + + if ([error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]]) { + + finishHookHolder = nil; + doneCallbackkWrapper(nil, error); + + progressCallbackHolder = nil; + stateCallbackHolder = nil; + doneCallbackkHolder = nil; + return; + } JFFAsyncOperation newLoader = continueLoaderBuilder(result, error); + if (!newLoader || currentLeftCount == 0) { + finishHookHolder = nil; - if (doneCallback) - doneCallback(result, error); + doneCallbackkWrapper(result, error); + + progressCallbackHolder = nil; + stateCallbackHolder = nil; + doneCallbackkHolder = nil; + } else { + currentLeftCount = currentLeftCount > 0 ?currentLeftCount - 1 :currentLeftCount; - JFFAsyncOperation loader = asyncOperationWithFinishHookBlock(newLoader, - finishHookHolder); - loader = asyncOperationAfterDelay(delay, leeway, loader); + JFFAsyncOperation loader = asyncOperationWithFinishHookBlock(newLoader, finishHookHolder); - cancelBlockHolder = loader(progressCallback, cancelCallback, doneCallback); + currentLoaderHandlerHolder = loader(progressCallbackWrapper, stateCallbackWrapper, doneCallbackkWrapper); } }; @@ -118,15 +205,49 @@ JFFAsyncOperation repeatAsyncOperation(JFFAsyncOperation nativeLoader, JFFAsyncOperation loader = asyncOperationWithFinishHookBlock(nativeLoader, finishHookHolder); - cancelBlockHolder = loader(progressCallback, cancelCallback, doneCallback); + currentLoaderHandlerHolder = loader(progressCallback, stateCallbackWrapper, doneCallbackkWrapper); - return ^(BOOL canceled) { - finishHookHolder = nil; + return ^void(JFFAsyncOperationHandlerTask task) { + + if (task == JFFAsyncOperationHandlerTaskCancel) + finishHookHolder = nil; - if (!cancelBlockHolder) + if (!currentLoaderHandlerHolder) return; - cancelBlockHolder(canceled); - cancelBlockHolder = nil; + + if (task != JFFAsyncOperationHandlerTaskUnsubscribe) + currentLoaderHandlerHolder(task); + + if (task == JFFAsyncOperationHandlerTaskCancel) + currentLoaderHandlerHolder = nil; + + if (task == JFFAsyncOperationHandlerTaskUnsubscribe) { + + progressCallbackHolder = nil; + stateCallbackHolder = nil; + doneCallbackkHolder = nil; + } }; }; } + +JFFAsyncOperation repeatAsyncOperation(JFFAsyncOperation nativeLoader, + JFFContinueLoaderWithResult continueLoaderBuilder, + NSTimeInterval delay, + NSTimeInterval leeway, + NSInteger maxRepeatCount) +{ + continueLoaderBuilder = [continueLoaderBuilder copy]; + JFFContinueLoaderWithResult continueLoaderBuilderWrapper = ^JFFAsyncOperation(id result, NSError *error) { + + JFFAsyncOperation loader = continueLoaderBuilder(result, error); + if (!loader) + return nil; + + return sequenceOfAsyncOperations(asyncOperationWithDelay(delay, leeway), loader, nil); + }; + + return repeatAsyncOperationWithDelayLoader(nativeLoader, + continueLoaderBuilderWrapper, + maxRepeatCount); +} diff --git a/lib/JFFScheduler/JFFScheduler.xcodeproj/project.pbxproj b/lib/JFFScheduler/JFFScheduler.xcodeproj/project.pbxproj index 5661984..3215054 100755 --- a/lib/JFFScheduler/JFFScheduler.xcodeproj/project.pbxproj +++ b/lib/JFFScheduler/JFFScheduler.xcodeproj/project.pbxproj @@ -7,6 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + 4C1A0FB918257BA00020FBF6 /* JFFAsyncOperationHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4182DD181E64A800FF3CA0 /* JFFAsyncOperationHelpers.m */; }; + 4C1A0FBA18257BA00020FBF6 /* JFFTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4182E1181E6B6700FF3CA0 /* JFFTimer.m */; }; + 4C1A0FBB18257BA70020FBF6 /* JFFAsyncOperationHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4182DD181E64A800FF3CA0 /* JFFAsyncOperationHelpers.m */; }; + 4C1A0FBC18257BA70020FBF6 /* JFFAsyncOperationHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4182DD181E64A800FF3CA0 /* JFFAsyncOperationHelpers.m */; }; 4C4182DE181E64A800FF3CA0 /* JFFAsyncOperationHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C4182DC181E64A800FF3CA0 /* JFFAsyncOperationHelpers.h */; }; 4C4182DF181E64A800FF3CA0 /* JFFAsyncOperationHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4182DD181E64A800FF3CA0 /* JFFAsyncOperationHelpers.m */; }; 4C4182E2181E6B6700FF3CA0 /* JFFTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C4182E0181E6B6700FF3CA0 /* JFFTimer.h */; }; @@ -408,6 +412,7 @@ buildActionMask = 2147483647; files = ( 539103BF14A88BD6007315A3 /* NSObject+Timer.m in Sources */, + 4C1A0FBB18257BA70020FBF6 /* JFFAsyncOperationHelpers.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -416,6 +421,8 @@ buildActionMask = 2147483647; files = ( 65802B18148BFB920040A93A /* NSObject+Timer.m in Sources */, + 4C1A0FBA18257BA00020FBF6 /* JFFTimer.m in Sources */, + 4C1A0FB918257BA00020FBF6 /* JFFAsyncOperationHelpers.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -424,6 +431,7 @@ buildActionMask = 2147483647; files = ( 7E8F203814F9486E00588C7D /* NSObject+Timer.m in Sources */, + 4C1A0FBC18257BA70020FBF6 /* JFFAsyncOperationHelpers.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -489,6 +497,7 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; GCC_OPTIMIZATION_LEVEL = 0; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; @@ -509,6 +518,7 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; diff --git a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebook.m b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebook.m index 0475955..31b53cf 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebook.m +++ b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebook.m @@ -15,11 +15,11 @@ @implementation JFFFacebookGeneralRequestLoader NSDictionary *_parameters; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { - handler = [handler copy]; + finishCallback = [finishCallback copy]; FBRequest *fbRequest = [FBRequest requestForGraphPath:_graphPath]; fbRequest.session = _facebookSession; @@ -30,14 +30,16 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler FBGraphObject *graphObject, NSError *error) { - if (handler) - handler([graphObject copy], error); + if (finishCallback) + finishCallback([graphObject copy], error); }]; } -- (void)cancel:(BOOL)canceled +- (void)doTask:(JFFAsyncOperationHandlerTask)task { - [_requestConnection cancel]; + NSCParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); + if (task == JFFAsyncOperationHandlerTaskCancel) + [_requestConnection cancel]; } @end diff --git a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookDialog.m b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookDialog.m index a66497e..2fbbd98 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookDialog.m +++ b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookDialog.m @@ -14,23 +14,21 @@ @implementation JFFAsyncFacebookDialog NSString *_title; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { FBWebDialogHandler fbHandler = ^(FBWebDialogResult result, NSURL *resultURL, NSError *error) { - if (result == FBWebDialogResultDialogNotCompleted) { + if (finishCallback) { - if (cancelHandler) - cancelHandler(YES); - } - - if (handler) { + error = (result == FBWebDialogResultDialogNotCompleted) + ?[JFFAsyncOpFinishedByCancellationError new] + :nil; - handler(error?nil:@YES, nil); + finishCallback(error?nil:@YES, error); } }; @@ -41,6 +39,11 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler handler:fbHandler]; } +- (void)doTask:(JFFAsyncOperationHandlerTask)task +{ + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); +} + @end JFFAsyncOperation jffRequestFacebookDialog(FBSession *session, diff --git a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogin.m b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogin.m index f91aca3..b299080 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogin.m +++ b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogin.m @@ -17,11 +17,11 @@ @implementation JFFAsyncFacebookLogin #pragma mark - JFFAsyncOperationInterface -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { - handler = [handler copy]; + finishCallback = [finishCallback copy]; NSMutableSet *requstPermissions = [[NSMutableSet alloc] initWithArray:_permissions]; NSSet *currPermissions = [[NSSet alloc] initWithArray:_facebookSession.permissions]; @@ -35,7 +35,7 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler [self handleLoginWithSession:_facebookSession error:nil status:_facebookSession.state - handler:handler]; + finishCallback:finishCallback]; return; } } @@ -74,7 +74,7 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler NSError *libError = error?[JFFFacebookSDKErrors newFacebookSDKErrorsWithNativeError:error]:nil; - [weakSelf handleLoginWithSession:session error:libError status:status handler:handler]; + [weakSelf handleLoginWithSession:session error:libError status:status finishCallback:finishCallback]; }; [FBSession openActiveSessionWithReadPermissions:[requstPermissions allObjects] @@ -82,17 +82,22 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler completionHandler:fbHandler]; } +- (void)doTask:(JFFAsyncOperationHandlerTask)task +{ + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); +} + - (void)handleLoginWithSession:(FBSession *)session error:(NSError *)error status:(FBSessionState)status - handler:(JFFAsyncOperationInterfaceResultHandler)handler + finishCallback:(JFFDidFinishAsyncOperationCallback)finishCallback { if (!error && (!session.isOpen || !session.accessTokenData.accessToken)) { error = [JFFFacebookAuthorizeError new]; } - if (handler) { - handler(error?nil:session, error); + if (finishCallback) { + finishCallback(error?nil:session, error); } } diff --git a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLoginWithPublishPermissions.m b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLoginWithPublishPermissions.m index e7d7adc..da52f0e 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLoginWithPublishPermissions.m +++ b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLoginWithPublishPermissions.m @@ -17,11 +17,11 @@ @implementation JFFAsyncFacebookLoginWithPublishPermissions #pragma mark - JFFAsyncOperationInterface -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { - handler = [handler copy]; + finishCallback = [finishCallback copy]; NSMutableSet *requstPermissions = [[NSMutableSet alloc] initWithArray:_permissions]; NSSet *currPermissions = [[NSSet alloc] initWithArray:_facebookSession.permissions]; @@ -35,7 +35,7 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler [self handleLoginWithSession:_facebookSession error:nil status:_facebookSession.state - handler:handler]; + finishCallback:finishCallback]; return; } } @@ -52,7 +52,7 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler NSError *libError = error?[JFFFacebookSDKErrors newFacebookSDKErrorsWithNativeError:error]:nil; - [weakSelf handleLoginWithSession:session error:libError status:status handler:handler]; + [weakSelf handleLoginWithSession:session error:libError status:status finishCallback:finishCallback]; }; [FBSession openActiveSessionWithPublishPermissions:[requstPermissions allObjects] @@ -61,17 +61,22 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler completionHandler:fbHandler]; } +- (void)doTask:(JFFAsyncOperationHandlerTask)task +{ + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); +} + - (void)handleLoginWithSession:(FBSession *)session error:(NSError *)error status:(FBSessionState)status - handler:(JFFAsyncOperationInterfaceResultHandler)handler + finishCallback:(JFFDidFinishAsyncOperationCallback)finishCallback { if (!error && !session.isOpen) { error = [JFFFacebookAuthorizeError new]; } - if (handler) { - handler(error?nil:session, error); + if (finishCallback) { + finishCallback(error?nil:session, error); } } diff --git a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogout.m b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogout.m index 2fbcbee..c505517 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogout.m +++ b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogout.m @@ -7,7 +7,7 @@ @interface JFFAsyncFacebookLogout : NSObject @implementation JFFAsyncFacebookLogout { - JFFAsyncOperationInterfaceResultHandler _handler; + JFFDidFinishAsyncOperationCallback _finishCallback; @public FBSession *_session; BOOL _renewSystemAuthorization; @@ -23,11 +23,11 @@ - (void)logout [self performSelector:@selector(notifyFinished) withObject:nil afterDelay:1.]; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { - _handler = [handler copy]; + _finishCallback = [finishCallback copy]; if (_renewSystemAuthorization) { @@ -42,9 +42,14 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler [self logout]; } +- (void)doTask:(JFFAsyncOperationHandlerTask)task +{ + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); +} + - (void)notifyFinished { - _handler(@YES, nil); + _finishCallback(@YES, nil); } @end diff --git a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFFacebookPublishAccessRequestAdapter.m b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFFacebookPublishAccessRequestAdapter.m index 810c037..6e5119e 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFFacebookPublishAccessRequestAdapter.m +++ b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFFacebookPublishAccessRequestAdapter.m @@ -17,11 +17,11 @@ @implementation JFFFacebookPublishAccessRequestAdapter #pragma mark - JFFAsyncOperationInterface -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { - handler = [handler copy]; + finishCallback = [finishCallback copy]; BOOL hasAllPermissions = [_permissions all:^BOOL(NSString *permission) { @@ -32,7 +32,7 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler [self handleLoginWithSession:_session error:nil - handler:handler]; + finishCallback:finishCallback]; return; } @@ -45,7 +45,7 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler [self handleLoginWithSession:session error:libError - handler:handler]; + finishCallback:finishCallback]; }; [_session requestNewPublishPermissions:_permissions @@ -69,7 +69,7 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler [weakSelf handleLoginWithSession:session error:libError - handler:handler]; + finishCallback:finishCallback]; }; [FBSession openActiveSessionWithPublishPermissions:_permissions @@ -78,15 +78,20 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler completionHandler:fbHandler]; } +- (void)doTask:(JFFAsyncOperationHandlerTask)task +{ + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); +} + - (void)handleLoginWithSession:(FBSession *)session error:(NSError *)error - handler:(JFFAsyncOperationInterfaceResultHandler)handler + finishCallback:(JFFDidFinishAsyncOperationCallback)finishCallback { if (!error && !session.isOpen) { error = [JFFFacebookRequestPublishingAccessError new]; } - if (handler) { - handler(error?nil:session, error); + if (finishCallback) { + finishCallback(error?nil:session, error); } } diff --git a/lib/JFFSocial/JFFSocial/Facebook/JFFSocialFacebook.h b/lib/JFFSocial/JFFSocial/Facebook/JFFSocialFacebook.h index 592c506..6b8ddf8 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/JFFSocialFacebook.h +++ b/lib/JFFSocial/JFFSocial/Facebook/JFFSocialFacebook.h @@ -2,7 +2,9 @@ #import -@class FBSession; +@class +UIImage, +FBSession; @interface JFFSocialFacebook : NSObject diff --git a/lib/JFFSocial/JFFSocial/Facebook/JFFSocialFacebook.m b/lib/JFFSocial/JFFSocial/Facebook/JFFSocialFacebook.m index c601d11..82b4307 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/JFFSocialFacebook.m +++ b/lib/JFFSocial/JFFSocial/Facebook/JFFSocialFacebook.m @@ -44,9 +44,9 @@ + (BOOL)isActiveFacebookSession + (JFFAsyncOperation)logoutLoaderWithRenewSystemAuthorization:(BOOL)renewSystemAuthorization { - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { FBSession *session = [FBSession activeSession]; @@ -55,7 +55,7 @@ + (JFFAsyncOperation)logoutLoaderWithRenewSystemAuthorization:(BOOL)renewSystemA :asyncOperationWithResult([NSNull new]); doneCallback = [doneCallback copy]; - JFFDidFinishAsyncOperationHandler doneCallbackWrapper = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallbackWrapper = ^(id result, NSError *error) { if (result) [self setFacebookSession:nil]; @@ -65,16 +65,16 @@ + (JFFAsyncOperation)logoutLoaderWithRenewSystemAuthorization:(BOOL)renewSystemA }; return loader(progressCallback, - cancelCallback, + stateCallback, doneCallbackWrapper); }; } + (JFFAsyncOperation)authFacebookSessionLoaderWithPermissions:(NSArray *)permissions { - JFFAsyncOperation loader = ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + JFFAsyncOperation loader = ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { //TODO split perrmissions, first login for "email" "birthday" //tthen for other ones @@ -87,7 +87,7 @@ + (JFFAsyncOperation)authFacebookSessionLoaderWithPermissions:(NSArray *)permiss JFFAsyncOperation loader = jffFacebookLogin(session, permissions); doneCallback = [doneCallback copy]; - JFFDidFinishAsyncOperationHandler doneCallbackWrapper = ^(FBSession *session, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallbackWrapper = ^(FBSession *session, NSError *error) { if (session) [self setFacebookSession:session]; @@ -96,7 +96,7 @@ + (JFFAsyncOperation)authFacebookSessionLoaderWithPermissions:(NSArray *)permiss doneCallback(session, error); }; - return loader(progressCallback, cancelCallback, doneCallbackWrapper); + return loader(progressCallback, stateCallback, doneCallbackWrapper); }; id mergeObject = @@ -109,9 +109,9 @@ + (JFFAsyncOperation)authFacebookSessionLoaderWithPermissions:(NSArray *)permiss + (JFFAsyncOperation)authFacebookSessionWithPublishPermissions:(NSArray *)permissions { - JFFAsyncOperation loader = ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + JFFAsyncOperation loader = ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { FBSession *session = [self facebookSession]; @@ -121,7 +121,7 @@ + (JFFAsyncOperation)authFacebookSessionWithPublishPermissions:(NSArray *)permis JFFAsyncOperation loader = jffFacebookLoginWithPublishPermissions(session, [currPermissions allObjects]); doneCallback = [doneCallback copy]; - JFFDidFinishAsyncOperationHandler doneCallbackWrapper = ^(FBSession *session, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallbackWrapper = ^(FBSession *session, NSError *error) { if (session) [self setFacebookSession:session]; @@ -130,7 +130,7 @@ + (JFFAsyncOperation)authFacebookSessionWithPublishPermissions:(NSArray *)permis doneCallback(session, error); }; - return loader(progressCallback, cancelCallback, doneCallbackWrapper); + return loader(progressCallback, stateCallback, doneCallbackWrapper); }; id mergeObject = diff --git a/lib/JFFSocial/JFFSocial/Facebook/Model/JFFSocialFacebookUser.h b/lib/JFFSocial/JFFSocial/Facebook/Model/JFFSocialFacebookUser.h index c3208e0..c07a7c6 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/Model/JFFSocialFacebookUser.h +++ b/lib/JFFSocial/JFFSocial/Facebook/Model/JFFSocialFacebookUser.h @@ -1,4 +1,5 @@ #import +#import @interface JFFSocialFacebookUser : NSObject diff --git a/lib/JFFSocial/JFFSocial/Foursquare/AsyncAdapters/JFFAsyncFoursquaerLogin.m b/lib/JFFSocial/JFFSocial/Foursquare/AsyncAdapters/JFFAsyncFoursquaerLogin.m index 5d332c7..35422f9 100644 --- a/lib/JFFSocial/JFFSocial/Foursquare/AsyncAdapters/JFFAsyncFoursquaerLogin.m +++ b/lib/JFFSocial/JFFSocial/Foursquare/AsyncAdapters/JFFAsyncFoursquaerLogin.m @@ -1,50 +1,21 @@ #import "JFFAsyncFoursquaerLogin.h" -#import - #import "JFFFoursquareSessionStorage.h" -//TODO remove this class -@interface JFFAsyncFoursquaerLogin : NSObject - -@property (copy, nonatomic) JFFCancelAsyncOperation cancelOperation; - -@end - -@implementation JFFAsyncFoursquaerLogin -{ - JFFCancelAsyncOperation _cancelOperation; -} - -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress -{ - handler = [handler copy]; - - UIApplication *application = [UIApplication sharedApplication]; - NSURL *url = [[JFFFoursquareSessionStorage authURLString] toURL]; - JFFAsyncOperation loader = [application asyncOperationWithApplicationURL:url]; - - _cancelOperation = loader(nil, nil, ^(id result, NSError *error) { - handler(result, error); - }); -} - -- (void)cancel:(BOOL)canceled -{ - if (_cancelOperation) { - _cancelOperation(canceled); - } -} - -@end +#import JFFAsyncOperation jffFoursquareLoginLoader(void) { - JFFAsyncOperationInstanceBuilder factory = ^id< JFFAsyncOperationInterface >() { - return [JFFAsyncFoursquaerLogin new]; + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + + UIApplication *application = [UIApplication sharedApplication]; + NSURL *url = [[JFFFoursquareSessionStorage authURLString] toURL]; + JFFAsyncOperation loader = [application asyncOperationWithApplicationURL:url]; + + return loader(progressCallback, + stateCallback, + doneCallback); }; - - return buildAsyncOperationWithAdapterFactory(factory); } \ No newline at end of file diff --git a/lib/JFFSocial/JFFSocial/Foursquare/FoursquareSession/JFFFoursquareSessionStorage.h b/lib/JFFSocial/JFFSocial/Foursquare/FoursquareSession/JFFFoursquareSessionStorage.h index 0eed4f2..fbab1a4 100644 --- a/lib/JFFSocial/JFFSocial/Foursquare/FoursquareSession/JFFFoursquareSessionStorage.h +++ b/lib/JFFSocial/JFFSocial/Foursquare/FoursquareSession/JFFFoursquareSessionStorage.h @@ -14,7 +14,7 @@ + (NSString *)accessTokenWithURL:(NSURL *)url; -- (void)openSessionWithHandler:(JFFDidFinishAsyncOperationHandler)hendler; +- (void)openSessionWithHandler:(JFFDidFinishAsyncOperationCallback)hendler; + (NSString *)redirectURI; diff --git a/lib/JFFSocial/JFFSocial/Foursquare/FoursquareSession/JFFFoursquareSessionStorage.m b/lib/JFFSocial/JFFSocial/Foursquare/FoursquareSession/JFFFoursquareSessionStorage.m index 2c087de..bc92554 100644 --- a/lib/JFFSocial/JFFSocial/Foursquare/FoursquareSession/JFFFoursquareSessionStorage.m +++ b/lib/JFFSocial/JFFSocial/Foursquare/FoursquareSession/JFFFoursquareSessionStorage.m @@ -2,6 +2,8 @@ #import "JFFFoursquareAuthURLError.h" +#import + #define FOURSQUARE_ACCESS_TOKEN_KEY @"FOURSQUARE_ACCESS_TOKEN_KEY" #define FOURSQUARE_AUTH_URL_FORMAT @"https://foursquare.com/oauth2/authenticate?client_id=%@&response_type=token&redirect_uri=%@" @@ -17,7 +19,7 @@ @interface JFFFoursquareSessionStorage () -@property (copy, nonatomic) JFFDidFinishAsyncOperationHandler authorizeHendler; +@property (copy, nonatomic) JFFDidFinishAsyncOperationCallback authorizeHendler; @end @@ -57,7 +59,7 @@ + (void)saveAccessToken:(NSString *)accessToken #pragma mark - Authorization -- (void)openSessionWithHandler:(JFFDidFinishAsyncOperationHandler)hendler +- (void)openSessionWithHandler:(JFFDidFinishAsyncOperationCallback)hendler { self.authorizeHendler = hendler; diff --git a/lib/JFFSocial/JFFSocial/Foursquare/JFFSocialFoursquare.h b/lib/JFFSocial/JFFSocial/Foursquare/JFFSocialFoursquare.h index 39fcdc8..f11839c 100644 --- a/lib/JFFSocial/JFFSocial/Foursquare/JFFSocialFoursquare.h +++ b/lib/JFFSocial/JFFSocial/Foursquare/JFFSocialFoursquare.h @@ -2,6 +2,8 @@ #import +@class UIImage; + @interface JFFSocialFoursquare : NSObject + (JFFAsyncOperation)authLoader; diff --git a/lib/JFFSocial/JFFSocial/Foursquare/JFFSocialFoursquare.m b/lib/JFFSocial/JFFSocial/Foursquare/JFFSocialFoursquare.m index b25ed62..f656779 100644 --- a/lib/JFFSocial/JFFSocial/Foursquare/JFFSocialFoursquare.m +++ b/lib/JFFSocial/JFFSocial/Foursquare/JFFSocialFoursquare.m @@ -16,14 +16,16 @@ #import "JFFFoursquareNotFoundUsersCheckinsError.h" +#import + @implementation JFFSocialFoursquare #pragma mark - Common + (JFFAsyncOperationBinder)serverResponseAnalyzer { - return ^JFFAsyncOperation (NSDictionary *response) - { + return ^JFFAsyncOperation(NSDictionary *response) { + return asyncOperationWithSyncOperation(^id(NSError *__autoreleasing *outError) { id result = [NSDictionary fqApiresponseDictWithDict:response error:outError]; return result; @@ -36,6 +38,7 @@ + (JFFAsyncOperationBinder)serverResponseAnalyzer + (JFFAsyncOperation)cachedAuthLoader { return asyncOperationWithSyncOperation(^id(NSError *__autoreleasing *outError) { + NSString *cachedAccessToken = [JFFFoursquareSessionStorage accessToken]; if (cachedAccessToken) { @@ -55,11 +58,11 @@ + (JFFAsyncOperation)authLoader { NSString *accessToken = [JFFFoursquareSessionStorage accessTokenWithURL:url]; if (accessToken) { + [JFFFoursquareSessionStorage saveAccessToken:accessToken]; return asyncOperationWithResult(accessToken); - } - else - { + } else { + return asyncOperationWithError([JFFFoursquareAuthInvalidAccessTokenError new]); } }; @@ -110,8 +113,8 @@ + (JFFAsyncOperation)checkinsLoaderWithUserId:(NSString *)userID limit:(NSIntege NSDictionary *params = @{ @"limit" : @(limit)}; - JFFAsyncOperationBinder checkinsBinder = ^JFFAsyncOperation (NSString *accessToken) - { + JFFAsyncOperationBinder checkinsBinder = ^JFFAsyncOperation(NSString *accessToken) { + return bindSequenceOfAsyncOperations(jffFoursquareRequestLoader(fqLoadCheckinsURL, @"GET", accessToken, params), asyncOperationBinderJsonDataParser(), [self serverResponseAnalyzer], @@ -126,8 +129,8 @@ + (JFFAsyncOperation)checkinsLoaderWithUserId:(NSString *)userID limit:(NSIntege + (JFFAsyncOperationBinder)checkinsParser { - return ^JFFAsyncOperation (NSDictionary *response) - { + return ^JFFAsyncOperation(NSDictionary *response) { + return asyncOperationWithSyncOperation(^id(NSError *__autoreleasing *outError) { NSArray *checkins = [NSArray fqCheckinsWithDict:response error:outError]; return checkins; @@ -262,15 +265,15 @@ + (JFFAsyncOperation)inviteUserLoader:(NSString *)userID text:(NSString *)text url:(NSString *)url { - JFFAsyncOperationBinder addPostBinder = ^JFFAsyncOperation(NSArray *checkins) - { - FoursquareCheckinsModel *lastCheckin = (([checkins count]>0)?checkins[0]:nil); + JFFAsyncOperationBinder addPostBinder = ^JFFAsyncOperation(NSArray *checkins) { + + FoursquareCheckinsModel *lastCheckin = [checkins firstObject]; if (!lastCheckin) { return asyncOperationWithError([JFFFoursquareNotFoundUsersCheckinsError new]); } // return [self addPostToCheckin:lastCheckin.checkinID withText:text url:url contentID:nil]; - return [self postComment:@"http://wishdates.com" toCheckin:lastCheckin.checkinID]; + return [self postComment:@"Just Comment )" toCheckin:lastCheckin.checkinID]; }; return bindSequenceOfAsyncOperations([self checkinsLoaderWithUserId:userID limit:1], addPostBinder, nil); diff --git a/lib/JFFSocial/JFFSocial/Instagram/JFFSocialInstagram.m b/lib/JFFSocial/JFFSocial/Instagram/JFFSocialInstagram.m index 3d8a6f3..06401fc 100644 --- a/lib/JFFSocial/JFFSocial/Instagram/JFFSocialInstagram.m +++ b/lib/JFFSocial/JFFSocial/Instagram/JFFSocialInstagram.m @@ -35,9 +35,9 @@ + (JFFAsyncOperation)userLoaderForForUserId:(NSString *)userId + (JFFAsyncOperation)instagramAccessTokenLoaderForCredentials:(JFFInstagramCredentials *)redentials { - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { JFFAsyncOperation accountLoader = [self authedUserLoaderWithCredentials:redentials]; @@ -51,26 +51,26 @@ + (JFFAsyncOperation)instagramAccessTokenLoaderForCredentials:(JFFInstagramCrede asyncOperation:loader]; return loader(progressCallback, - cancelCallback, + stateCallback, doneCallback); }; } + (JFFAsyncOperation)authedUserLoaderWithCredentials:(JFFInstagramCredentials *)redentials { - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { JFFAsyncOperation oAuthUrlLoader = codeURLLoader(redentials.redirectURI, redentials.clientId); JFFAsyncOperationBinder urlToCodeBinder = ^JFFAsyncOperation(NSURL *url) { NSDictionary *params = [[url query] dictionaryFromQueryComponents]; - NSArray* codeParams = params[@"code"]; + NSArray *codeParams = params[@"code"]; + + if ([codeParams count]==0) { - if ([codeParams count]==0) - { JFFInvalidInstagramResponseURLError *error = [JFFInvalidInstagramResponseURLError new]; error.url = url; return asyncOperationWithError(error); @@ -96,7 +96,7 @@ + (JFFAsyncOperation)authedUserLoaderWithCredentials:(JFFInstagramCredentials *) nil); return loader(progressCallback, - cancelCallback, + stateCallback, doneCallback); }; } diff --git a/lib/JFFSocial/JFFSocial/Instagram/Model/JFFInstagramMediaItemImage.h b/lib/JFFSocial/JFFSocial/Instagram/Model/JFFInstagramMediaItemImage.h index 65eb38a..dee31cc 100644 --- a/lib/JFFSocial/JFFSocial/Instagram/Model/JFFInstagramMediaItemImage.h +++ b/lib/JFFSocial/JFFSocial/Instagram/Model/JFFInstagramMediaItemImage.h @@ -1,4 +1,5 @@ #import +#import @interface JFFInstagramMediaItemImage : NSObject diff --git a/lib/JFFSocial/JFFSocial/Twitter/AsyncAdapters/JFFAsyncTwitterAccessRequest.m b/lib/JFFSocial/JFFSocial/Twitter/AsyncAdapters/JFFAsyncTwitterAccessRequest.m index 5a294ec..00e8669 100644 --- a/lib/JFFSocial/JFFSocial/Twitter/AsyncAdapters/JFFAsyncTwitterAccessRequest.m +++ b/lib/JFFSocial/JFFSocial/Twitter/AsyncAdapters/JFFAsyncTwitterAccessRequest.m @@ -9,11 +9,11 @@ @interface JFFAsyncTwitterAccessRequest : NSObject @implementation JFFAsyncTwitterAccessRequest -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { - handler = [handler copy]; + finishCallback = [finishCallback copy]; ACAccountStore *accountStore = [ACAccountStore new]; @@ -23,21 +23,26 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler options:nil completion:^(BOOL granted, NSError *error) { - if (!handler) + if (!finishCallback) return; if (error) { - handler(nil, error); + finishCallback(nil, error); } else { if (granted) { - handler([NSNull new], nil); + finishCallback([NSNull new], nil); } else { - handler(nil, [JFFTwitterAccountAccessNotGrantedError new]); + finishCallback(nil, [JFFTwitterAccountAccessNotGrantedError new]); } } }]; } +- (void)doTask:(JFFAsyncOperationHandlerTask)task +{ + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); +} + - (BOOL)isForeignThreadResultCallback { return YES; diff --git a/lib/JFFSocial/JFFSocial/Twitter/AsyncAdapters/JFFAsyncTwitterRequest.m b/lib/JFFSocial/JFFSocial/Twitter/AsyncAdapters/JFFAsyncTwitterRequest.m index da3027b..192f633 100644 --- a/lib/JFFSocial/JFFSocial/Twitter/AsyncAdapters/JFFAsyncTwitterRequest.m +++ b/lib/JFFSocial/JFFSocial/Twitter/AsyncAdapters/JFFAsyncTwitterRequest.m @@ -14,29 +14,34 @@ @implementation JFFAsyncTwitterRequest SLRequest *_request; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { [_request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { - if (!handler) + if (!finishCallback) return; if (error) { - handler(nil, error); + finishCallback(nil, error); } else { JFFTwitterResponse *result = [JFFTwitterResponse new]; result.responseData = responseData; result.urlResponse = urlResponse; - handler(result, nil); + finishCallback(result, nil); } }]; } +- (void)doTask:(JFFAsyncOperationHandlerTask)task +{ + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); +} + - (BOOL)isForeignThreadResultCallback { return YES; diff --git a/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.h b/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.h index ed0a87d..bb6d933 100644 --- a/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.h +++ b/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.h @@ -10,7 +10,7 @@ typedef void(^JFFSocialTwitterDidLoginCallback)(NSString *login); + (JFFAsyncOperation)authorizationLoader; -+ (JFFAsyncOperation)usersNearbyCoordinatesLantitude:(double)lantitude longitude:(double)longitude; ++ (JFFAsyncOperation)usersNearbyCoordinatesLantitude:(double)latitude longitude:(double)longitude; + (JFFAsyncOperation)followersLoader; diff --git a/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.m b/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.m index 2f2efdf..4756b54 100644 --- a/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.m +++ b/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.m @@ -36,9 +36,9 @@ - (NSCache *)cache - (JFFAsyncOperation)loaderToSetData:(NSData *)data forKey:(NSString *)key { - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { JFFResponseDataWithUpdateData *cachedData = [JFFResponseDataWithUpdateData new]; @@ -50,15 +50,15 @@ - (JFFAsyncOperation)loaderToSetData:(NSData *)data forKey:(NSString *)key if (doneCallback) doneCallback([NSNull new], nil); - return JFFStubCancelAsyncOperationBlock; + return JFFStubHandlerAsyncOperationBlock; }; } - (JFFAsyncOperation)cachedDataLoaderForKey:(NSString *)key { - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { if (doneCallback) { @@ -66,7 +66,7 @@ - (JFFAsyncOperation)cachedDataLoaderForKey:(NSString *)key doneCallback(cachedData, cachedData?nil:[JFFSilentError newErrorWithDescription:@"no data for key"]); } - return JFFStubCancelAsyncOperationBlock; + return JFFStubHandlerAsyncOperationBlock; }; } @@ -203,9 +203,9 @@ + (JFFAsyncOperation)generalTwitterApiDataLoaderWithURLString:(NSString *)urlStr { ayncAnalyzer = [ayncAnalyzer copy]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { id loadDataIdentifier = @{ @@ -236,7 +236,7 @@ + (JFFAsyncOperation)generalTwitterApiDataLoaderWithURLString:(NSString *)urlStr } return loader(progressCallback, - cancelCallback, + stateCallback, doneCallback); }; } @@ -253,13 +253,13 @@ + (JFFAsyncOperation)generalTwitterApiDataLoaderWithURLString:(NSString *)urlStr cacheDataLifeTimeInSeconds:0.]; } -+ (JFFAsyncOperation)usersNearbyCoordinatesLantitude:(double)lantitude longitude:(double)longitude ++ (JFFAsyncOperation)usersNearbyCoordinatesLantitude:(double)latitude longitude:(double)longitude { static NSString *geocodeFormat = @"%f,%f,100mi"; id params = @{ @"q" : @"", - @"geocode" : [[NSString alloc] initWithFormat:geocodeFormat, lantitude, longitude], + @"geocode" : [[NSString alloc] initWithFormat:geocodeFormat, latitude, longitude], @"count" : @"100", @"include_entities" : @"true", @"result_type" : @"recent", @@ -321,7 +321,7 @@ + (JFFAsyncOperation)sendDirectMessage:(NSString *)message requestMethod:SLRequestMethodPOST ayncAnalyzer:asyncJSONObjectToDirectTweet()]; - loader = asyncOperationWithFinishHookBlock(loader, ^(id result, NSError *error, JFFDidFinishAsyncOperationHandler doneCallback) { + loader = asyncOperationWithFinishHookBlock(loader, ^(id result, NSError *error, JFFDidFinishAsyncOperationCallback doneCallback) { if (!doneCallback) return; diff --git a/lib/JFFStoreKit/JFFStoreKit.xcodeproj/project.pbxproj b/lib/JFFStoreKit/JFFStoreKit.xcodeproj/project.pbxproj index ff26fc8..46befeb 100644 --- a/lib/JFFStoreKit/JFFStoreKit.xcodeproj/project.pbxproj +++ b/lib/JFFStoreKit/JFFStoreKit.xcodeproj/project.pbxproj @@ -29,6 +29,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 4C14CAA61827E47D00371E39 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CEBCBDEB1619A425007F805F /* JFFAsyncOperations.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4C1A0F8D182577BE0020FBF6; + remoteInfo = JFFAsyncOperationsMacOS; + }; CEBCBDF81619A426007F805F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CEBCBDEB1619A425007F805F /* JFFAsyncOperations.xcodeproj */; @@ -183,6 +190,7 @@ CEBCBDF91619A426007F805F /* libJFFAsyncOperations.a */, CEBCBDFB1619A426007F805F /* libJFFAsyncOperations-clang.a */, CEBCBDFD1619A426007F805F /* JFFAsyncOperationsFW.framework */, + 4C14CAA71827E47D00371E39 /* libJFFAsyncOperationsMacOS.a */, ); name = Products; sourceTree = ""; @@ -381,6 +389,13 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + 4C14CAA71827E47D00371E39 /* libJFFAsyncOperationsMacOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libJFFAsyncOperationsMacOS.a; + remoteRef = 4C14CAA61827E47D00371E39 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; CEBCBDF91619A426007F805F /* libJFFAsyncOperations.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -523,6 +538,7 @@ CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; COPY_PHASE_STRIP = NO; @@ -554,6 +570,7 @@ CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; COPY_PHASE_STRIP = YES; diff --git a/lib/JFFStoreKit/JFFStoreKit/Errors/JFFStoreKitCanNoLoadProductError.m b/lib/JFFStoreKit/JFFStoreKit/Errors/JFFStoreKitCanNoLoadProductError.m index 25b458e..e7799f1 100644 --- a/lib/JFFStoreKit/JFFStoreKit/Errors/JFFStoreKitCanNoLoadProductError.m +++ b/lib/JFFStoreKit/JFFStoreKit/Errors/JFFStoreKitCanNoLoadProductError.m @@ -18,6 +18,14 @@ - (instancetype)copyWithZone:(NSZone *)zone return copy; } +- (NSString *)errorLogDescription +{ + return [[NSString alloc] initWithFormat:@"%@ : %@ productIdentifier:%@", + [self class], + [self localizedDescription], + _productIdentifier]; +} + - (void)writeErrorWithJFFLogger { } diff --git a/lib/JFFStoreKit/JFFStoreKit/Errors/JFFStoreKitTransactionStateFailedError.m b/lib/JFFStoreKit/JFFStoreKit/Errors/JFFStoreKitTransactionStateFailedError.m index 355c63d..7e7f4da 100644 --- a/lib/JFFStoreKit/JFFStoreKit/Errors/JFFStoreKitTransactionStateFailedError.m +++ b/lib/JFFStoreKit/JFFStoreKit/Errors/JFFStoreKitTransactionStateFailedError.m @@ -1,5 +1,14 @@ #import "JFFStoreKitTransactionStateFailedError.h" +@implementation NSError (iTunesStoreError) + +- (BOOL)isItunesStoreError +{ + return [@"Cannot connect to iTunes Store" isEqualToString:self.description]; +} + +@end + @implementation JFFStoreKitTransactionStateFailedError - (instancetype)init @@ -19,8 +28,26 @@ - (instancetype)copyWithZone:(NSZone *)zone return copy; } +- (NSString *)errorLogDescription +{ + return [[NSString alloc] initWithFormat:@"%@ : %@, domain : %@ code : %ld transaction nativeError : %@ payment : %@", + [self class], + [self localizedDescription], + [self domain], + (long)[self code], + _transaction.error, + _transaction.payment.productIdentifier + ]; +} + - (void)writeErrorWithJFFLogger { + if ([_transaction.error isItunesStoreError]) { + + [super writeErrorToNSLog]; + return; + } + [super writeErrorWithJFFLogger]; } @end diff --git a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKFinishTransaction.m b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKFinishTransaction.m index 492cd84..cb8e094 100644 --- a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKFinishTransaction.m +++ b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKFinishTransaction.m @@ -17,13 +17,13 @@ @implementation JFFAsyncSKFinishTransaction SKPaymentQueue *_queue; SKPaymentTransaction *_transaction; BOOL _addedToObservers; - JFFAsyncOperationInterfaceResultHandler _handler; + JFFDidFinishAsyncOperationCallback _finishCallback; } - (void)dealloc { [self unsubscribeFromObservervation]; - _handler = nil; + _finishCallback = nil; } - (void)doNothing:(id)objetc @@ -53,16 +53,16 @@ + (instancetype)newFAsyncSKFinishTransactionWithTransaction:(SKPaymentTransactio return result; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { if (![SKPaymentQueue canMakePayments]) { - handler(nil, [JFFStoreKitDisabledError new]); + finishCallback(nil, [JFFStoreKitDisabledError new]); return; } - _handler = [handler copy]; + _finishCallback = [finishCallback copy]; [_queue finishTransaction:_transaction]; @@ -74,10 +74,18 @@ - (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler } } +- (void)doTask:(JFFAsyncOperationHandlerTask)task +{ + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); + + if (task == JFFAsyncOperationHandlerTaskUnsubscribe) + [self unsubscribeFromObservervation]; +} + - (void)finishOperation { [self unsubscribeFromObservervation]; - _handler(_transaction, nil); + _finishCallback(_transaction, nil); } #pragma mark SKPaymentTransactionObserver @@ -101,8 +109,9 @@ - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)tran // Optionally, display an error here. } JFFStoreKitTransactionStateFailedError *error = [JFFStoreKitTransactionStateFailedError new]; + error.transaction = _transaction; [self unsubscribeFromObservervation]; - _handler(nil, error); + _finishCallback(nil, error); break; } default: diff --git a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPaymentQueue.m b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPaymentQueue.m index 7aeb30f..97205b4 100644 --- a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPaymentQueue.m +++ b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPaymentQueue.m @@ -16,13 +16,13 @@ @implementation JFFAsyncSKPaymentAdapter SKPaymentQueue *_queue; SKPayment *_payment; BOOL _addedToObservers; - JFFAsyncOperationInterfaceResultHandler _handler; + JFFDidFinishAsyncOperationCallback _finishCallback; } - (void)dealloc { [self unsubscribeFromObservervation]; - _handler = nil; + _finishCallback = nil; } - (void)doNothing:(id)objetc @@ -52,29 +52,37 @@ + (instancetype)newAsyncSKPaymentAdapterWithRequest:(SKPayment *)payment return result; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { if (![SKPaymentQueue canMakePayments]) { - handler(nil, [JFFStoreKitDisabledError new]); + finishCallback(nil, [JFFStoreKitDisabledError new]); return; } - _handler = [handler copy]; + _finishCallback = [finishCallback copy]; SKPaymentTransaction *transaction = [self ownPurchasedTransaction]; if (transaction) { [self unsubscribeFromObservervation]; - _handler(transaction, nil); + _finishCallback(transaction, nil); } else { [_queue addPayment:_payment]; } } +- (void)doTask:(JFFAsyncOperationHandlerTask)task +{ + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); + + if (task == JFFAsyncOperationHandlerTaskUnsubscribe) + [self unsubscribeFromObservervation]; +} + - (SKPaymentTransaction *)ownPurchasedTransaction { //SKPayment @@ -100,7 +108,7 @@ - (SKPaymentTransaction *)ownTransactionForTransactions:(NSArray *)transactions - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { - if (!_handler) { + if (!_finishCallback) { return; } @@ -118,7 +126,7 @@ - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)tran case SKPaymentTransactionStatePurchased: { [self unsubscribeFromObservervation]; - _handler(transaction, nil); + _finishCallback(transaction, nil); break; } case SKPaymentTransactionStateFailed: @@ -129,13 +137,13 @@ - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)tran JFFStoreKitTransactionStateFailedError *error = [JFFStoreKitTransactionStateFailedError new]; error.transaction = transaction; [self unsubscribeFromObservervation]; - _handler(nil, error); + _finishCallback(nil, error); break; } case SKPaymentTransactionStateRestored: { [self unsubscribeFromObservervation]; - _handler(transaction, nil); + _finishCallback(transaction, nil); break; } default: diff --git a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPendingTransactions.m b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPendingTransactions.m index 233a35c..8d75ed2 100644 --- a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPendingTransactions.m +++ b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPendingTransactions.m @@ -2,8 +2,6 @@ #import "JFFStoreKitDisabledError.h" -#import - static NSString *const mergeObject = @"c8e5abce-1ab9-11e3-9a3b-f23c91aec05e"; @interface JFFAsyncSKPendingTransactions : NSObject < @@ -16,14 +14,13 @@ @implementation JFFAsyncSKPendingTransactions { SKPaymentQueue *_queue; BOOL _addedToObservers; - JFFAsyncOperationInterfaceResultHandler _handler; - JFFTimer *_timer; + JFFDidFinishAsyncOperationCallback _finishCallback; } - (void)dealloc { [self unsubscribeFromObservervation]; - _handler = nil; + _finishCallback = nil; } - (void)doNothing:(id)objetc @@ -52,40 +49,34 @@ + (instancetype)newAsyncSKPendingTransactions return result; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { if (![SKPaymentQueue canMakePayments]) { - handler(nil, [JFFStoreKitDisabledError new]); + finishCallback(nil, [JFFStoreKitDisabledError new]); return; } - _handler = [handler copy]; + _finishCallback = [finishCallback copy]; [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; +} + +- (void)doTask:(JFFAsyncOperationHandlerTask)task +{ + NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); - _timer = [JFFTimer new]; - - __weak JFFAsyncSKPendingTransactions *weakSelf = self; - - JFFScheduledBlock actionBlock = ^(JFFCancelScheduledBlock cancel) { - - [weakSelf finishWithTransactions:@[]]; - cancel(); - }; - - [_timer addBlock:actionBlock duration:0.2 leeway:0.02]; + if (task == JFFAsyncOperationHandlerTaskUnsubscribe) + [self unsubscribeFromObservervation]; } - (void)finishWithTransactions:(NSArray *)transactions { transactions = [self pendingTransactionsForTransactions:transactions]?:@[]; - if (_handler) - _handler(transactions, nil); - - _timer = nil; + if (_finishCallback) + _finishCallback(transactions, nil); } - (NSArray *)pendingTransactionsForTransactions:(NSArray *)transactions @@ -102,7 +93,7 @@ - (NSArray *)pendingTransactionsForTransactions:(NSArray *)transactions - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { - if (!_handler) { + if (!_finishCallback) { return; } @@ -115,15 +106,14 @@ - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)tran - (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { - //TODO finish here operation + if (_finishCallback) + _finishCallback(@[], nil); } - (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error { - if (_handler) - _handler(nil, error); - - _timer = nil; + if (_finishCallback) + _finishCallback(nil, error); } @end diff --git a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKProductRequest.m b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKProductRequest.m index 58a0303..b3a65ec 100644 --- a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKProductRequest.m +++ b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKProductRequest.m @@ -15,7 +15,7 @@ @interface JFFAsyncSKProductsRequestAdapter : NSObject < @implementation JFFAsyncSKProductsRequestAdapter { SKProductsRequest *_request; - JFFAsyncOperationInterfaceResultHandler _handler; + JFFDidFinishAsyncOperationCallback _finishCallback; SKProductsResponse *_response; NSString *_productIdentifier; } @@ -36,18 +36,20 @@ - (instancetype)initWithProductIdentifier:(NSString *)productIdentifier return self; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { - _handler = [handler copy]; + _finishCallback = [finishCallback copy]; [_request start]; } -- (void)cancel:(BOOL)canceled +- (void)doTask:(JFFAsyncOperationHandlerTask)task { - if (canceled) + NSCParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); + + if (task == JFFAsyncOperationHandlerTaskCancel) [_request cancel]; } @@ -69,7 +71,7 @@ - (void)requestDidFinish:(SKRequest *)request product = [products lastObject]; } - _handler(product, nil); + _finishCallback(product, nil); } else { NSString *invalidIdentifier = [_response.invalidProductIdentifiers lastObject]; @@ -79,14 +81,14 @@ - (void)requestDidFinish:(SKRequest *)request :[JFFStoreKitCanNoLoadProductError new]; error.productIdentifier = _productIdentifier; - _handler(nil, error); + _finishCallback(nil, error); } } - (void)request:(SKRequest *)request didFailWithError:(NSError *)error { error = error?:[[JFFSilentError alloc] initWithDescription:@"SKRequest no inet connection"]; - _handler(nil, error); + _finishCallback(nil, error); } #pragma mark SKProductsRequestDelegate diff --git a/lib/JFFStoreKit/JFFStoreKit/asyncPaymentOperations.h b/lib/JFFStoreKit/JFFStoreKit/asyncPaymentOperations.h index d963efe..80356d1 100644 --- a/lib/JFFStoreKit/JFFStoreKit/asyncPaymentOperations.h +++ b/lib/JFFStoreKit/JFFStoreKit/asyncPaymentOperations.h @@ -7,6 +7,7 @@ + (JFFAsyncOperation)purcheserWithProductIdentifier:(NSString *)productIdentifier srvCallback:(JFFAsyncOperationBinder)srvCallback; +//should return [srvResult, transaction] in doneCallback + (JFFAsyncOperation)purcheserWithProduct:(SKProduct *)product srvCallback:(JFFAsyncOperationBinder)srvCallback; diff --git a/lib/JFFStoreKit/JFFStoreKit/asyncPaymentOperations.m b/lib/JFFStoreKit/JFFStoreKit/asyncPaymentOperations.m index 7a8cf49..364eb0f 100644 --- a/lib/JFFStoreKit/JFFStoreKit/asyncPaymentOperations.m +++ b/lib/JFFStoreKit/JFFStoreKit/asyncPaymentOperations.m @@ -22,12 +22,13 @@ + (JFFAsyncOperation)purcheserWithProductIdentifier:(NSString *)productIdentifie nil); } +//should return [srvResult, transaction] in doneCallback + (JFFAsyncOperation)purcheserWithProduct:(SKProduct *)product srvCallback:(JFFAsyncOperationBinder)srvCallback { - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { SKPayment *payment = [SKPayment paymentWithProduct:product]; JFFAsyncOperation paymentloader = asyncOperationWithSKPayment(payment); @@ -39,7 +40,7 @@ + (JFFAsyncOperation)purcheserWithProduct:(SKProduct *)product JFFAsyncOperationBinder removeTransaction = ^JFFAsyncOperation(id srvResult) { JFFAsyncOperation finishTransaction = asyncOperationFinishTransaction(transaction); - return sequenceOfAsyncOperations(finishTransaction, asyncOperationWithResult(srvResult), nil); + return sequenceOfAsyncOperations(finishTransaction, asyncOperationWithResult(@[srvResult, transaction]), nil); }; return bindSequenceOfAsyncOperations(srvLoader, @@ -51,7 +52,7 @@ + (JFFAsyncOperation)purcheserWithProduct:(SKProduct *)product srvPaymentBinder, nil); - return loader(progressCallback, cancelCallback, doneCallback); + return loader(progressCallback, stateCallback, doneCallback); }; } diff --git a/lib/JFFTestTools/JFFTestTools.xcodeproj/project.pbxproj b/lib/JFFTestTools/JFFTestTools.xcodeproj/project.pbxproj index 1eba2fd..fd5c9b7 100644 --- a/lib/JFFTestTools/JFFTestTools.xcodeproj/project.pbxproj +++ b/lib/JFFTestTools/JFFTestTools.xcodeproj/project.pbxproj @@ -15,6 +15,8 @@ 1BE054441548273000270B58 /* GHAsyncTestCase+MainThreadTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BE054421548273000270B58 /* GHAsyncTestCase+MainThreadTests.m */; }; 1BE054B0154828F000270B58 /* NSObject+InstancesCount.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BE054AE154828EF00270B58 /* NSObject+InstancesCount.h */; }; 1BE054B1154828F000270B58 /* NSObject+InstancesCount.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BE054AF154828EF00270B58 /* NSObject+InstancesCount.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 4CDB8DD9182BBBEA00C5BFA3 /* JFFAsyncOperationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CDB8DD7182BBBEA00C5BFA3 /* JFFAsyncOperationManager.h */; }; + 4CDB8DDA182BBBEA00C5BFA3 /* JFFAsyncOperationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CDB8DD8182BBBEA00C5BFA3 /* JFFAsyncOperationManager.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -28,6 +30,8 @@ 1BE054421548273000270B58 /* GHAsyncTestCase+MainThreadTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GHAsyncTestCase+MainThreadTests.m"; sourceTree = ""; }; 1BE054AE154828EF00270B58 /* NSObject+InstancesCount.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+InstancesCount.h"; sourceTree = ""; }; 1BE054AF154828EF00270B58 /* NSObject+InstancesCount.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+InstancesCount.m"; sourceTree = ""; }; + 4CDB8DD7182BBBEA00C5BFA3 /* JFFAsyncOperationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationManager.h; sourceTree = ""; }; + 4CDB8DD8182BBBEA00C5BFA3 /* JFFAsyncOperationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOperationManager.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -70,6 +74,8 @@ 1BE05430154826DA00270B58 /* JFFTestTools */ = { isa = PBXGroup; children = ( + 4CDB8DD7182BBBEA00C5BFA3 /* JFFAsyncOperationManager.h */, + 4CDB8DD8182BBBEA00C5BFA3 /* JFFAsyncOperationManager.m */, 1BE054AE154828EF00270B58 /* NSObject+InstancesCount.h */, 1BE054AF154828EF00270B58 /* NSObject+InstancesCount.m */, 1BE054411548273000270B58 /* GHAsyncTestCase+MainThreadTests.h */, @@ -100,6 +106,7 @@ 1BE054431548273000270B58 /* GHAsyncTestCase+MainThreadTests.h in Headers */, 1BE054B0154828F000270B58 /* NSObject+InstancesCount.h in Headers */, 1B160AD7154BE3F200702B1D /* testTools.h in Headers */, + 4CDB8DD9182BBBEA00C5BFA3 /* JFFAsyncOperationManager.h in Headers */, 1B2D8B52154BF28100360296 /* JFFTestTools.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; @@ -155,6 +162,7 @@ buildActionMask = 2147483647; files = ( 1BE054441548273000270B58 /* GHAsyncTestCase+MainThreadTests.m in Sources */, + 4CDB8DDA182BBBEA00C5BFA3 /* JFFAsyncOperationManager.m in Sources */, 1BE054B1154828F000270B58 /* NSObject+InstancesCount.m in Sources */, 1B160AD8154BE3F200702B1D /* testTools.m in Sources */, ); diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationManager.h b/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.h similarity index 70% rename from test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationManager.h rename to lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.h index ee06bb4..984d22e 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationManager.h +++ b/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.h @@ -2,9 +2,6 @@ #import -@class JFFCancelAsyncOperationBlockHolder; -@class JFFDidFinishAsyncOperationBlockHolder; - typedef enum { JFFDoNotCancelAsyncOperationManager, @@ -20,13 +17,13 @@ typedef enum { @property (nonatomic) JFFCancelAsyncOperationManagerType cancelAtLoading; @property (nonatomic, copy, readonly) JFFAsyncOperation loader; -@property (nonatomic, readonly) JFFDidFinishAsyncOperationBlockHolder* loaderFinishBlock; -@property (nonatomic, readonly) JFFCancelAsyncOperationBlockHolder* loaderCancelBlock; +@property (nonatomic, copy, readonly) JFFDidFinishAsyncOperationCallback loaderFinishBlock; +@property (nonatomic, copy, readonly) JFFAsyncOperationHandler loaderHandlerBlock; @property (nonatomic, readonly) NSUInteger loadingCount; @property (nonatomic, readonly) BOOL finished; @property (nonatomic, readonly) BOOL canceled; -@property (nonatomic, readonly) BOOL cancelFlag; +@property (nonatomic, readonly) JFFAsyncOperationHandlerTask lastHandleFlag; - (void)clear; diff --git a/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.m b/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.m new file mode 100644 index 0000000..b4e6631 --- /dev/null +++ b/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.m @@ -0,0 +1,105 @@ +#import "JFFAsyncOperationManager.h" + +#import +#import + +#import + +@interface JFFAsyncOperationManager () + +@property (nonatomic, copy) JFFDidFinishAsyncOperationCallback loaderFinishBlock; +@property (nonatomic, copy) JFFAsyncOperationHandler loaderHandlerBlock; + +@property (nonatomic) NSUInteger loadingCount; +@property (nonatomic) BOOL finished; +@property (nonatomic) BOOL canceled; +@property (nonatomic) JFFAsyncOperationHandlerTask lastHandleFlag; + +@end + +@implementation JFFAsyncOperationManager + +- (instancetype)init +{ + self = [super init]; + + if (self) { + + _lastHandleFlag = JFFAsyncOperationHandlerTaskUndefined; + } + + return self; +} + +- (void)clear +{ + _loaderFinishBlock = nil; + _loaderHandlerBlock = nil; + _finished = NO; + _loadingCount = 0; + + _lastHandleFlag = JFFAsyncOperationHandlerTaskUndefined; +} + +- (JFFAsyncOperation)loader +{ + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + + __weak JFFAsyncOperationManager *weakSelf = self; + + self.loadingCount += 1; + + if (self.cancelAtLoading > JFFDoNotCancelAsyncOperationManager) { + + self.canceled = YES; + if (doneCallback) { + + JFFAsyncOperationHandlerTask task = (self.cancelAtLoading == JFFCancelAsyncOperationManagerWithNoFlag) + ?JFFAsyncOperationHandlerTaskUnsubscribe + :JFFAsyncOperationHandlerTaskCancel; + NSError *error = [JFFAsyncOperationAbstractFinishError newAsyncOperationAbstractFinishErrorWithHandlerTask:task]; + doneCallback(nil, error); + } + return JFFStubHandlerAsyncOperationBlock; + } + + doneCallback = [doneCallback copy]; + + self.loaderFinishBlock = ^(id result, NSError *error) { + + weakSelf.loaderFinishBlock = nil; + weakSelf.loaderHandlerBlock = nil; + weakSelf.finished = YES; + if (doneCallback) + doneCallback(result, error); + }; + + if (self.finishAtLoading || self.failAtLoading) { + if (self.finishAtLoading) + self.loaderFinishBlock([NSNull null], nil); + else + self.loaderFinishBlock(nil, [JFFError newErrorWithDescription:@"some error"]); + return JFFStubHandlerAsyncOperationBlock; + } + + stateCallback = [stateCallback copy]; + self.loaderHandlerBlock = ^(JFFAsyncOperationHandlerTask task) { + + if (task <= JFFAsyncOperationHandlerTaskCancel) { + weakSelf.loaderFinishBlock = nil; + weakSelf.loaderHandlerBlock = nil; + } + + weakSelf.canceled = (task <= JFFAsyncOperationHandlerTaskCancel); + weakSelf.lastHandleFlag = task; + + processHandlerFlag(task, stateCallback, doneCallback); + }; + + return self.loaderHandlerBlock; + }; +} + +@end diff --git a/lib/JFFTestTools/JFFTestTools/JFFTestTools.h b/lib/JFFTestTools/JFFTestTools/JFFTestTools.h index 697f5f8..b3a495d 100755 --- a/lib/JFFTestTools/JFFTestTools/JFFTestTools.h +++ b/lib/JFFTestTools/JFFTestTools/JFFTestTools.h @@ -3,6 +3,7 @@ #import #import +#import #import #endif //JFF_TEST_TOOLS_HEADER_INCLUDED diff --git a/lib/JFFUI/AlertView/NSError+Alert.m b/lib/JFFUI/AlertView/NSError+Alert.m index 26b4ed9..28c4473 100755 --- a/lib/JFFUI/AlertView/NSError+Alert.m +++ b/lib/JFFUI/AlertView/NSError+Alert.m @@ -2,6 +2,9 @@ #import "JFFAlertView.h" +#import +#import + @implementation NSError (Alert) - (void)showAlertWithTitle:(NSString *)title @@ -23,3 +26,41 @@ - (void)showExclusiveErrorAlert } @end + +@implementation JFFAsyncOpFinishedByCancellationError (Alert) + +- (void)showAlertWithTitle:(NSString *)title +{ + [self writeErrorWithJFFLogger]; +} + +- (void)showErrorAlert +{ + [self writeErrorWithJFFLogger]; +} + +- (void)showExclusiveErrorAlert +{ + [self writeErrorWithJFFLogger]; +} + +@end + +@implementation JFFAsyncOpFinishedByUnsubscriptionError (Alert) + +- (void)showAlertWithTitle:(NSString *)title +{ + [self writeErrorWithJFFLogger]; +} + +- (void)showErrorAlert +{ + [self writeErrorWithJFFLogger]; +} + +- (void)showExclusiveErrorAlert +{ + [self writeErrorWithJFFLogger]; +} + +@end diff --git a/lib/JFFUI/Categories/JFFAlertView+Async.m b/lib/JFFUI/Categories/JFFAlertView+Async.m index 4ebd060..dbe08a9 100644 --- a/lib/JFFUI/Categories/JFFAlertView+Async.m +++ b/lib/JFFUI/Categories/JFFAlertView+Async.m @@ -11,29 +11,30 @@ @implementation JFFShowAlerLoader JFFAlertView *_alertView; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { if (!_alertView) { - if (cancelHandler) - cancelHandler(YES); + if (finishCallback) + finishCallback(nil, [JFFAsyncOpFinishedByCancellationError new]); return; } _alertView.didDismissHandler = ^() { - if (handler) - handler([NSNull new], nil); + if (finishCallback) + finishCallback([NSNull new], nil); }; [_alertView show]; } -- (void)cancel:(BOOL)canceled +- (void)doTask:(JFFAsyncOperationHandlerTask)task { - if (canceled) + NSCParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); + if (task == JFFAsyncOperationHandlerTaskCancel) [_alertView forceDismiss]; } diff --git a/lib/JFFUI/Categories/UIApplication+OpenApplicationAsyncOp.m b/lib/JFFUI/Categories/UIApplication+OpenApplicationAsyncOp.m index 7880424..df59521 100644 --- a/lib/JFFUI/Categories/UIApplication+OpenApplicationAsyncOp.m +++ b/lib/JFFUI/Categories/UIApplication+OpenApplicationAsyncOp.m @@ -16,25 +16,26 @@ @interface JFFOpenApplicationWithURLDelegateProxy : NSObject< @implementation JFFOpenApplicationWithURLDelegateProxy { - JFFAsyncOperationInterfaceResultHandler _handler; + JFFDidFinishAsyncOperationCallback _finishCallback; @public NSURL *_url; UIApplication *_application; } -- (void)asyncOperationWithResultHandler:(JFFAsyncOperationInterfaceResultHandler)handler - cancelHandler:(JFFAsyncOperationInterfaceCancelHandler)cancelHandler - progressHandler:(JFFAsyncOperationInterfaceProgressHandler)progress +- (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback + handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback + progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { [_application addDelegateProxy:self delegateName:delegateName]; - _handler = [handler copy]; + _finishCallback = [finishCallback copy]; [_application openURL:_url]; } -- (void)cancel:(BOOL)canceled +- (void)doTask:(JFFAsyncOperationHandlerTask)task { + NSCParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); [_application removeDelegateProxy:self delegateName:delegateName]; } @@ -43,9 +44,9 @@ - (BOOL)finishWithURL:(NSURL *)url [_application removeDelegateProxy:self delegateName:delegateName]; if (url) { - _handler(url, nil); + _finishCallback(url, nil); } else { - _handler(nil, [JFFOpenApplicationError new]); + _finishCallback(nil, [JFFOpenApplicationError new]); } return YES; diff --git a/lib/JFFUtils/Categories/UIColor+ColorForHex.h b/lib/JFFUI/Categories/UIColor+ColorForHex.h similarity index 100% rename from lib/JFFUtils/Categories/UIColor+ColorForHex.h rename to lib/JFFUI/Categories/UIColor+ColorForHex.h diff --git a/lib/JFFUtils/Categories/UIColor+ColorForHex.m b/lib/JFFUI/Categories/UIColor+ColorForHex.m similarity index 96% rename from lib/JFFUtils/Categories/UIColor+ColorForHex.m rename to lib/JFFUI/Categories/UIColor+ColorForHex.m index 45e4711..55404b6 100644 --- a/lib/JFFUtils/Categories/UIColor+ColorForHex.m +++ b/lib/JFFUI/Categories/UIColor+ColorForHex.m @@ -1,6 +1,6 @@ #import "UIColor+ColorForHex.h" -#import "NSString+Trimm.h" +//#import //source: http://iphonedevelopertips.com/general/using-nsscanner-to-convert-hex-to-rgb-color.html @implementation UIColor (ColorForHex) diff --git a/lib/JFFUtils/Categories/UIDevice+PlatformName.h b/lib/JFFUI/Categories/UIDevice+PlatformName.h similarity index 100% rename from lib/JFFUtils/Categories/UIDevice+PlatformName.h rename to lib/JFFUI/Categories/UIDevice+PlatformName.h diff --git a/lib/JFFUtils/Categories/UIDevice+PlatformName.m b/lib/JFFUI/Categories/UIDevice+PlatformName.m similarity index 100% rename from lib/JFFUtils/Categories/UIDevice+PlatformName.m rename to lib/JFFUI/Categories/UIDevice+PlatformName.m diff --git a/lib/JFFUI/JFFDialogProtocol.h b/lib/JFFUI/JFFDialogProtocol.h index f8bec06..6e99b06 100644 --- a/lib/JFFUI/JFFDialogProtocol.h +++ b/lib/JFFUI/JFFDialogProtocol.h @@ -4,7 +4,7 @@ typedef void (^JFFCompleteDialogCallbackBlock)(id result, NSError *error, BOOL i @protocol JFFDialogProtocol -@property (copy, nonatomic) JFFCompleteDialogCallbackBlock onCompleteDialogBlock; +@property (copy, nonatomic) JFFCompleteDialogCallbackBlock onCompleteDialogBlock;//can be called several times @required - (void)completeDialogWithResult:(id)result error:(NSError *)error isCanceled:(BOOL)isCancaled; diff --git a/lib/JFFUI/JFFUI.h b/lib/JFFUI/JFFUI.h index 8e45b1b..df4ac49 100644 --- a/lib/JFFUI/JFFUI.h +++ b/lib/JFFUI/JFFUI.h @@ -41,8 +41,10 @@ //Categories #import #import -#import #import +#import +#import +#import #import #import diff --git a/lib/JFFUI/JFFUI.xcodeproj/project.pbxproj b/lib/JFFUI/JFFUI.xcodeproj/project.pbxproj index 61872f1..15b6521 100644 --- a/lib/JFFUI/JFFUI.xcodeproj/project.pbxproj +++ b/lib/JFFUI/JFFUI.xcodeproj/project.pbxproj @@ -33,6 +33,10 @@ 1BD3616C1455A2F80036F786 /* JFFPageSliderDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BD3616B1455A2F80036F786 /* JFFPageSliderDelegate.h */; }; 1BE053B715480F4400270B58 /* JFFActionSheetsContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BE053B515480F4400270B58 /* JFFActionSheetsContainer.h */; }; 1BE053B815480F4400270B58 /* JFFActionSheetsContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BE053B615480F4400270B58 /* JFFActionSheetsContainer.m */; }; + 4C1A0EFC182572FB0020FBF6 /* UIColor+ColorForHex.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C1A0EFA182572FB0020FBF6 /* UIColor+ColorForHex.h */; }; + 4C1A0EFD182572FB0020FBF6 /* UIColor+ColorForHex.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1A0EFB182572FB0020FBF6 /* UIColor+ColorForHex.m */; }; + 4C1A0F36182574A70020FBF6 /* UIDevice+PlatformName.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C1A0F34182574A70020FBF6 /* UIDevice+PlatformName.h */; }; + 4C1A0F37182574A70020FBF6 /* UIDevice+PlatformName.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1A0F35182574A70020FBF6 /* UIDevice+PlatformName.m */; }; 4C21FA7D16EF4F59005C4E57 /* JFFStripeView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C21FA7916EF4F59005C4E57 /* JFFStripeView.h */; }; 4C21FA7E16EF4F59005C4E57 /* JFFStripeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C21FA7A16EF4F59005C4E57 /* JFFStripeView.m */; }; 4C21FA7F16EF4F59005C4E57 /* JFFStripeViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C21FA7B16EF4F59005C4E57 /* JFFStripeViewDelegate.h */; }; @@ -148,6 +152,10 @@ 1BD3616B1455A2F80036F786 /* JFFPageSliderDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFPageSliderDelegate.h; sourceTree = ""; }; 1BE053B515480F4400270B58 /* JFFActionSheetsContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFActionSheetsContainer.h; sourceTree = ""; }; 1BE053B615480F4400270B58 /* JFFActionSheetsContainer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFActionSheetsContainer.m; sourceTree = ""; }; + 4C1A0EFA182572FB0020FBF6 /* UIColor+ColorForHex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+ColorForHex.h"; sourceTree = ""; }; + 4C1A0EFB182572FB0020FBF6 /* UIColor+ColorForHex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+ColorForHex.m"; sourceTree = ""; }; + 4C1A0F34182574A70020FBF6 /* UIDevice+PlatformName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIDevice+PlatformName.h"; sourceTree = ""; }; + 4C1A0F35182574A70020FBF6 /* UIDevice+PlatformName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+PlatformName.m"; sourceTree = ""; }; 4C21FA7916EF4F59005C4E57 /* JFFStripeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFStripeView.h; sourceTree = ""; }; 4C21FA7A16EF4F59005C4E57 /* JFFStripeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFStripeView.m; sourceTree = ""; }; 4C21FA7B16EF4F59005C4E57 /* JFFStripeViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFStripeViewDelegate.h; sourceTree = ""; }; @@ -364,6 +372,10 @@ 4C2CFD9C1754A4FA00E87F22 /* UIApplication+OpenApplicationAsyncOp.m */, 4C8973911761F33C00E24F7B /* UIWebView+UserAgent.h */, 4C8973921761F33C00E24F7B /* UIWebView+UserAgent.m */, + 4C1A0EFA182572FB0020FBF6 /* UIColor+ColorForHex.h */, + 4C1A0EFB182572FB0020FBF6 /* UIColor+ColorForHex.m */, + 4C1A0F34182574A70020FBF6 /* UIDevice+PlatformName.h */, + 4C1A0F35182574A70020FBF6 /* UIDevice+PlatformName.m */, ); path = Categories; sourceTree = ""; @@ -502,6 +514,7 @@ 1B29555F143DCB7300532BD7 /* UITableView+WithinUpdates.h in Headers */, 1BD361691455A0630036F786 /* JFFPageSlider.h in Headers */, 1BD3616C1455A2F80036F786 /* JFFPageSliderDelegate.h in Headers */, + 4C1A0F36182574A70020FBF6 /* UIDevice+PlatformName.h in Headers */, 1B3A3854147683E9007D8C10 /* UIView+AllSubviews.h in Headers */, 1B5E1AD214D0203B0075049A /* UIViewController+PresentTopViewController.h in Headers */, 1BE053B715480F4400270B58 /* JFFActionSheetsContainer.h in Headers */, @@ -526,6 +539,7 @@ 4CBBA1A917662275007317E6 /* JFFCameraFlashModeType.h in Headers */, 4CBBA1AA17662275007317E6 /* JFFPhotoCamera.h in Headers */, 4CBBA1AC17662275007317E6 /* JFFPhotoCameraType.h in Headers */, + 4C1A0EFC182572FB0020FBF6 /* UIColor+ColorForHex.h in Headers */, 4CB4C1A31770530C00F275BC /* UIImage+ScaleToSize.h in Headers */, 4CB4C1A71770535700F275BC /* UIImage+FixOrientation.h in Headers */, 4CB4C1AF1770539900F275BC /* UIImage+ImageWithColor.h in Headers */, @@ -628,10 +642,12 @@ 655E9DB91392E8C00074BD61 /* JFFAlertButton.m in Sources */, 655E9DBB1392E8C00074BD61 /* JFFAlertView.m in Sources */, 655E9DBD1392E8C00074BD61 /* NSError+Alert.m in Sources */, + 4C1A0EFD182572FB0020FBF6 /* UIColor+ColorForHex.m in Sources */, 8D996F19139F5D370075A325 /* JFFActionSheet.m in Sources */, 8D996F1F139F61200075A325 /* NSObject+JFFAlertButton.m in Sources */, 4C4E8EA7180BFA4B002D8A7B /* UITableView+CellsSelections.m in Sources */, 1B7F58431435BDC000FF06EC /* UIWebView+HideWhenLoading.m in Sources */, + 4C1A0F37182574A70020FBF6 /* UIDevice+PlatformName.m in Sources */, 1B7F58981435D53300FF06EC /* UIView+AddSubviewAndScale.m in Sources */, 1B7F589C1435D58000FF06EC /* UIView+AnimationWithBlocks.m in Sources */, 1B49CFA8143C6D3500E8AACE /* UIWebViewNewFeaturesRuntime.m in Sources */, @@ -709,6 +725,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; GCC_OPTIMIZATION_LEVEL = 0; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; @@ -730,6 +747,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; diff --git a/lib/JFFUI/PhotoCamera/JFFPhotoCamera.m b/lib/JFFUI/PhotoCamera/JFFPhotoCamera.m index 0bc4761..0f49ef0 100644 --- a/lib/JFFUI/PhotoCamera/JFFPhotoCamera.m +++ b/lib/JFFUI/PhotoCamera/JFFPhotoCamera.m @@ -169,7 +169,7 @@ - (void)setSessionPreset:(NSString *)sessionPreset - (JFFAVCaptureVideoOrientation)videoOrientation { AVCaptureConnection *videoConnection = [self videoConnectionFromImageOutput:_camImageOutput]; - return videoConnection.videoOrientation; + return (JFFAVCaptureVideoOrientation)videoConnection.videoOrientation; } - (void)setVideoOrientation:(JFFAVCaptureVideoOrientation)videoOrientation diff --git a/lib/JFFUI/UIViewController/UIViewController+Dialog.m b/lib/JFFUI/UIViewController/UIViewController+Dialog.m index ef3a8c8..def060c 100644 --- a/lib/JFFUI/UIViewController/UIViewController+Dialog.m +++ b/lib/JFFUI/UIViewController/UIViewController+Dialog.m @@ -29,9 +29,9 @@ - (void)cancelDialog - (void)completeDialogWithResult:(id)result error:(NSError *)error isCanceled:(BOOL)isCancaled { JFFCompleteDialogCallbackBlock onCompleteDialogBlock = self.onCompleteDialogBlock; - if (onCompleteDialogBlock) { + + if (onCompleteDialogBlock) onCompleteDialogBlock(result, error, isCancaled); - } } @end diff --git a/lib/JFFUtils/Errors/NSError+WriteErrorToNSLog.m b/lib/JFFUtils/Errors/NSError+WriteErrorToNSLog.m index 365c03b..0a86e41 100644 --- a/lib/JFFUtils/Errors/NSError+WriteErrorToNSLog.m +++ b/lib/JFFUtils/Errors/NSError+WriteErrorToNSLog.m @@ -15,7 +15,7 @@ - (NSString *)errorLogDescription - (void)writeErrorToNSLog { - NSLog(@"%@", [self errorLogDescription]); + NSLog(@"only log - %@", [self errorLogDescription]); } - (void)writeErrorWithJFFLogger diff --git a/lib/JFFUtils/JFFMutableAssignArray.h b/lib/JFFUtils/JFFMutableAssignArray.h index 513ae5f..47a4e0b 100644 --- a/lib/JFFUtils/JFFMutableAssignArray.h +++ b/lib/JFFUtils/JFFMutableAssignArray.h @@ -14,6 +14,8 @@ - (void)removeObjectAtIndex:(NSUInteger)index; - (void)removeAllObjects; +- (id)objectAtIndexedSubscript:(NSUInteger)idx; + - (NSUInteger)indexOfObject:(id)object; - (NSUInteger)count; diff --git a/lib/JFFUtils/JFFMutableAssignArray.m b/lib/JFFUtils/JFFMutableAssignArray.m index d027fb9..b76eebf 100644 --- a/lib/JFFUtils/JFFMutableAssignArray.m +++ b/lib/JFFUtils/JFFMutableAssignArray.m @@ -108,6 +108,12 @@ - (void)removeAllObjects [_mutableArray removeAllObjects]; } +- (id)objectAtIndexedSubscript:(NSUInteger)idx +{ + JFFAutoRemoveAssignProxy *proxy = _mutableArray[idx]; + return proxy.target; +} + - (NSUInteger)indexOfObject:(id)object { NSUInteger index = [_mutableArray firstIndexOfObjectMatch:^BOOL(id element) { diff --git a/lib/JFFUtils/JFFUtils.h b/lib/JFFUtils/JFFUtils.h index 5a54793..c2b95af 100644 --- a/lib/JFFUtils/JFFUtils.h +++ b/lib/JFFUtils/JFFUtils.h @@ -57,9 +57,7 @@ #import #import -#import #import -#import #import #import diff --git a/lib/JFFUtils/JFFUtils.xcodeproj/project.pbxproj b/lib/JFFUtils/JFFUtils.xcodeproj/project.pbxproj index f3acdae..9acdf33 100644 --- a/lib/JFFUtils/JFFUtils.xcodeproj/project.pbxproj +++ b/lib/JFFUtils/JFFUtils.xcodeproj/project.pbxproj @@ -75,6 +75,71 @@ 37497BD71600971C00AF0C29 /* NSDictionary+ValueWithType.m in Sources */ = {isa = PBXBuildFile; fileRef = 37497BCF1600971C00AF0C29 /* NSDictionary+ValueWithType.m */; }; 37805592164D432700459BA7 /* NSLocale+CurrentInterfaceLanguageCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 37805590164D432700459BA7 /* NSLocale+CurrentInterfaceLanguageCode.h */; }; 37805593164D432700459BA7 /* NSLocale+CurrentInterfaceLanguageCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 37805591164D432700459BA7 /* NSLocale+CurrentInterfaceLanguageCode.m */; }; + 4C069435182D3BAA0099BB66 /* JFFMemoryMgmt.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B909B7C14EA918800B19283 /* JFFMemoryMgmt.h */; }; + 4C069436182D3BAB0099BB66 /* JFFMemoryMgmt.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B909B7C14EA918800B19283 /* JFFMemoryMgmt.h */; }; + 4C069437182D3BAC0099BB66 /* JFFMemoryMgmt.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B909B7C14EA918800B19283 /* JFFMemoryMgmt.h */; }; + 4C069438182D3BC60099BB66 /* JFFMemoryMgmt.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B909B7D14EA918800B19283 /* JFFMemoryMgmt.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 4C06950B182D41BD0099BB66 /* NSString+CPlusPlus.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E44D670158F189F00A2C11E /* NSString+CPlusPlus.mm */; }; + 4C06950C182D41BD0099BB66 /* NSString+CPlusPlus.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E44D670158F189F00A2C11E /* NSString+CPlusPlus.mm */; }; + 4C06950D182D41BE0099BB66 /* NSString+CPlusPlus.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E44D670158F189F00A2C11E /* NSString+CPlusPlus.mm */; }; + 4C06950E182D41BE0099BB66 /* NSString+CPlusPlus.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E44D670158F189F00A2C11E /* NSString+CPlusPlus.mm */; }; + 4C06950F182D41BE0099BB66 /* NSString+CPlusPlus.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E44D670158F189F00A2C11E /* NSString+CPlusPlus.mm */; }; + 4C1A0E90182572A50020FBF6 /* JFFSilentError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6DFB1617184A0600D86975 /* JFFSilentError.m */; }; + 4C1A0E91182572A50020FBF6 /* NSError+SetToPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A9917438582003F1C88 /* NSError+SetToPointer.m */; }; + 4C1A0E92182572A50020FBF6 /* NSError+WriteErrorToNSLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A911743836C003F1C88 /* NSError+WriteErrorToNSLog.m */; }; + 4C1A0E93182572A50020FBF6 /* NSError+IsNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A9517438408003F1C88 /* NSError+IsNetworkError.m */; }; + 4C1A0E94182572A50020FBF6 /* NSDecimalNumber+Increment.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBEB17058D4200BD49E8 /* NSDecimalNumber+Increment.m */; }; + 4C1A0E96182572A50020FBF6 /* NSData+ToString.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBF717058DB100BD49E8 /* NSData+ToString.m */; }; + 4C1A0E97182572A50020FBF6 /* NSNumber+FSStorable.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBFB17058DCF00BD49E8 /* NSNumber+FSStorable.m */; }; + 4C1A0E98182572A50020FBF6 /* NSDateFormatter+MultiThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBFF17058DFE00BD49E8 /* NSDateFormatter+MultiThreading.m */; }; + 4C1A0E9A182572A50020FBF6 /* JFFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = CEC70F10169DBA8B006D63DE /* JFFLogger.m */; }; + 4C1A0E9B182572A50020FBF6 /* NSLocale+CurrentInterfaceLanguageCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 37805591164D432700459BA7 /* NSLocale+CurrentInterfaceLanguageCode.m */; }; + 4C1A0E9C182572A50020FBF6 /* NSSet+BlocksAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE57FBB71611EFFF00124D90 /* NSSet+BlocksAdditions.m */; }; + 4C1A0E9D182572A50020FBF6 /* NSMutableSet+StorableSet.m in Sources */ = {isa = PBXBuildFile; fileRef = CE57FBBC1611F0BF00124D90 /* NSMutableSet+StorableSet.m */; }; + 4C1A0E9E182572A50020FBF6 /* NSOrderedSet+BlocksAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE998C471626B988002D39FD /* NSOrderedSet+BlocksAdditions.m */; }; + 4C1A0E9F182572A50020FBF6 /* NSOrderedSet+NoThrowObjectAtIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 37063C6615FE0C5700B4B059 /* NSOrderedSet+NoThrowObjectAtIndex.m */; }; + 4C1A0EA0182572A60020FBF6 /* JFFSilentError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6DFB1617184A0600D86975 /* JFFSilentError.m */; }; + 4C1A0EA1182572A60020FBF6 /* NSError+SetToPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A9917438582003F1C88 /* NSError+SetToPointer.m */; }; + 4C1A0EA2182572A60020FBF6 /* NSError+WriteErrorToNSLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A911743836C003F1C88 /* NSError+WriteErrorToNSLog.m */; }; + 4C1A0EA3182572A60020FBF6 /* NSError+IsNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A9517438408003F1C88 /* NSError+IsNetworkError.m */; }; + 4C1A0EA4182572A60020FBF6 /* NSDecimalNumber+Increment.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBEB17058D4200BD49E8 /* NSDecimalNumber+Increment.m */; }; + 4C1A0EA6182572A60020FBF6 /* NSData+ToString.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBF717058DB100BD49E8 /* NSData+ToString.m */; }; + 4C1A0EA7182572A60020FBF6 /* NSNumber+FSStorable.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBFB17058DCF00BD49E8 /* NSNumber+FSStorable.m */; }; + 4C1A0EA8182572A60020FBF6 /* NSDateFormatter+MultiThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBFF17058DFE00BD49E8 /* NSDateFormatter+MultiThreading.m */; }; + 4C1A0EAA182572A60020FBF6 /* JFFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = CEC70F10169DBA8B006D63DE /* JFFLogger.m */; }; + 4C1A0EAB182572A60020FBF6 /* NSLocale+CurrentInterfaceLanguageCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 37805591164D432700459BA7 /* NSLocale+CurrentInterfaceLanguageCode.m */; }; + 4C1A0EAC182572A60020FBF6 /* NSSet+BlocksAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE57FBB71611EFFF00124D90 /* NSSet+BlocksAdditions.m */; }; + 4C1A0EAD182572A60020FBF6 /* NSMutableSet+StorableSet.m in Sources */ = {isa = PBXBuildFile; fileRef = CE57FBBC1611F0BF00124D90 /* NSMutableSet+StorableSet.m */; }; + 4C1A0EAE182572A60020FBF6 /* NSOrderedSet+BlocksAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE998C471626B988002D39FD /* NSOrderedSet+BlocksAdditions.m */; }; + 4C1A0EAF182572A60020FBF6 /* NSOrderedSet+NoThrowObjectAtIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 37063C6615FE0C5700B4B059 /* NSOrderedSet+NoThrowObjectAtIndex.m */; }; + 4C1A0EB0182572A60020FBF6 /* JFFSilentError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6DFB1617184A0600D86975 /* JFFSilentError.m */; }; + 4C1A0EB1182572A60020FBF6 /* NSError+SetToPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A9917438582003F1C88 /* NSError+SetToPointer.m */; }; + 4C1A0EB2182572A60020FBF6 /* NSError+WriteErrorToNSLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A911743836C003F1C88 /* NSError+WriteErrorToNSLog.m */; }; + 4C1A0EB3182572A60020FBF6 /* NSError+IsNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A9517438408003F1C88 /* NSError+IsNetworkError.m */; }; + 4C1A0EB4182572A60020FBF6 /* NSDecimalNumber+Increment.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBEB17058D4200BD49E8 /* NSDecimalNumber+Increment.m */; }; + 4C1A0EB6182572A60020FBF6 /* NSData+ToString.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBF717058DB100BD49E8 /* NSData+ToString.m */; }; + 4C1A0EB7182572A60020FBF6 /* NSNumber+FSStorable.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBFB17058DCF00BD49E8 /* NSNumber+FSStorable.m */; }; + 4C1A0EB8182572A60020FBF6 /* NSDateFormatter+MultiThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBFF17058DFE00BD49E8 /* NSDateFormatter+MultiThreading.m */; }; + 4C1A0EBA182572A60020FBF6 /* JFFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = CEC70F10169DBA8B006D63DE /* JFFLogger.m */; }; + 4C1A0EBB182572A60020FBF6 /* NSLocale+CurrentInterfaceLanguageCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 37805591164D432700459BA7 /* NSLocale+CurrentInterfaceLanguageCode.m */; }; + 4C1A0EBC182572A60020FBF6 /* NSSet+BlocksAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE57FBB71611EFFF00124D90 /* NSSet+BlocksAdditions.m */; }; + 4C1A0EBD182572A60020FBF6 /* NSMutableSet+StorableSet.m in Sources */ = {isa = PBXBuildFile; fileRef = CE57FBBC1611F0BF00124D90 /* NSMutableSet+StorableSet.m */; }; + 4C1A0EBE182572A60020FBF6 /* NSOrderedSet+BlocksAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE998C471626B988002D39FD /* NSOrderedSet+BlocksAdditions.m */; }; + 4C1A0EBF182572A60020FBF6 /* NSOrderedSet+NoThrowObjectAtIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 37063C6615FE0C5700B4B059 /* NSOrderedSet+NoThrowObjectAtIndex.m */; }; + 4C1A0EC0182572A60020FBF6 /* JFFSilentError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6DFB1617184A0600D86975 /* JFFSilentError.m */; }; + 4C1A0EC1182572A60020FBF6 /* NSError+SetToPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A9917438582003F1C88 /* NSError+SetToPointer.m */; }; + 4C1A0EC2182572A60020FBF6 /* NSError+WriteErrorToNSLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A911743836C003F1C88 /* NSError+WriteErrorToNSLog.m */; }; + 4C1A0EC3182572A60020FBF6 /* NSError+IsNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A9517438408003F1C88 /* NSError+IsNetworkError.m */; }; + 4C1A0EC4182572A60020FBF6 /* NSDecimalNumber+Increment.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBEB17058D4200BD49E8 /* NSDecimalNumber+Increment.m */; }; + 4C1A0EC6182572A60020FBF6 /* NSData+ToString.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBF717058DB100BD49E8 /* NSData+ToString.m */; }; + 4C1A0EC7182572A60020FBF6 /* NSNumber+FSStorable.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBFB17058DCF00BD49E8 /* NSNumber+FSStorable.m */; }; + 4C1A0EC8182572A60020FBF6 /* NSDateFormatter+MultiThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBFF17058DFE00BD49E8 /* NSDateFormatter+MultiThreading.m */; }; + 4C1A0ECA182572A60020FBF6 /* JFFLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = CEC70F10169DBA8B006D63DE /* JFFLogger.m */; }; + 4C1A0ECB182572A60020FBF6 /* NSLocale+CurrentInterfaceLanguageCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 37805591164D432700459BA7 /* NSLocale+CurrentInterfaceLanguageCode.m */; }; + 4C1A0ECC182572A60020FBF6 /* NSSet+BlocksAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE57FBB71611EFFF00124D90 /* NSSet+BlocksAdditions.m */; }; + 4C1A0ECD182572A60020FBF6 /* NSMutableSet+StorableSet.m in Sources */ = {isa = PBXBuildFile; fileRef = CE57FBBC1611F0BF00124D90 /* NSMutableSet+StorableSet.m */; }; + 4C1A0ECE182572A60020FBF6 /* NSOrderedSet+BlocksAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE998C471626B988002D39FD /* NSOrderedSet+BlocksAdditions.m */; }; + 4C1A0ECF182572A60020FBF6 /* NSOrderedSet+NoThrowObjectAtIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 37063C6615FE0C5700B4B059 /* NSOrderedSet+NoThrowObjectAtIndex.m */; }; 4C27EDB11701C48500185768 /* libJFFTestTools.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C27EDAE1701C47300185768 /* libJFFTestTools.a */; }; 4C3B63A21701C84700D5A8FD /* JFFMutableAssignKeyDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C3B63A01701C84700D5A8FD /* JFFMutableAssignKeyDictionary.h */; }; 4C3B63A31701C84700D5A8FD /* JFFMutableAssignKeyDictionary.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4C3B63A11701C84700D5A8FD /* JFFMutableAssignKeyDictionary.mm */; }; @@ -86,6 +151,107 @@ 4C50BF5A171D85B400251A16 /* JFFError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6DFB12171849D800D86975 /* JFFError.m */; }; 4C50BF5B171D85B400251A16 /* JFFError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6DFB12171849D800D86975 /* JFFError.m */; }; 4C50BF5C171D85B500251A16 /* JFFError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6DFB12171849D800D86975 /* JFFError.m */; }; + 4C54855A1825710700AAEE22 /* JFFAssignProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DB67B1E13E980B70024EA6C /* JFFAssignProxy.m */; }; + 4C54855B1825710700AAEE22 /* JFFMutableAssignArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D713C6C13F3F62B007268DF /* JFFMutableAssignArray.m */; }; + 4C54855C1825710700AAEE22 /* JFFMutableAssignDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD1820C1467D71B0033BEFF /* JFFMutableAssignDictionary.m */; }; + 4C54855D1825710700AAEE22 /* JFFMutableAssignKeyDictionary.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4C3B63A11701C84700D5A8FD /* JFFMutableAssignKeyDictionary.mm */; }; + 4C54855E1825710700AAEE22 /* JFFMulticastDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DB67B1913E97FCF0024EA6C /* JFFMulticastDelegate.m */; }; + 4C54855F1825710700AAEE22 /* JGCDAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1B7608991444912F0059E977 /* JGCDAdditions.mm */; }; + 4C5485691825711B00AAEE22 /* DelegateProxyUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA0979B15FF2ADE0080DEF7 /* DelegateProxyUtils.m */; }; + 4C54856A1825711B00AAEE22 /* NSString+DelegateProxySelectorsNames.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA0979F15FF2C110080DEF7 /* NSString+DelegateProxySelectorsNames.m */; }; + 4C54856B1825711B00AAEE22 /* JFFDelegateProxyClassMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA097A315FF2C850080DEF7 /* JFFDelegateProxyClassMethods.m */; }; + 4C54856C1825711B00AAEE22 /* JFFProxyDelegatesDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA097A715FF2E3E0080DEF7 /* JFFProxyDelegatesDispatcher.m */; }; + 4C54856D1825711B00AAEE22 /* NSObject+Ownerships.m in Sources */ = {isa = PBXBuildFile; fileRef = 651BE138139107EA00DD6890 /* NSObject+Ownerships.m */; }; + 4C54856E1825711B00AAEE22 /* NSObject+OnDeallocBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 651BE1CC1391A36800DD6890 /* NSObject+OnDeallocBlock.m */; }; + 4C54856F1825711B00AAEE22 /* NSObject+RuntimeExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D1DE52A13AB8269001FD56F /* NSObject+RuntimeExtensions.m */; }; + 4C5485701825711B00AAEE22 /* NSObject+Const0.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BE75CFE1434B3450076E068 /* NSObject+Const0.m */; }; + 4C5485711825711B00AAEE22 /* NSObject+ExpandArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B3EE0351487D03A00BA6680 /* NSObject+ExpandArray.m */; }; + 4C5485721825711B00AAEE22 /* NSObject+IsEqualTwoObjects.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BBD97DF15249C4200A34E64 /* NSObject+IsEqualTwoObjects.m */; }; + 4C5485731825711B00AAEE22 /* NSObject+DelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 655C20E615FE5A4000022B11 /* NSObject+DelegateProxy.m */; }; + 4C5485741825711B00AAEE22 /* NSObject+JFFMeaningClass.m in Sources */ = {isa = PBXBuildFile; fileRef = CE444A1316085D5A00DD85B0 /* NSObject+JFFMeaningClass.m */; }; + 4C5485751825711B00AAEE22 /* NSObject+NsNullAsNil.m in Sources */ = {isa = PBXBuildFile; fileRef = CEC8479516A98A6C00065745 /* NSObject+NsNullAsNil.m */; }; + 4C5485761825711B00AAEE22 /* NSObject+ObjectMethodHook.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4CC643BD1717009B000BF15A /* NSObject+ObjectMethodHook.mm */; }; + 4C5485771825711B00AAEE22 /* DelegateProxyUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA0979B15FF2ADE0080DEF7 /* DelegateProxyUtils.m */; }; + 4C5485781825711B00AAEE22 /* NSString+DelegateProxySelectorsNames.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA0979F15FF2C110080DEF7 /* NSString+DelegateProxySelectorsNames.m */; }; + 4C5485791825711B00AAEE22 /* JFFDelegateProxyClassMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA097A315FF2C850080DEF7 /* JFFDelegateProxyClassMethods.m */; }; + 4C54857A1825711B00AAEE22 /* JFFProxyDelegatesDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA097A715FF2E3E0080DEF7 /* JFFProxyDelegatesDispatcher.m */; }; + 4C54857B1825711B00AAEE22 /* NSObject+IsEqualTwoObjects.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BBD97DF15249C4200A34E64 /* NSObject+IsEqualTwoObjects.m */; }; + 4C54857C1825711B00AAEE22 /* NSObject+DelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 655C20E615FE5A4000022B11 /* NSObject+DelegateProxy.m */; }; + 4C54857D1825711B00AAEE22 /* NSObject+JFFMeaningClass.m in Sources */ = {isa = PBXBuildFile; fileRef = CE444A1316085D5A00DD85B0 /* NSObject+JFFMeaningClass.m */; }; + 4C54857E1825711B00AAEE22 /* NSObject+NsNullAsNil.m in Sources */ = {isa = PBXBuildFile; fileRef = CEC8479516A98A6C00065745 /* NSObject+NsNullAsNil.m */; }; + 4C54857F1825711B00AAEE22 /* DelegateProxyUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA0979B15FF2ADE0080DEF7 /* DelegateProxyUtils.m */; }; + 4C5485801825711B00AAEE22 /* NSString+DelegateProxySelectorsNames.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA0979F15FF2C110080DEF7 /* NSString+DelegateProxySelectorsNames.m */; }; + 4C5485811825711B00AAEE22 /* JFFDelegateProxyClassMethods.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA097A315FF2C850080DEF7 /* JFFDelegateProxyClassMethods.m */; }; + 4C5485821825711B00AAEE22 /* JFFProxyDelegatesDispatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA097A715FF2E3E0080DEF7 /* JFFProxyDelegatesDispatcher.m */; }; + 4C5485831825711B00AAEE22 /* NSObject+IsEqualTwoObjects.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BBD97DF15249C4200A34E64 /* NSObject+IsEqualTwoObjects.m */; }; + 4C5485841825711B00AAEE22 /* NSObject+DelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 655C20E615FE5A4000022B11 /* NSObject+DelegateProxy.m */; }; + 4C5485851825711B00AAEE22 /* NSObject+JFFMeaningClass.m in Sources */ = {isa = PBXBuildFile; fileRef = CE444A1316085D5A00DD85B0 /* NSObject+JFFMeaningClass.m */; }; + 4C5485861825711B00AAEE22 /* NSObject+NsNullAsNil.m in Sources */ = {isa = PBXBuildFile; fileRef = CEC8479516A98A6C00065745 /* NSObject+NsNullAsNil.m */; }; + 4C5485871825711C00AAEE22 /* NSObject+Const0.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BE75CFE1434B3450076E068 /* NSObject+Const0.m */; }; + 4C5485881825711C00AAEE22 /* NSObject+NsNullAsNil.m in Sources */ = {isa = PBXBuildFile; fileRef = CEC8479516A98A6C00065745 /* NSObject+NsNullAsNil.m */; }; + 4C5485891825712C00AAEE22 /* NSArray+ToURLsSkippingNils.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB5CDEE174F55CA00F2B600 /* NSArray+ToURLsSkippingNils.m */; }; + 4C54858A1825712C00AAEE22 /* NSArray+ArrayByRemovingObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBBA1A217661FA5007317E6 /* NSArray+ArrayByRemovingObject.m */; }; + 4C54858B1825712C00AAEE22 /* NSArray+ToURLsSkippingNils.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB5CDEE174F55CA00F2B600 /* NSArray+ToURLsSkippingNils.m */; }; + 4C54858C1825712C00AAEE22 /* NSArray+ArrayByRemovingObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBBA1A217661FA5007317E6 /* NSArray+ArrayByRemovingObject.m */; }; + 4C54858D1825712C00AAEE22 /* NSArray+ToURLsSkippingNils.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB5CDEE174F55CA00F2B600 /* NSArray+ToURLsSkippingNils.m */; }; + 4C54858E1825712C00AAEE22 /* NSArray+ArrayByRemovingObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBBA1A217661FA5007317E6 /* NSArray+ArrayByRemovingObject.m */; }; + 4C54858F1825712D00AAEE22 /* NSArray+NoThrowObjectAtIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B3CDDE41445DFD300733BE5 /* NSArray+NoThrowObjectAtIndex.m */; }; + 4C5485901825712D00AAEE22 /* NSArray+ToURLsSkippingNils.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB5CDEE174F55CA00F2B600 /* NSArray+ToURLsSkippingNils.m */; }; + 4C5485911825712D00AAEE22 /* NSArray+ArrayByRemovingObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBBA1A217661FA5007317E6 /* NSArray+ArrayByRemovingObject.m */; }; + 4C5485921825713F00AAEE22 /* NSString+Format.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B909B8414EA919400B19283 /* NSString+Format.m */; }; + 4C5485931825713F00AAEE22 /* NSString+StringWithCutPrefix.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B5E1B9514D037EE0075049A /* NSString+StringWithCutPrefix.m */; }; + 4C5485941825713F00AAEE22 /* NSString+IsEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 53A3BB3E14DAB3CD008B71BE /* NSString+IsEmpty.m */; }; + 4C5485951825713F00AAEE22 /* NSString+IsEmailValid.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B1B280714D825A600FA5388 /* NSString+IsEmailValid.m */; }; + 4C5485961825713F00AAEE22 /* NSString+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B90996A14EA4D9500B19283 /* NSString+Base64.m */; }; + 4C5485971825713F00AAEE22 /* NSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FBA016E0B38D00B6EFD8 /* NSString+HTML.m */; }; + 4C5485981825713F00AAEE22 /* NSString+MD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6AFDFC177AD544009D09C3 /* NSString+MD5.m */; }; + 4C5485991825713F00AAEE22 /* NSString+LocalizedPrice.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8D176817870ED900DE7624 /* NSString+LocalizedPrice.m */; }; + 4C54859A1825713F00AAEE22 /* NSString+StringFromTemplateString.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4E1E6C179D3529009E9C71 /* NSString+StringFromTemplateString.m */; }; + 4C54859B1825713F00AAEE22 /* NSString+Format.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B909B8414EA919400B19283 /* NSString+Format.m */; }; + 4C54859C1825713F00AAEE22 /* NSString+StringWithCutPrefix.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B5E1B9514D037EE0075049A /* NSString+StringWithCutPrefix.m */; }; + 4C54859D1825713F00AAEE22 /* NSString+IsEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 53A3BB3E14DAB3CD008B71BE /* NSString+IsEmpty.m */; }; + 4C54859E1825713F00AAEE22 /* NSString+IsEmailValid.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B1B280714D825A600FA5388 /* NSString+IsEmailValid.m */; }; + 4C54859F1825713F00AAEE22 /* NSString+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B90996A14EA4D9500B19283 /* NSString+Base64.m */; }; + 4C5485A01825713F00AAEE22 /* NSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FBA016E0B38D00B6EFD8 /* NSString+HTML.m */; }; + 4C5485A11825713F00AAEE22 /* NSString+MD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6AFDFC177AD544009D09C3 /* NSString+MD5.m */; }; + 4C5485A21825713F00AAEE22 /* NSString+LocalizedPrice.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8D176817870ED900DE7624 /* NSString+LocalizedPrice.m */; }; + 4C5485A31825713F00AAEE22 /* NSString+StringFromTemplateString.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4E1E6C179D3529009E9C71 /* NSString+StringFromTemplateString.m */; }; + 4C5485A41825714000AAEE22 /* NSString+Format.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B909B8414EA919400B19283 /* NSString+Format.m */; }; + 4C5485A51825714000AAEE22 /* NSString+StringWithCutPrefix.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B5E1B9514D037EE0075049A /* NSString+StringWithCutPrefix.m */; }; + 4C5485A61825714000AAEE22 /* NSString+IsEmailValid.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B1B280714D825A600FA5388 /* NSString+IsEmailValid.m */; }; + 4C5485A71825714000AAEE22 /* NSString+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B90996A14EA4D9500B19283 /* NSString+Base64.m */; }; + 4C5485A81825714000AAEE22 /* NSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FBA016E0B38D00B6EFD8 /* NSString+HTML.m */; }; + 4C5485A91825714000AAEE22 /* NSString+MD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6AFDFC177AD544009D09C3 /* NSString+MD5.m */; }; + 4C5485AA1825714000AAEE22 /* NSString+LocalizedPrice.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8D176817870ED900DE7624 /* NSString+LocalizedPrice.m */; }; + 4C5485AB1825714000AAEE22 /* NSString+StringFromTemplateString.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C4E1E6C179D3529009E9C71 /* NSString+StringFromTemplateString.m */; }; + 4C5485AC1825714000AAEE22 /* NSString+PropertyName.m in Sources */ = {isa = PBXBuildFile; fileRef = 65648B7D13923EC4001E163C /* NSString+PropertyName.m */; }; + 4C5485AD1825714000AAEE22 /* NSString+PathExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D713CC613F539A5007268DF /* NSString+PathExtensions.m */; }; + 4C5485AE1825714000AAEE22 /* NSString+Trimm.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B6AAD8D1447039B00EA1D96 /* NSString+Trimm.m */; }; + 4C5485AF1825714000AAEE22 /* NSString+StringWithCutPrefix.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B5E1B9514D037EE0075049A /* NSString+StringWithCutPrefix.m */; }; + 4C5485B01825714000AAEE22 /* NSString+IsEmailValid.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B1B280714D825A600FA5388 /* NSString+IsEmailValid.m */; }; + 4C5485B11825714000AAEE22 /* NSString+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B90996A14EA4D9500B19283 /* NSString+Base64.m */; }; + 4C5485B31825714000AAEE22 /* NSString+FileAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2A4A9D15EF62A3004ABB2E /* NSString+FileAttributes.m */; }; + 4C5485B41825714000AAEE22 /* NSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C98FBA016E0B38D00B6EFD8 /* NSString+HTML.m */; }; + 4C5485B51825714000AAEE22 /* NSString+MD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6AFDFC177AD544009D09C3 /* NSString+MD5.m */; }; + 4C5485B61825714000AAEE22 /* NSString+LocalizedPrice.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C8D176817870ED900DE7624 /* NSString+LocalizedPrice.m */; }; + 4C5485B71825714F00AAEE22 /* NSString+ToURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BA676CD144C474500B14D49 /* NSString+ToURL.m */; }; + 4C5485B81825714F00AAEE22 /* NSURL+ToURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BA676D1144C476600B14D49 /* NSURL+ToURL.m */; }; + 4C5485B91825714F00AAEE22 /* NSURL+CPlusPlus.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E44D665158F179400A2C11E /* NSURL+CPlusPlus.mm */; }; + 4C5485BC1825715700AAEE22 /* JFFMemoryMgmt.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B909B7D14EA918800B19283 /* JFFMemoryMgmt.m */; }; + 4C5485BD1825715700AAEE22 /* JFFRuntimeInitializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B909B7E14EA918800B19283 /* JFFRuntimeInitializer.m */; }; + 4C5485BE1825715800AAEE22 /* JFFMemoryMgmt.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B909B7D14EA918800B19283 /* JFFMemoryMgmt.m */; }; + 4C5485BF1825715800AAEE22 /* JFFRuntimeInitializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B909B7E14EA918800B19283 /* JFFRuntimeInitializer.m */; }; + 4C5485C01825715800AAEE22 /* JFFMemoryMgmt.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B909B7D14EA918800B19283 /* JFFMemoryMgmt.m */; }; + 4C5485C11825716100AAEE22 /* NSDictionary+BlocksAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B054D4E1521C6F4008E4B9E /* NSDictionary+BlocksAdditions.m */; }; + 4C5485C21825716100AAEE22 /* NSDictionary+JFFExtendedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B054D521521C739008E4B9E /* NSDictionary+JFFExtendedDictionary.m */; }; + 4C5485C31825716200AAEE22 /* NSDictionary+BlocksAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B054D4E1521C6F4008E4B9E /* NSDictionary+BlocksAdditions.m */; }; + 4C5485C41825716200AAEE22 /* NSDictionary+JFFExtendedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B054D521521C739008E4B9E /* NSDictionary+JFFExtendedDictionary.m */; }; + 4C5485C51825716200AAEE22 /* NSDictionary+BlocksAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B054D4E1521C6F4008E4B9E /* NSDictionary+BlocksAdditions.m */; }; + 4C5485C61825716200AAEE22 /* NSDictionary+JFFExtendedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B054D521521C739008E4B9E /* NSDictionary+JFFExtendedDictionary.m */; }; + 4C5485C71825716300AAEE22 /* NSDictionary+ValueWithType.m in Sources */ = {isa = PBXBuildFile; fileRef = 37497BCF1600971C00AF0C29 /* NSDictionary+ValueWithType.m */; }; + 4C5485C81825716300AAEE22 /* NSDictionary+JFFExtendedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B054D521521C739008E4B9E /* NSDictionary+JFFExtendedDictionary.m */; }; + 4C5485C9182571BA00AAEE22 /* JFFRuntimeAddiotions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0FFDB170602CC00282900 /* JFFRuntimeAddiotions.m */; }; + 4C5485CB182571F200AAEE22 /* JFFRuntimeInitializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B909B7E14EA918800B19283 /* JFFRuntimeInitializer.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 4C6AFDFD177AD544009D09C3 /* NSString+MD5.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C6AFDFB177AD544009D09C3 /* NSString+MD5.h */; }; 4C6AFDFE177AD544009D09C3 /* NSString+MD5.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6AFDFC177AD544009D09C3 /* NSString+MD5.m */; }; 4C6DFB13171849D800D86975 /* JFFError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C6DFB11171849D800D86975 /* JFFError.h */; }; @@ -112,30 +278,23 @@ 4CC01A9B17438582003F1C88 /* NSError+SetToPointer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC01A9917438582003F1C88 /* NSError+SetToPointer.m */; }; 4CC643BE1717009B000BF15A /* NSObject+ObjectMethodHook.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CC643BC1717009B000BF15A /* NSObject+ObjectMethodHook.h */; }; 4CC643BF1717009B000BF15A /* NSObject+ObjectMethodHook.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4CC643BD1717009B000BF15A /* NSObject+ObjectMethodHook.mm */; }; - 4CC643C0171700BA000BF15A /* NSObject+ObjectMethodHook.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4CC643BD1717009B000BF15A /* NSObject+ObjectMethodHook.mm */; }; 4CC643C1171700BA000BF15A /* NSObject+ObjectMethodHook.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4CC643BD1717009B000BF15A /* NSObject+ObjectMethodHook.mm */; }; 4CC643C2171700BA000BF15A /* NSObject+ObjectMethodHook.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4CC643BD1717009B000BF15A /* NSObject+ObjectMethodHook.mm */; }; 4CC643C3171700CB000BF15A /* NSObject+ObjectMethodHook.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4CC643BD1717009B000BF15A /* NSObject+ObjectMethodHook.mm */; }; 4CC6BBEC17058D4200BD49E8 /* NSDecimalNumber+Increment.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CC6BBEA17058D4200BD49E8 /* NSDecimalNumber+Increment.h */; }; 4CC6BBED17058D4200BD49E8 /* NSDecimalNumber+Increment.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBEB17058D4200BD49E8 /* NSDecimalNumber+Increment.m */; }; - 4CC6BBF017058D5F00BD49E8 /* UIColor+ColorForHex.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CC6BBEE17058D5F00BD49E8 /* UIColor+ColorForHex.h */; }; - 4CC6BBF117058D5F00BD49E8 /* UIColor+ColorForHex.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBEF17058D5F00BD49E8 /* UIColor+ColorForHex.m */; }; 4CC6BBF817058DB100BD49E8 /* NSData+ToString.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CC6BBF617058DB100BD49E8 /* NSData+ToString.h */; }; 4CC6BBF917058DB100BD49E8 /* NSData+ToString.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBF717058DB100BD49E8 /* NSData+ToString.m */; }; 4CC6BBFC17058DD000BD49E8 /* NSNumber+FSStorable.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CC6BBFA17058DCF00BD49E8 /* NSNumber+FSStorable.h */; }; 4CC6BBFD17058DD000BD49E8 /* NSNumber+FSStorable.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBFB17058DCF00BD49E8 /* NSNumber+FSStorable.m */; }; 4CC6BC0017058DFF00BD49E8 /* NSDateFormatter+MultiThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CC6BBFE17058DFE00BD49E8 /* NSDateFormatter+MultiThreading.h */; }; 4CC6BC0117058DFF00BD49E8 /* NSDateFormatter+MultiThreading.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BBFF17058DFE00BD49E8 /* NSDateFormatter+MultiThreading.m */; }; - 4CC6BC0817058E3900BD49E8 /* UIDevice+PlatformName.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CC6BC0617058E3700BD49E8 /* UIDevice+PlatformName.h */; }; - 4CC6BC0917058E3900BD49E8 /* UIDevice+PlatformName.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CC6BC0717058E3800BD49E8 /* UIDevice+PlatformName.m */; }; 4CEED6BB1701E236004CFCB3 /* JFFMutableAssignKeyDictionaryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CEED6B51701E0F5004CFCB3 /* JFFMutableAssignKeyDictionaryTest.m */; }; - 4CEED6BC1701E23C004CFCB3 /* JFFMutableAssignKeyDictionary.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4C3B63A11701C84700D5A8FD /* JFFMutableAssignKeyDictionary.mm */; }; 4CEED6BD1701E23C004CFCB3 /* JFFMutableAssignKeyDictionary.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4C3B63A11701C84700D5A8FD /* JFFMutableAssignKeyDictionary.mm */; }; 4CEED6BE1701E23C004CFCB3 /* JFFMutableAssignKeyDictionary.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4C3B63A11701C84700D5A8FD /* JFFMutableAssignKeyDictionary.mm */; }; 4CEED6BF1701E23D004CFCB3 /* JFFMutableAssignKeyDictionary.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4C3B63A11701C84700D5A8FD /* JFFMutableAssignKeyDictionary.mm */; }; 4CF0FFDC170602CC00282900 /* JFFRuntimeAddiotions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CF0FFDA170602CC00282900 /* JFFRuntimeAddiotions.h */; }; 4CF0FFDD170602CC00282900 /* JFFRuntimeAddiotions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0FFDB170602CC00282900 /* JFFRuntimeAddiotions.m */; }; - 4CF0FFDE1706038200282900 /* JFFRuntimeAddiotions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0FFDB170602CC00282900 /* JFFRuntimeAddiotions.m */; }; 4CF0FFDF1706038200282900 /* JFFRuntimeAddiotions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0FFDB170602CC00282900 /* JFFRuntimeAddiotions.m */; }; 4CF0FFE01706038300282900 /* JFFRuntimeAddiotions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0FFDB170602CC00282900 /* JFFRuntimeAddiotions.m */; }; 4CF0FFE11706038300282900 /* JFFRuntimeAddiotions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF0FFDB170602CC00282900 /* JFFRuntimeAddiotions.m */; }; @@ -237,10 +396,6 @@ 65802AA5148BF4A00040A93A /* NSArray+RemoveDuplicates.m in Sources */ = {isa = PBXBuildFile; fileRef = 53BCF8DF143239D100E896B3 /* NSArray+RemoveDuplicates.m */; }; 65802AA6148BF4A30040A93A /* NSArray+IsEmpty.m in Sources */ = {isa = PBXBuildFile; fileRef = 53E366C71433760A002AB0B9 /* NSArray+IsEmpty.m */; }; 65802AA7148BF4A60040A93A /* NSArray+NoThrowObjectAtIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B3CDDE41445DFD300733BE5 /* NSArray+NoThrowObjectAtIndex.m */; }; - 65802AA8148BF4AB0040A93A /* NSObject+Ownerships.m in Sources */ = {isa = PBXBuildFile; fileRef = 651BE138139107EA00DD6890 /* NSObject+Ownerships.m */; }; - 65802AA9148BF4AE0040A93A /* NSObject+OnDeallocBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 651BE1CC1391A36800DD6890 /* NSObject+OnDeallocBlock.m */; }; - 65802AAA148BF4B00040A93A /* NSObject+RuntimeExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D1DE52A13AB8269001FD56F /* NSObject+RuntimeExtensions.m */; }; - 65802AAB148BF4B20040A93A /* NSObject+Const0.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BE75CFE1434B3450076E068 /* NSObject+Const0.m */; }; 7E44D666158F179400A2C11E /* NSURL+CPlusPlus.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E44D664158F179400A2C11E /* NSURL+CPlusPlus.h */; }; 7E44D667158F179400A2C11E /* NSURL+CPlusPlus.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E44D664158F179400A2C11E /* NSURL+CPlusPlus.h */; }; 7E44D668158F179400A2C11E /* NSURL+CPlusPlus.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E44D664158F179400A2C11E /* NSURL+CPlusPlus.h */; }; @@ -253,10 +408,6 @@ 7E44D672158F189F00A2C11E /* NSString+CPlusPlus.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E44D66F158F189F00A2C11E /* NSString+CPlusPlus.h */; }; 7E44D673158F189F00A2C11E /* NSString+CPlusPlus.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E44D66F158F189F00A2C11E /* NSString+CPlusPlus.h */; }; 7E44D674158F189F00A2C11E /* NSString+CPlusPlus.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E44D66F158F189F00A2C11E /* NSString+CPlusPlus.h */; }; - 7E44D675158F189F00A2C11E /* NSString+CPlusPlus.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E44D670158F189F00A2C11E /* NSString+CPlusPlus.mm */; }; - 7E44D676158F189F00A2C11E /* NSString+CPlusPlus.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E44D670158F189F00A2C11E /* NSString+CPlusPlus.mm */; }; - 7E44D677158F189F00A2C11E /* NSString+CPlusPlus.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E44D670158F189F00A2C11E /* NSString+CPlusPlus.mm */; }; - 7E44D678158F189F00A2C11E /* NSString+CPlusPlus.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7E44D670158F189F00A2C11E /* NSString+CPlusPlus.mm */; }; 7E57F42514F93738002D139B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; 7E57F42B14F93738002D139B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 7E57F42914F93738002D139B /* InfoPlist.strings */; }; 7E57F43114F937E0002D139B /* NSString+ToURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BA676CD144C474500B14D49 /* NSString+ToURL.m */; }; @@ -376,8 +527,6 @@ CEB90823160C709D00EFC230 /* NSObject+DelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 655C20E615FE5A4000022B11 /* NSObject+DelegateProxy.m */; }; CEB90824160C70A300EFC230 /* DelegateProxyUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA0979B15FF2ADE0080DEF7 /* DelegateProxyUtils.m */; }; CEB90825160C70A300EFC230 /* NSString+DelegateProxySelectorsNames.m in Sources */ = {isa = PBXBuildFile; fileRef = CEA0979F15FF2C110080DEF7 /* NSString+DelegateProxySelectorsNames.m */; }; - CEB90826160C70B400EFC230 /* JFFMutableAssignArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D713C6C13F3F62B007268DF /* JFFMutableAssignArray.m */; }; - CEB90827160C711200EFC230 /* JFFAssignProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DB67B1E13E980B70024EA6C /* JFFAssignProxy.m */; }; CEB90828160C712C00EFC230 /* NSObject+RuntimeExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D1DE52A13AB8269001FD56F /* NSObject+RuntimeExtensions.m */; }; CEB90829160C73DE00EFC230 /* NSObject+Ownerships.m in Sources */ = {isa = PBXBuildFile; fileRef = 651BE138139107EA00DD6890 /* NSObject+Ownerships.m */; }; CEB9082A160C73EC00EFC230 /* NSObject+OnDeallocBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = 651BE1CC1391A36800DD6890 /* NSObject+OnDeallocBlock.m */; }; @@ -391,9 +540,7 @@ CEE653D016144C8900C4D536 /* JFFRuntimeInitializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B909B7E14EA918800B19283 /* JFFRuntimeInitializer.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; CEE653D31614502400C4D536 /* JFFOnDeallocBlockOwnerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE653D21614502400C4D536 /* JFFOnDeallocBlockOwnerTest.m */; }; CEE653D61614512E00C4D536 /* JFFMutableAssignDictionaryTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE653D51614512E00C4D536 /* JFFMutableAssignDictionaryTest.m */; }; - CEE653D7161451BF00C4D536 /* JFFMutableAssignDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD1820C1467D71B0033BEFF /* JFFMutableAssignDictionary.m */; }; CEE653DA16145C0D00C4D536 /* JFFMulticastDelegateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE653D916145C0D00C4D536 /* JFFMulticastDelegateTest.m */; }; - CEE653DB16145CED00C4D536 /* JFFMulticastDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DB67B1913E97FCF0024EA6C /* JFFMulticastDelegate.m */; }; CEE653DE16145D1900C4D536 /* JFFAssignProxyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE653DD16145D1900C4D536 /* JFFAssignProxyTest.m */; }; CEE653E116145E6300C4D536 /* NSObject+OwnershipsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE653E016145E6300C4D536 /* NSObject+OwnershipsTest.m */; }; CEE653E41614669500C4D536 /* JFFSimpleBlockHolderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE653E31614669200C4D536 /* JFFSimpleBlockHolderTest.m */; }; @@ -510,16 +657,12 @@ 4CC643BD1717009B000BF15A /* NSObject+ObjectMethodHook.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSObject+ObjectMethodHook.mm"; sourceTree = ""; }; 4CC6BBEA17058D4200BD49E8 /* NSDecimalNumber+Increment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDecimalNumber+Increment.h"; sourceTree = ""; }; 4CC6BBEB17058D4200BD49E8 /* NSDecimalNumber+Increment.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDecimalNumber+Increment.m"; sourceTree = ""; }; - 4CC6BBEE17058D5F00BD49E8 /* UIColor+ColorForHex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+ColorForHex.h"; sourceTree = ""; }; - 4CC6BBEF17058D5F00BD49E8 /* UIColor+ColorForHex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+ColorForHex.m"; sourceTree = ""; }; 4CC6BBF617058DB100BD49E8 /* NSData+ToString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+ToString.h"; sourceTree = ""; }; 4CC6BBF717058DB100BD49E8 /* NSData+ToString.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+ToString.m"; sourceTree = ""; }; 4CC6BBFA17058DCF00BD49E8 /* NSNumber+FSStorable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+FSStorable.h"; sourceTree = ""; }; 4CC6BBFB17058DCF00BD49E8 /* NSNumber+FSStorable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+FSStorable.m"; sourceTree = ""; }; 4CC6BBFE17058DFE00BD49E8 /* NSDateFormatter+MultiThreading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDateFormatter+MultiThreading.h"; sourceTree = ""; }; 4CC6BBFF17058DFE00BD49E8 /* NSDateFormatter+MultiThreading.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDateFormatter+MultiThreading.m"; sourceTree = ""; }; - 4CC6BC0617058E3700BD49E8 /* UIDevice+PlatformName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIDevice+PlatformName.h"; sourceTree = ""; }; - 4CC6BC0717058E3800BD49E8 /* UIDevice+PlatformName.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+PlatformName.m"; sourceTree = ""; }; 4CEED6B41701E0F5004CFCB3 /* JFFMutableAssignKeyDictionaryTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFMutableAssignKeyDictionaryTest.h; sourceTree = ""; }; 4CEED6B51701E0F5004CFCB3 /* JFFMutableAssignKeyDictionaryTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFMutableAssignKeyDictionaryTest.m; sourceTree = ""; }; 4CF0FFDA170602CC00282900 /* JFFRuntimeAddiotions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFRuntimeAddiotions.h; sourceTree = ""; }; @@ -856,16 +999,12 @@ children = ( 4CC6BBEA17058D4200BD49E8 /* NSDecimalNumber+Increment.h */, 4CC6BBEB17058D4200BD49E8 /* NSDecimalNumber+Increment.m */, - 4CC6BBEE17058D5F00BD49E8 /* UIColor+ColorForHex.h */, - 4CC6BBEF17058D5F00BD49E8 /* UIColor+ColorForHex.m */, 4CC6BBF617058DB100BD49E8 /* NSData+ToString.h */, 4CC6BBF717058DB100BD49E8 /* NSData+ToString.m */, 4CC6BBFA17058DCF00BD49E8 /* NSNumber+FSStorable.h */, 4CC6BBFB17058DCF00BD49E8 /* NSNumber+FSStorable.m */, 4CC6BBFE17058DFE00BD49E8 /* NSDateFormatter+MultiThreading.h */, 4CC6BBFF17058DFE00BD49E8 /* NSDateFormatter+MultiThreading.m */, - 4CC6BC0617058E3700BD49E8 /* UIDevice+PlatformName.h */, - 4CC6BC0717058E3800BD49E8 /* UIDevice+PlatformName.m */, ); path = Categories; sourceTree = ""; @@ -1206,6 +1345,7 @@ 5391040C14A88C04007315A3 /* JGCDAdditions.h in Headers */, 5391041014A88C04007315A3 /* NSArray+NoThrowObjectAtIndex.h in Headers */, 5391041114A88C04007315A3 /* NSString+Trimm.h in Headers */, + 4C069435182D3BAA0099BB66 /* JFFMemoryMgmt.h in Headers */, 5391041414A88C04007315A3 /* NSString+ToURL.h in Headers */, 5391041514A88C04007315A3 /* NSURL+ToURL.h in Headers */, 5391041614A88C04007315A3 /* JFFMutableAssignDictionary.h in Headers */, @@ -1231,6 +1371,7 @@ 7E44D672158F189F00A2C11E /* NSString+CPlusPlus.h in Headers */, 1B9C101115C802E600C20BCA /* JFFClangLiterals.h in Headers */, 1B14141F15DBCD3F00EFB2B8 /* NSDate+DateDifference.h in Headers */, + 4C069437182D3BAC0099BB66 /* JFFMemoryMgmt.h in Headers */, 1B2A4A9F15EF62A3004ABB2E /* NSString+FileAttributes.h in Headers */, 37497BD11600971C00AF0C29 /* NSDictionary+ValueWithType.h in Headers */, ); @@ -1262,6 +1403,7 @@ 7E57F4BB14F93840002D139B /* NSObject+Const0.h in Headers */, 7E57F4BF14F93840002D139B /* NSObject+ExpandArray.h in Headers */, 7E57F4C314F93840002D139B /* JFFAssignProxy.h in Headers */, + 4C069436182D3BAB0099BB66 /* JFFMemoryMgmt.h in Headers */, 7E57F4C714F93840002D139B /* JFFMutableAssignArray.h in Headers */, 7E57F4C914F93840002D139B /* JFFMutableAssignDictionary.h in Headers */, 7E57F4CB14F93840002D139B /* JFFMulticastDelegate.h in Headers */, @@ -1341,11 +1483,9 @@ 4C98FBAC16E0B56D00B6EFD8 /* NSArray+Templates.hpp in Headers */, 4C3B63A21701C84700D5A8FD /* JFFMutableAssignKeyDictionary.h in Headers */, 4CC6BBEC17058D4200BD49E8 /* NSDecimalNumber+Increment.h in Headers */, - 4CC6BBF017058D5F00BD49E8 /* UIColor+ColorForHex.h in Headers */, 4CC6BBF817058DB100BD49E8 /* NSData+ToString.h in Headers */, 4CC6BBFC17058DD000BD49E8 /* NSNumber+FSStorable.h in Headers */, 4CC6BC0017058DFF00BD49E8 /* NSDateFormatter+MultiThreading.h in Headers */, - 4CC6BC0817058E3900BD49E8 /* UIDevice+PlatformName.h in Headers */, 4CF0FFDC170602CC00282900 /* JFFRuntimeAddiotions.h in Headers */, 4CC643BE1717009B000BF15A /* NSObject+ObjectMethodHook.h in Headers */, 4C6DFB13171849D800D86975 /* JFFError.h in Headers */, @@ -1586,19 +1726,33 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4C1A0EAF182572A60020FBF6 /* NSOrderedSet+NoThrowObjectAtIndex.m in Sources */, + 4C54859B1825713F00AAEE22 /* NSString+Format.m in Sources */, + 4C1A0EA1182572A60020FBF6 /* NSError+SetToPointer.m in Sources */, + 4C54859D1825713F00AAEE22 /* NSString+IsEmpty.m in Sources */, + 4C5485A11825713F00AAEE22 /* NSString+MD5.m in Sources */, 5391041B14A88C04007315A3 /* JFFSimpleBlockHolder.m in Sources */, + 4C1A0EA3182572A60020FBF6 /* NSError+IsNetworkError.m in Sources */, + 4C1A0EA2182572A60020FBF6 /* NSError+WriteErrorToNSLog.m in Sources */, 5391041C14A88C04007315A3 /* NSArray+BlocksAdditions.m in Sources */, + 4C1A0EAE182572A60020FBF6 /* NSOrderedSet+BlocksAdditions.m in Sources */, 5391041D14A88C04007315A3 /* NSObject+Ownerships.m in Sources */, 5391041E14A88C04007315A3 /* NSString+Search.m in Sources */, 5391041F14A88C04007315A3 /* JFFOnDeallocBlockOwner.m in Sources */, 5391042014A88C04007315A3 /* NSObject+OnDeallocBlock.m in Sources */, + 4C54858C1825712C00AAEE22 /* NSArray+ArrayByRemovingObject.m in Sources */, 5391042114A88C04007315A3 /* NSString+PropertyName.m in Sources */, 5391042314A88C04007315A3 /* NSObject+RuntimeExtensions.m in Sources */, 5391042514A88C04007315A3 /* JFFMulticastDelegate.m in Sources */, + 4C5485781825711B00AAEE22 /* NSString+DelegateProxySelectorsNames.m in Sources */, 5391042614A88C04007315A3 /* JFFAssignProxy.m in Sources */, 5391042714A88C04007315A3 /* JFFMutableAssignArray.m in Sources */, + 4C5485BD1825715700AAEE22 /* JFFRuntimeInitializer.m in Sources */, 5391042814A88C04007315A3 /* NSString+PathExtensions.m in Sources */, + 4C1A0EA4182572A60020FBF6 /* NSDecimalNumber+Increment.m in Sources */, 5391042914A88C04007315A3 /* NSMutableArray+ChangeCount.m in Sources */, + 4C5485A21825713F00AAEE22 /* NSString+LocalizedPrice.m in Sources */, + 4C5485A01825713F00AAEE22 /* NSString+HTML.m in Sources */, 5391042A14A88C04007315A3 /* NSArray+RemoveDuplicates.m in Sources */, 5391042B14A88C04007315A3 /* NSArray+IsEmpty.m in Sources */, 5391042C14A88C04007315A3 /* NSObject+Const0.m in Sources */, @@ -1606,18 +1760,41 @@ 5391043414A88C04007315A3 /* NSArray+NoThrowObjectAtIndex.m in Sources */, 5391043514A88C04007315A3 /* NSString+Trimm.m in Sources */, 5391043814A88C04007315A3 /* NSString+ToURL.m in Sources */, + 4C5485BC1825715700AAEE22 /* JFFMemoryMgmt.m in Sources */, + 4C1A0EAC182572A60020FBF6 /* NSSet+BlocksAdditions.m in Sources */, + 4C5485A31825713F00AAEE22 /* NSString+StringFromTemplateString.m in Sources */, + 4C54859E1825713F00AAEE22 /* NSString+IsEmailValid.m in Sources */, 5391043914A88C04007315A3 /* NSURL+ToURL.m in Sources */, 5391043A14A88C04007315A3 /* JFFMutableAssignDictionary.m in Sources */, 5391043C14A88C04007315A3 /* JSignedRange.m in Sources */, + 4C54858B1825712C00AAEE22 /* NSArray+ToURLsSkippingNils.m in Sources */, + 4C5485771825711B00AAEE22 /* DelegateProxyUtils.m in Sources */, + 4C54857C1825711B00AAEE22 /* NSObject+DelegateProxy.m in Sources */, 5391043D14A88C04007315A3 /* NSObject+ExpandArray.m in Sources */, + 4C5485C41825716200AAEE22 /* NSDictionary+JFFExtendedDictionary.m in Sources */, + 4C54857D1825711B00AAEE22 /* NSObject+JFFMeaningClass.m in Sources */, + 4C06950D182D41BE0099BB66 /* NSString+CPlusPlus.mm in Sources */, 7E44D66C158F179400A2C11E /* NSURL+CPlusPlus.mm in Sources */, - 7E44D677158F189F00A2C11E /* NSString+CPlusPlus.mm in Sources */, + 4C54857E1825711B00AAEE22 /* NSObject+NsNullAsNil.m in Sources */, + 4C1A0EA8182572A60020FBF6 /* NSDateFormatter+MultiThreading.m in Sources */, + 4C54857A1825711B00AAEE22 /* JFFProxyDelegatesDispatcher.m in Sources */, + 4C54859F1825713F00AAEE22 /* NSString+Base64.m in Sources */, + 4C54859C1825713F00AAEE22 /* NSString+StringWithCutPrefix.m in Sources */, 1B14142415DBCD3F00EFB2B8 /* NSDate+DateDifference.m in Sources */, + 4C1A0EA0182572A60020FBF6 /* JFFSilentError.m in Sources */, 1B2A4AA415EF62A3004ABB2E /* NSString+FileAttributes.m in Sources */, 37497BD61600971C00AF0C29 /* NSDictionary+ValueWithType.m in Sources */, 4CEED6BE1701E23C004CFCB3 /* JFFMutableAssignKeyDictionary.mm in Sources */, 4CF0FFDF1706038200282900 /* JFFRuntimeAddiotions.m in Sources */, 4CC643C1171700BA000BF15A /* NSObject+ObjectMethodHook.mm in Sources */, + 4C1A0EAD182572A60020FBF6 /* NSMutableSet+StorableSet.m in Sources */, + 4C1A0EA7182572A60020FBF6 /* NSNumber+FSStorable.m in Sources */, + 4C5485791825711B00AAEE22 /* JFFDelegateProxyClassMethods.m in Sources */, + 4C1A0EAA182572A60020FBF6 /* JFFLogger.m in Sources */, + 4C1A0EA6182572A60020FBF6 /* NSData+ToString.m in Sources */, + 4C5485C31825716200AAEE22 /* NSDictionary+BlocksAdditions.m in Sources */, + 4C1A0EAB182572A60020FBF6 /* NSLocale+CurrentInterfaceLanguageCode.m in Sources */, + 4C54857B1825711B00AAEE22 /* NSObject+IsEqualTwoObjects.m in Sources */, 4C50BF5B171D85B400251A16 /* JFFError.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1626,37 +1803,75 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4C54859A1825713F00AAEE22 /* NSString+StringFromTemplateString.m in Sources */, + 4C54856D1825711B00AAEE22 /* NSObject+Ownerships.m in Sources */, + 4C5485921825713F00AAEE22 /* NSString+Format.m in Sources */, 65802A6C148BF2B50040A93A /* JGCDAdditions.mm in Sources */, + 4C5485891825712C00AAEE22 /* NSArray+ToURLsSkippingNils.m in Sources */, 65802A6E148BF2BA0040A93A /* JFFMulticastDelegate.m in Sources */, + 4C5485751825711B00AAEE22 /* NSObject+NsNullAsNil.m in Sources */, 65802A6F148BF2BE0040A93A /* JFFMutableAssignDictionary.m in Sources */, 65802A70148BF2C10040A93A /* JFFMutableAssignArray.m in Sources */, + 4C5485741825711B00AAEE22 /* NSObject+JFFMeaningClass.m in Sources */, 65802A72148BF2C80040A93A /* JFFAssignProxy.m in Sources */, + 4C1A0E9D182572A50020FBF6 /* NSMutableSet+StorableSet.m in Sources */, + 4C5485761825711B00AAEE22 /* NSObject+ObjectMethodHook.mm in Sources */, + 4C5485701825711B00AAEE22 /* NSObject+Const0.m in Sources */, 65802A95148BF4610040A93A /* NSString+ToURL.m in Sources */, + 4C1A0E97182572A50020FBF6 /* NSNumber+FSStorable.m in Sources */, + 4C5485981825713F00AAEE22 /* NSString+MD5.m in Sources */, + 4C1A0E91182572A50020FBF6 /* NSError+SetToPointer.m in Sources */, 65802A97148BF4640040A93A /* NSURL+ToURL.m in Sources */, + 4C5485CB182571F200AAEE22 /* JFFRuntimeInitializer.m in Sources */, 65802A9C148BF4800040A93A /* JFFSimpleBlockHolder.m in Sources */, + 4C5485C21825716100AAEE22 /* NSDictionary+JFFExtendedDictionary.m in Sources */, 65802A9D148BF4820040A93A /* JFFOnDeallocBlockOwner.m in Sources */, + 4C54856A1825711B00AAEE22 /* NSString+DelegateProxySelectorsNames.m in Sources */, + 4C5485931825713F00AAEE22 /* NSString+StringWithCutPrefix.m in Sources */, + 4C1A0E94182572A50020FBF6 /* NSDecimalNumber+Increment.m in Sources */, + 4C069438182D3BC60099BB66 /* JFFMemoryMgmt.m in Sources */, + 4C1A0E96182572A50020FBF6 /* NSData+ToString.m in Sources */, 65802A9E148BF4870040A93A /* NSString+Search.m in Sources */, + 4C1A0E9C182572A50020FBF6 /* NSSet+BlocksAdditions.m in Sources */, + 4C5485C9182571BA00AAEE22 /* JFFRuntimeAddiotions.m in Sources */, 65802A9F148BF4890040A93A /* NSString+PropertyName.m in Sources */, 65802AA0148BF48F0040A93A /* NSString+PathExtensions.m in Sources */, 65802AA1148BF4920040A93A /* NSString+Trimm.m in Sources */, 65802AA3148BF49B0040A93A /* NSMutableArray+ChangeCount.m in Sources */, 65802AA4148BF49D0040A93A /* NSArray+BlocksAdditions.m in Sources */, + 4C5485721825711B00AAEE22 /* NSObject+IsEqualTwoObjects.m in Sources */, + 4C5485691825711B00AAEE22 /* DelegateProxyUtils.m in Sources */, + 4C1A0E92182572A50020FBF6 /* NSError+WriteErrorToNSLog.m in Sources */, 65802AA5148BF4A00040A93A /* NSArray+RemoveDuplicates.m in Sources */, + 4C1A0E9A182572A50020FBF6 /* JFFLogger.m in Sources */, + 4C5485731825711B00AAEE22 /* NSObject+DelegateProxy.m in Sources */, + 4C54856E1825711B00AAEE22 /* NSObject+OnDeallocBlock.m in Sources */, + 4C5485941825713F00AAEE22 /* NSString+IsEmpty.m in Sources */, 65802AA6148BF4A30040A93A /* NSArray+IsEmpty.m in Sources */, + 4C5485951825713F00AAEE22 /* NSString+IsEmailValid.m in Sources */, 65802AA7148BF4A60040A93A /* NSArray+NoThrowObjectAtIndex.m in Sources */, - 65802AA8148BF4AB0040A93A /* NSObject+Ownerships.m in Sources */, - 65802AA9148BF4AE0040A93A /* NSObject+OnDeallocBlock.m in Sources */, - 65802AAA148BF4B00040A93A /* NSObject+RuntimeExtensions.m in Sources */, - 65802AAB148BF4B20040A93A /* NSObject+Const0.m in Sources */, + 4C54856F1825711B00AAEE22 /* NSObject+RuntimeExtensions.m in Sources */, + 4C5485991825713F00AAEE22 /* NSString+LocalizedPrice.m in Sources */, + 4C5485971825713F00AAEE22 /* NSString+HTML.m in Sources */, + 4C1A0E98182572A50020FBF6 /* NSDateFormatter+MultiThreading.m in Sources */, + 4C5485961825713F00AAEE22 /* NSString+Base64.m in Sources */, + 4C1A0E90182572A50020FBF6 /* JFFSilentError.m in Sources */, + 4C5485711825711B00AAEE22 /* NSObject+ExpandArray.m in Sources */, 7E44D66B158F179400A2C11E /* NSURL+CPlusPlus.mm in Sources */, - 7E44D676158F189F00A2C11E /* NSString+CPlusPlus.mm in Sources */, + 4C5485C11825716100AAEE22 /* NSDictionary+BlocksAdditions.m in Sources */, + 4C1A0E93182572A50020FBF6 /* NSError+IsNetworkError.m in Sources */, 1B14142315DBCD3F00EFB2B8 /* NSDate+DateDifference.m in Sources */, + 4C54856C1825711B00AAEE22 /* JFFProxyDelegatesDispatcher.m in Sources */, + 4C54856B1825711B00AAEE22 /* JFFDelegateProxyClassMethods.m in Sources */, 1B2A4AA315EF62A3004ABB2E /* NSString+FileAttributes.m in Sources */, + 4C1A0E9E182572A50020FBF6 /* NSOrderedSet+BlocksAdditions.m in Sources */, + 4C1A0E9F182572A50020FBF6 /* NSOrderedSet+NoThrowObjectAtIndex.m in Sources */, + 4C1A0E9B182572A50020FBF6 /* NSLocale+CurrentInterfaceLanguageCode.m in Sources */, + 4C54858A1825712C00AAEE22 /* NSArray+ArrayByRemovingObject.m in Sources */, 37497BD51600971C00AF0C29 /* NSDictionary+ValueWithType.m in Sources */, 4CEED6BF1701E23D004CFCB3 /* JFFMutableAssignKeyDictionary.mm in Sources */, - 4CF0FFDE1706038200282900 /* JFFRuntimeAddiotions.m in Sources */, - 4CC643C0171700BA000BF15A /* NSObject+ObjectMethodHook.mm in Sources */, 4C50BF5A171D85B400251A16 /* JFFError.m in Sources */, + 4C06950C182D41BD0099BB66 /* NSString+CPlusPlus.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1665,39 +1880,75 @@ buildActionMask = 2147483647; files = ( 7E57F43114F937E0002D139B /* NSString+ToURL.m in Sources */, + 4C54858E1825712C00AAEE22 /* NSArray+ArrayByRemovingObject.m in Sources */, 7E57F43314F937E0002D139B /* NSURL+ToURL.m in Sources */, + 4C1A0EB4182572A60020FBF6 /* NSDecimalNumber+Increment.m in Sources */, 7E57F44214F937E0002D139B /* JFFSimpleBlockHolder.m in Sources */, 7E57F44414F937E0002D139B /* JFFOnDeallocBlockOwner.m in Sources */, + 4C1A0EB7182572A60020FBF6 /* NSNumber+FSStorable.m in Sources */, + 4C5485841825711B00AAEE22 /* NSObject+DelegateProxy.m in Sources */, + 4C5485BE1825715800AAEE22 /* JFFMemoryMgmt.m in Sources */, 7E57F44814F937E0002D139B /* NSString+Format.m in Sources */, + 4C5485801825711B00AAEE22 /* NSString+DelegateProxySelectorsNames.m in Sources */, + 4C5485A51825714000AAEE22 /* NSString+StringWithCutPrefix.m in Sources */, 7E57F44A14F937E0002D139B /* NSString+Search.m in Sources */, 7E57F44C14F937E0002D139B /* NSString+PropertyName.m in Sources */, + 4C5485AB1825714000AAEE22 /* NSString+StringFromTemplateString.m in Sources */, 7E57F44E14F937E0002D139B /* NSString+PathExtensions.m in Sources */, + 4C1A0EBF182572A60020FBF6 /* NSOrderedSet+NoThrowObjectAtIndex.m in Sources */, 7E57F45014F937E0002D139B /* NSString+Trimm.m in Sources */, 7E57F45414F937E0002D139B /* NSString+IsEmpty.m in Sources */, 7E57F45914F937E0002D139B /* NSMutableArray+ChangeCount.m in Sources */, + 4C5485851825711B00AAEE22 /* NSObject+JFFMeaningClass.m in Sources */, 7E57F45B14F937E0002D139B /* NSArray+BlocksAdditions.m in Sources */, 7E57F45D14F937E0002D139B /* NSArray+RemoveDuplicates.m in Sources */, + 4C1A0EB1182572A60020FBF6 /* NSError+SetToPointer.m in Sources */, 7E57F45F14F937E0002D139B /* NSArray+IsEmpty.m in Sources */, 7E57F46114F937E0002D139B /* NSArray+NoThrowObjectAtIndex.m in Sources */, + 4C1A0EB2182572A60020FBF6 /* NSError+WriteErrorToNSLog.m in Sources */, 7E57F46314F937E0002D139B /* NSObject+Ownerships.m in Sources */, + 4C5485A91825714000AAEE22 /* NSString+MD5.m in Sources */, + 4C5485821825711B00AAEE22 /* JFFProxyDelegatesDispatcher.m in Sources */, + 4C5485831825711B00AAEE22 /* NSObject+IsEqualTwoObjects.m in Sources */, + 4C5485A41825714000AAEE22 /* NSString+Format.m in Sources */, 7E57F46514F937E0002D139B /* NSObject+OnDeallocBlock.m in Sources */, + 4C5485A61825714000AAEE22 /* NSString+IsEmailValid.m in Sources */, + 4C1A0EBC182572A60020FBF6 /* NSSet+BlocksAdditions.m in Sources */, + 4C5485861825711B00AAEE22 /* NSObject+NsNullAsNil.m in Sources */, + 4C5485A71825714000AAEE22 /* NSString+Base64.m in Sources */, 7E57F46714F937E0002D139B /* NSObject+RuntimeExtensions.m in Sources */, + 4C1A0EBA182572A60020FBF6 /* JFFLogger.m in Sources */, + 4C1A0EBB182572A60020FBF6 /* NSLocale+CurrentInterfaceLanguageCode.m in Sources */, 7E57F46914F937E0002D139B /* NSObject+Const0.m in Sources */, 7E57F46D14F937E0002D139B /* NSObject+ExpandArray.m in Sources */, 7E57F47114F937E0002D139B /* JFFAssignProxy.m in Sources */, + 4C5485AA1825714000AAEE22 /* NSString+LocalizedPrice.m in Sources */, + 4C5485A81825714000AAEE22 /* NSString+HTML.m in Sources */, 7E57F47514F937E0002D139B /* JFFMutableAssignArray.m in Sources */, 7E57F47714F937E0002D139B /* JFFMutableAssignDictionary.m in Sources */, + 4C1A0EB8182572A60020FBF6 /* NSDateFormatter+MultiThreading.m in Sources */, 7E57F47914F937E0002D139B /* JFFMulticastDelegate.m in Sources */, + 4C1A0EB6182572A60020FBF6 /* NSData+ToString.m in Sources */, + 4C5485C51825716200AAEE22 /* NSDictionary+BlocksAdditions.m in Sources */, + 4C1A0EBE182572A60020FBF6 /* NSOrderedSet+BlocksAdditions.m in Sources */, + 4C54858D1825712C00AAEE22 /* NSArray+ToURLsSkippingNils.m in Sources */, 7E57F47D14F937E0002D139B /* JGCDAdditions.mm in Sources */, + 4C5485C61825716200AAEE22 /* NSDictionary+JFFExtendedDictionary.m in Sources */, 7E57F47F14F937E0002D139B /* JSignedRange.m in Sources */, + 4C1A0EBD182572A60020FBF6 /* NSMutableSet+StorableSet.m in Sources */, 7E44D66D158F179400A2C11E /* NSURL+CPlusPlus.mm in Sources */, - 7E44D678158F189F00A2C11E /* NSString+CPlusPlus.mm in Sources */, 1B14142515DBCD3F00EFB2B8 /* NSDate+DateDifference.m in Sources */, + 4C5485811825711B00AAEE22 /* JFFDelegateProxyClassMethods.m in Sources */, 1B2A4AA515EF62A3004ABB2E /* NSString+FileAttributes.m in Sources */, 37497BD71600971C00AF0C29 /* NSDictionary+ValueWithType.m in Sources */, 4CEED6BD1701E23C004CFCB3 /* JFFMutableAssignKeyDictionary.mm in Sources */, 4CF0FFE01706038300282900 /* JFFRuntimeAddiotions.m in Sources */, + 4C54857F1825711B00AAEE22 /* DelegateProxyUtils.m in Sources */, + 4C1A0EB0182572A60020FBF6 /* JFFSilentError.m in Sources */, + 4C06950E182D41BE0099BB66 /* NSString+CPlusPlus.mm in Sources */, 4CC643C2171700BA000BF15A /* NSObject+ObjectMethodHook.mm in Sources */, + 4C1A0EB3182572A60020FBF6 /* NSError+IsNetworkError.m in Sources */, + 4C5485BF1825715800AAEE22 /* JFFRuntimeInitializer.m in Sources */, 4C50BF5C171D85B500251A16 /* JFFError.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1706,66 +1957,103 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 4C5485B01825714000AAEE22 /* NSString+IsEmailValid.m in Sources */, CE444A46160860F300DD85B0 /* EmptyStringTest.m in Sources */, + 4C5485AC1825714000AAEE22 /* NSString+PropertyName.m in Sources */, CE444A481608634700DD85B0 /* NSObject+JFFMeaningClass.m in Sources */, CE444A4B1608636400DD85B0 /* JFFMeaningClassTest.m in Sources */, CE444A6E1608698600DD85B0 /* NSString+IsEmpty.m in Sources */, CE914E54160B71B300C89F37 /* DelegateProxyTest.m in Sources */, + 4C5485B41825714000AAEE22 /* NSString+HTML.m in Sources */, CE914E5F160C4B0C00C89F37 /* JFFProxyDelegatesDispatcher.m in Sources */, + 4C5485B61825714000AAEE22 /* NSString+LocalizedPrice.m in Sources */, CE914E60160C4B1900C89F37 /* JFFDelegateProxyClassMethods.m in Sources */, + 4C54855D1825710700AAEE22 /* JFFMutableAssignKeyDictionary.mm in Sources */, + 4C1A0ECA182572A60020FBF6 /* JFFLogger.m in Sources */, + 4C5485C71825716300AAEE22 /* NSDictionary+ValueWithType.m in Sources */, CEB90821160C708300EFC230 /* NSArray+BlocksAdditions.m in Sources */, + 4C5485881825711C00AAEE22 /* NSObject+NsNullAsNil.m in Sources */, CEB90823160C709D00EFC230 /* NSObject+DelegateProxy.m in Sources */, CEB90824160C70A300EFC230 /* DelegateProxyUtils.m in Sources */, CEB90825160C70A300EFC230 /* NSString+DelegateProxySelectorsNames.m in Sources */, - CEB90826160C70B400EFC230 /* JFFMutableAssignArray.m in Sources */, - CEB90827160C711200EFC230 /* JFFAssignProxy.m in Sources */, + 4C5485AE1825714000AAEE22 /* NSString+Trimm.m in Sources */, + 4C1A0EC7182572A60020FBF6 /* NSNumber+FSStorable.m in Sources */, + 4C54855E1825710700AAEE22 /* JFFMulticastDelegate.m in Sources */, + 4C1A0EC3182572A60020FBF6 /* NSError+IsNetworkError.m in Sources */, CEB90828160C712C00EFC230 /* NSObject+RuntimeExtensions.m in Sources */, CEB90829160C73DE00EFC230 /* NSObject+Ownerships.m in Sources */, + 4C1A0EC8182572A60020FBF6 /* NSDateFormatter+MultiThreading.m in Sources */, + 4C54855F1825710700AAEE22 /* JGCDAdditions.mm in Sources */, CEB9082A160C73EC00EFC230 /* NSObject+OnDeallocBlock.m in Sources */, CEB9082B160C740300EFC230 /* JFFOnDeallocBlockOwner.m in Sources */, CE03CAB2160CAD0500039011 /* NSObjectInstancesCountTest.m in Sources */, CE57F8BB1611998D00124D90 /* DateDifferenceStringFromDateTest.m in Sources */, + 4C5485B31825714000AAEE22 /* NSString+FileAttributes.m in Sources */, CE57F8BD16119A5400124D90 /* NSDate+DateDifference.m in Sources */, CE57F8C01611A32000124D90 /* NumberOfCharacterFromStringTest.m in Sources */, CE57F8C11611A3D500124D90 /* NSString+Search.m in Sources */, + 4C1A0EC6182572A60020FBF6 /* NSData+ToString.m in Sources */, CE57F8C41611A61E00124D90 /* NSObject_IsEqualTwoObjectsTest.m in Sources */, + 4C54858F1825712D00AAEE22 /* NSArray+NoThrowObjectAtIndex.m in Sources */, CE57F8C51611A6AA00124D90 /* NSObject+IsEqualTwoObjects.m in Sources */, + 4C1A0ECC182572A60020FBF6 /* NSSet+BlocksAdditions.m in Sources */, CE57FBD81611F80800124D90 /* ObjcDynamicCastTest.mm in Sources */, CE57FBDD1611F8FC00124D90 /* JMParent.m in Sources */, + 4C54855A1825710700AAEE22 /* JFFAssignProxy.m in Sources */, + 4C1A0ECB182572A60020FBF6 /* NSLocale+CurrentInterfaceLanguageCode.m in Sources */, CE57FBE01611F90900124D90 /* JMChild.m in Sources */, CE609CF216134405008259CF /* JFFMutableAssignArrayTest.m in Sources */, CEE653D016144C8900C4D536 /* JFFRuntimeInitializer.m in Sources */, + 4C5485B11825714000AAEE22 /* NSString+Base64.m in Sources */, CEE653D31614502400C4D536 /* JFFOnDeallocBlockOwnerTest.m in Sources */, + 4C5485871825711C00AAEE22 /* NSObject+Const0.m in Sources */, + 4C5485C81825716300AAEE22 /* NSDictionary+JFFExtendedDictionary.m in Sources */, CEE653D61614512E00C4D536 /* JFFMutableAssignDictionaryTest.m in Sources */, - CEE653D7161451BF00C4D536 /* JFFMutableAssignDictionary.m in Sources */, + 4C06950F182D41BE0099BB66 /* NSString+CPlusPlus.mm in Sources */, CEE653DA16145C0D00C4D536 /* JFFMulticastDelegateTest.m in Sources */, - CEE653DB16145CED00C4D536 /* JFFMulticastDelegate.m in Sources */, CEE653DE16145D1900C4D536 /* JFFAssignProxyTest.m in Sources */, + 4C1A0ECF182572A60020FBF6 /* NSOrderedSet+NoThrowObjectAtIndex.m in Sources */, CEE653E116145E6300C4D536 /* NSObject+OwnershipsTest.m in Sources */, CEE653E41614669500C4D536 /* JFFSimpleBlockHolderTest.m in Sources */, + 4C5485B51825714000AAEE22 /* NSString+MD5.m in Sources */, CEE653E5161466DA00C4D536 /* JFFSimpleBlockHolder.m in Sources */, + 4C1A0ECD182572A60020FBF6 /* NSMutableSet+StorableSet.m in Sources */, CEE6574616148DCC00C4D536 /* NSObjectRuntimeExtensionsTest.m in Sources */, CEE6574A16148F3000C4D536 /* JUArrayAdditionsTest.m in Sources */, + 4C5485911825712D00AAEE22 /* NSArray+ArrayByRemovingObject.m in Sources */, CEE6574B16148F7E00C4D536 /* NSArray+RemoveDuplicates.m in Sources */, CEE6574C1614900000C4D536 /* NSArray+IsEmpty.m in Sources */, CE2B32871617B55F003FB5F8 /* JUMutableArrayTest.m in Sources */, + 4C5485AF1825714000AAEE22 /* NSString+StringWithCutPrefix.m in Sources */, + 4C1A0ECE182572A60020FBF6 /* NSOrderedSet+BlocksAdditions.m in Sources */, + 4C1A0EC2182572A60020FBF6 /* NSError+WriteErrorToNSLog.m in Sources */, + 4C5485B81825714F00AAEE22 /* NSURL+ToURL.m in Sources */, + 4C5485901825712D00AAEE22 /* NSArray+ToURLsSkippingNils.m in Sources */, + 4C54855C1825710700AAEE22 /* JFFMutableAssignDictionary.m in Sources */, + 4C1A0EC0182572A60020FBF6 /* JFFSilentError.m in Sources */, + 4C5485C01825715800AAEE22 /* JFFMemoryMgmt.m in Sources */, CE2B32891617B5BF003FB5F8 /* NSMutableArray+ChangeCount.m in Sources */, CE2B328C1617B5E9003FB5F8 /* JFFStringFormatTest.m in Sources */, CE2B328D1617B632003FB5F8 /* NSString+Format.m in Sources */, + 4C1A0EC1182572A60020FBF6 /* NSError+SetToPointer.m in Sources */, CE1BC324161B33AB007DEC95 /* NSArray+ExpandArrayTest.m in Sources */, CE1BC326161B349A007DEC95 /* NSObject+ExpandArray.m in Sources */, CE1BC36A161B38AF007DEC95 /* NSDictionary+BlocksAdditions.m in Sources */, + 4C5485AD1825714000AAEE22 /* NSString+PathExtensions.m in Sources */, CE1BC36E161B3A51007DEC95 /* NSDictionary+BlocksAdditionsTest.m in Sources */, + 4C5485B91825714F00AAEE22 /* NSURL+CPlusPlus.mm in Sources */, 4CEED6BB1701E236004CFCB3 /* JFFMutableAssignKeyDictionaryTest.m in Sources */, - 4CEED6BC1701E23C004CFCB3 /* JFFMutableAssignKeyDictionary.mm in Sources */, 4C712E1917046A0300346F5E /* MethodObserverTest.m in Sources */, 4C8A22791705913B000539D2 /* TypeSignatureTest.m in Sources */, 4CF0FFE11706038300282900 /* JFFRuntimeAddiotions.m in Sources */, + 4C54855B1825710700AAEE22 /* JFFMutableAssignArray.m in Sources */, 4CC643C3171700CB000BF15A /* NSObject+ObjectMethodHook.mm in Sources */, 4C50BF59171D85B300251A16 /* JFFError.m in Sources */, + 4C5485B71825714F00AAEE22 /* NSString+ToURL.m in Sources */, 4CAB2A571730097A001EB552 /* JFFRuntimeAddiotionsTest.m in Sources */, 4C4E1E72179D55AF009E9C71 /* StringFromTemplateString.m in Sources */, 4C4E1E77179D56D5009E9C71 /* NSString+StringFromTemplateString.m in Sources */, + 4C1A0EC4182572A60020FBF6 /* NSDecimalNumber+Increment.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1807,7 +2095,6 @@ 1B054D541521C739008E4B9E /* NSDictionary+JFFExtendedDictionary.m in Sources */, 1BBD97E115249C4200A34E64 /* NSObject+IsEqualTwoObjects.m in Sources */, 7E44D66A158F179400A2C11E /* NSURL+CPlusPlus.mm in Sources */, - 7E44D675158F189F00A2C11E /* NSString+CPlusPlus.mm in Sources */, 1B14142215DBCD3F00EFB2B8 /* NSDate+DateDifference.m in Sources */, 1B2A4AA215EF62A3004ABB2E /* NSString+FileAttributes.m in Sources */, 37063C6815FE0C5700B4B059 /* NSOrderedSet+NoThrowObjectAtIndex.m in Sources */, @@ -1821,6 +2108,7 @@ CE57FBB91611EFFF00124D90 /* NSSet+BlocksAdditions.m in Sources */, CE57FBBE1611F0BF00124D90 /* NSMutableSet+StorableSet.m in Sources */, CEE653CF16144C8900C4D536 /* JFFRuntimeInitializer.m in Sources */, + 4C06950B182D41BD0099BB66 /* NSString+CPlusPlus.mm in Sources */, CE998C491626B988002D39FD /* NSOrderedSet+BlocksAdditions.m in Sources */, 37805593164D432700459BA7 /* NSLocale+CurrentInterfaceLanguageCode.m in Sources */, CEC70F14169DBA8B006D63DE /* JFFLogger.m in Sources */, @@ -1828,11 +2116,9 @@ 4C98FBA216E0B38D00B6EFD8 /* NSString+HTML.m in Sources */, 4C3B63A31701C84700D5A8FD /* JFFMutableAssignKeyDictionary.mm in Sources */, 4CC6BBED17058D4200BD49E8 /* NSDecimalNumber+Increment.m in Sources */, - 4CC6BBF117058D5F00BD49E8 /* UIColor+ColorForHex.m in Sources */, 4CC6BBF917058DB100BD49E8 /* NSData+ToString.m in Sources */, 4CC6BBFD17058DD000BD49E8 /* NSNumber+FSStorable.m in Sources */, 4CC6BC0117058DFF00BD49E8 /* NSDateFormatter+MultiThreading.m in Sources */, - 4CC6BC0917058E3900BD49E8 /* UIDevice+PlatformName.m in Sources */, 4CF0FFDD170602CC00282900 /* JFFRuntimeAddiotions.m in Sources */, 4CC643BF1717009B000BF15A /* NSObject+ObjectMethodHook.mm in Sources */, 4C6DFB14171849D800D86975 /* JFFError.m in Sources */, @@ -1920,6 +2206,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; GCC_OPTIMIZATION_LEVEL = 0; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; @@ -1938,6 +2225,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + CLANG_WARN_ENUM_CONVERSION = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; diff --git a/lib/JFFUtils/JFFUtilsTest/JFFMulticastDelegateTest.m b/lib/JFFUtils/JFFUtilsTest/JFFMulticastDelegateTest.m index 4b49b8d..913bb03 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFMulticastDelegateTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JFFMulticastDelegateTest.m @@ -9,7 +9,7 @@ - (NSUInteger)justReturnFiveNumber; @interface TestClassForMulticast : NSObject < TestMulticastDelegateInterface > -@property ( nonatomic, unsafe_unretained ) NSUInteger initialState; +@property (nonatomic, unsafe_unretained) NSUInteger initialState; @end @@ -47,8 +47,8 @@ - (void)testMutableAssignArrayAssignIssue STAssertTrue( initState_ == [ multicast justReturnFiveNumber ], @"Contains 1 object" ); } - STAssertTrue( delegateDeallocated, @"Target should be dealloced" ); - STAssertTrue( 0 == [ multicast justReturnFiveNumber ], @"Empty array" ); + STAssertTrue(delegateDeallocated, @"Target should be dealloced"); + STAssertTrue(0 == [multicast justReturnFiveNumber], @"Empty array"); } - (void)testMulticastDelegateFirstRelease diff --git a/lib/JFFUtils/MemoryManagement/JFFRuntimeInitializer.m b/lib/JFFUtils/MemoryManagement/JFFRuntimeInitializer.m index 288e5f7..453c717 100755 --- a/lib/JFFUtils/MemoryManagement/JFFRuntimeInitializer.m +++ b/lib/JFFUtils/MemoryManagement/JFFRuntimeInitializer.m @@ -24,6 +24,7 @@ - (void)deallocRemoveAssociatedObjectsPrototype + (void)load { + //TODO may be we can already remove this ??? [self hookInstanceMethodForClass:[NSObject class] withSelector:@selector(dealloc) prototypeMethodSelector:@selector(deallocRemoveAssociatedObjectsPrototype) diff --git a/lib/JFFUtils/NSString/NSString+CPlusPlus.h b/lib/JFFUtils/NSString/NSString+CPlusPlus.h index 972ebc7..0a39b4a 100755 --- a/lib/JFFUtils/NSString/NSString+CPlusPlus.h +++ b/lib/JFFUtils/NSString/NSString+CPlusPlus.h @@ -4,6 +4,6 @@ @interface NSString (CPlusPlus) - (std::string)toStlString; -+ (instancetype)stringWithStlStringNoCopy:( const std::string& )stlString_; ++ (instancetype)stringWithStlStringNoCopy:(const std::string &)stlString; @end diff --git a/lib/JFFUtils/NSString/NSString+CPlusPlus.mm b/lib/JFFUtils/NSString/NSString+CPlusPlus.mm index 6a4e197..6020dfe 100755 --- a/lib/JFFUtils/NSString/NSString+CPlusPlus.mm +++ b/lib/JFFUtils/NSString/NSString+CPlusPlus.mm @@ -10,8 +10,8 @@ @implementation NSString (CPlusPlus) std::string urlCppString ( - [self cStringUsingEncoding: NSUTF8StringEncoding], - [self lengthOfBytesUsingEncoding: NSUTF8StringEncoding] + [self cStringUsingEncoding:NSUTF8StringEncoding], + [self lengthOfBytesUsingEncoding:NSUTF8StringEncoding] ); return urlCppString; diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest.xcodeproj/project.pbxproj b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest.xcodeproj/project.pbxproj index 8ec79f0..cde069a 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest.xcodeproj/project.pbxproj +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 1B0E89DF1563FB1100825E3C /* libc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B0E89DE1563FB1100825E3C /* libc++.dylib */; }; - 1B12CB3B144D5C5900DFE2B1 /* JFFAsyncOperationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B12CB3A144D5C5900DFE2B1 /* JFFAsyncOperationManager.m */; }; 1B2D8C49154BFE7300360296 /* libJFFTestTools.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B2D8C46154BFE6400360296 /* libJFFTestTools.a */; }; 1B835A25142C8BC400FC004C /* libJFFAsyncOperations.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B835A20142C8BB300FC004C /* libJFFAsyncOperations.a */; }; 1B835A26142C8BC400FC004C /* libJFFUtils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B835A16142C8BAB00FC004C /* libJFFUtils.a */; }; @@ -26,8 +25,10 @@ 1BEE3AFF15EFA9D40024D249 /* CachedAsyncOperationsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 65977F8014A6731000AB83AE /* CachedAsyncOperationsTest.m */; }; 1BEE3B0015EFA9D40024D249 /* AsyncOperationBinder.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B7A10A314C036D900F37C95 /* AsyncOperationBinder.m */; }; 1BEE3B0115EFA9D40024D249 /* AsyncOperationWithDelayTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 65359B4D151A6DB90099D6FE /* AsyncOperationWithDelayTest.m */; }; + 4C0C3F6A1826EAC800984027 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C0C3F691826EAC800984027 /* QuartzCore.framework */; }; 4CCA7DFE17FEE7A300D85F5B /* SequenceWithAllResultTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CCA7DFD17FEE7A300D85F5B /* SequenceWithAllResultTest.m */; }; 4CCA7E0117FEEA6100D85F5B /* SequenceWithSuccessfullResultTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CCA7E0017FEEA6100D85F5B /* SequenceWithSuccessfullResultTest.m */; }; + 4CDB8E16182BE5A300C5BFA3 /* JFileDescriptorReaderTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CDB8E15182BE5A300C5BFA3 /* JFileDescriptorReaderTest.m */; }; 8D29EF8D13BE066900041B6A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D29EF8C13BE066900041B6A /* UIKit.framework */; }; 8D29EF8F13BE066900041B6A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D29EF8E13BE066900041B6A /* Foundation.framework */; }; 8D29EF9113BE066900041B6A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D29EF9013BE066900041B6A /* CoreGraphics.framework */; }; @@ -88,6 +89,13 @@ remoteGlobalIDString = D2AAC07E0554694100DB518D; remoteInfo = JFFScheduler; }; + 4C0C3F6E1826EAC800984027 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1B835A18142C8BB300FC004C /* JFFAsyncOperations.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4C1A0F8D182577BE0020FBF6; + remoteInfo = JFFAsyncOperationsMacOS; + }; 5357CDFC14A9F5130046EA34 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 1B835A18142C8BB300FC004C /* JFFAsyncOperations.xcodeproj */; @@ -156,8 +164,6 @@ /* Begin PBXFileReference section */ 1B0857D014516076001DDE0A /* FailOnFirstErrorGroupOfAsyncOperationsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FailOnFirstErrorGroupOfAsyncOperationsTest.m; sourceTree = ""; }; 1B0E89DE1563FB1100825E3C /* libc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.dylib"; path = "usr/lib/libc++.dylib"; sourceTree = SDKROOT; }; - 1B12CB39144D5C5900DFE2B1 /* JFFAsyncOperationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationManager.h; sourceTree = ""; }; - 1B12CB3A144D5C5900DFE2B1 /* JFFAsyncOperationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOperationManager.m; sourceTree = ""; }; 1B2A67C8143F474300BC284F /* JFFDidFinishAsyncOperationBlockHolderTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFDidFinishAsyncOperationBlockHolderTest.m; sourceTree = ""; }; 1B2A680C143F514C00BC284F /* JFFCancelAyncOperationBlockHolderTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFCancelAyncOperationBlockHolderTest.m; sourceTree = ""; }; 1B2D8C3E154BFE6400360296 /* JFFTestTools.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = JFFTestTools.xcodeproj; path = ../../lib/JFFTestTools/JFFTestTools.xcodeproj; sourceTree = ""; }; @@ -170,8 +176,10 @@ 1BA2551F1443114300C9B2BE /* SequenceOfAsyncOperationsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SequenceOfAsyncOperationsTest.m; sourceTree = ""; }; 1BA27738144D9B1B00774C8E /* TrySequenceOfAsyncOperationsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TrySequenceOfAsyncOperationsTest.m; sourceTree = ""; }; 1BED04FF144EBF2800B8DC2A /* GroupOfAsyncOperationsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GroupOfAsyncOperationsTest.m; sourceTree = ""; }; + 4C0C3F691826EAC800984027 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 4CCA7DFD17FEE7A300D85F5B /* SequenceWithAllResultTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SequenceWithAllResultTest.m; sourceTree = ""; }; 4CCA7E0017FEEA6100D85F5B /* SequenceWithSuccessfullResultTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SequenceWithSuccessfullResultTest.m; sourceTree = ""; }; + 4CDB8E15182BE5A300C5BFA3 /* JFileDescriptorReaderTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFileDescriptorReaderTest.m; sourceTree = ""; }; 5357CDF914A9F5130046EA34 /* libstdc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.dylib"; path = "usr/lib/libstdc++.dylib"; sourceTree = SDKROOT; }; 65359B4D151A6DB90099D6FE /* AsyncOperationWithDelayTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AsyncOperationWithDelayTest.m; sourceTree = ""; }; 65359BD5151A81C40099D6FE /* ParalelBlockTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ParalelBlockTest.m; sourceTree = ""; }; @@ -195,6 +203,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4C0C3F6A1826EAC800984027 /* QuartzCore.framework in Frameworks */, 1BEC48A4156A27660099DA6D /* libstdc++.dylib in Frameworks */, 1B0E89DF1563FB1100825E3C /* libc++.dylib in Frameworks */, 1B2D8C49154BFE7300360296 /* libJFFTestTools.a in Frameworks */, @@ -248,6 +257,7 @@ 1B835A20142C8BB300FC004C /* libJFFAsyncOperations.a */, 5357CDFD14A9F5130046EA34 /* libJFFAsyncOperations-clang.a */, 65003452151A646C008F16E7 /* JFFAsyncOperationsFW.framework */, + 4C0C3F6F1826EAC800984027 /* libJFFAsyncOperationsMacOS.a */, ); name = Products; sourceTree = ""; @@ -285,6 +295,7 @@ 8D29EF8B13BE066900041B6A /* Frameworks */ = { isa = PBXGroup; children = ( + 4C0C3F691826EAC800984027 /* QuartzCore.framework */, 1B0E89DE1563FB1100825E3C /* libc++.dylib */, 5357CDF914A9F5130046EA34 /* libstdc++.dylib */, 8D29EFB213BE070F00041B6A /* GHUnitIOS.framework */, @@ -315,6 +326,7 @@ CEBCFC1D163D42AB0009772F /* JFFLimitedLoadersQueueTest.m */, 4CCA7DFD17FEE7A300D85F5B /* SequenceWithAllResultTest.m */, 4CCA7E0017FEEA6100D85F5B /* SequenceWithSuccessfullResultTest.m */, + 4CDB8E15182BE5A300C5BFA3 /* JFileDescriptorReaderTest.m */, ); path = JFFAsyncOperationsTest; sourceTree = ""; @@ -326,8 +338,6 @@ 8D29EF9513BE066900041B6A /* InfoPlist.strings */, 8D29EF9813BE066900041B6A /* main.m */, 8D29EF9A13BE066900041B6A /* JFFAsyncOperationsTest-Prefix.pch */, - 1B12CB39144D5C5900DFE2B1 /* JFFAsyncOperationManager.h */, - 1B12CB3A144D5C5900DFE2B1 /* JFFAsyncOperationManager.m */, ); name = "Supporting Files"; sourceTree = ""; @@ -428,6 +438,13 @@ remoteRef = 1B835B59142CD17300FC004C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C0C3F6F1826EAC800984027 /* libJFFAsyncOperationsMacOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libJFFAsyncOperationsMacOS.a; + remoteRef = 4C0C3F6E1826EAC800984027 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 5357CDFD14A9F5130046EA34 /* libJFFAsyncOperations-clang.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -529,8 +546,8 @@ buildActionMask = 2147483647; files = ( 4CCA7E0117FEEA6100D85F5B /* SequenceWithSuccessfullResultTest.m in Sources */, + 4CDB8E16182BE5A300C5BFA3 /* JFileDescriptorReaderTest.m in Sources */, 8D29EF9913BE066900041B6A /* main.m in Sources */, - 1B12CB3B144D5C5900DFE2B1 /* JFFAsyncOperationManager.m in Sources */, 1BEE3AF115EFA9850024D249 /* TrySequenceOfAsyncOperationsTest.m in Sources */, 4CCA7DFE17FEE7A300D85F5B /* SequenceWithAllResultTest.m in Sources */, 1BEE3AF715EFA9A40024D249 /* ParalelBlockTest.m in Sources */, diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/AsyncOperationBinder.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/AsyncOperationBinder.m index d5c6447..f9c9c88 100755 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/AsyncOperationBinder.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/AsyncOperationBinder.m @@ -1,6 +1,4 @@ -#import "JFFAsyncOperationManager.h" - -#import +#import #import @interface AsyncMonadTest : GHTestCase @@ -8,71 +6,89 @@ @interface AsyncMonadTest : GHTestCase @implementation AsyncMonadTest --(void)setUp +- (void)setUp { - [JFFCancelAsyncOperationBlockHolder enableInstancesCounting]; + [JFFAsyncOperationHandlerBlockHolder enableInstancesCounting]; [JFFDidFinishAsyncOperationBlockHolder enableInstancesCounting]; [JFFAsyncOperationManager enableInstancesCounting]; } --(void)testNormalFinish +- (void)testNormalFinish { @autoreleasepool { - JFFAsyncOperationManager* firstLoader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* secondLoader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperation secondLoaderBlock_ = secondLoader_.loader; - - __block id monadResult_ = nil; - - JFFAsyncOperationBinder secondLoaderBinder_ = ^JFFAsyncOperation( id firstResult_ ) - { - monadResult_ = firstResult_; - return secondLoaderBlock_; + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperation secondLoaderBlock = secondLoader.loader; + + __block id monadResult = nil; + + JFFAsyncOperationBinder secondLoaderBinder = ^JFFAsyncOperation(id firstResult) { + + monadResult = firstResult; + return secondLoaderBlock; }; - JFFAsyncOperation asyncOp_ = bindSequenceOfAsyncOperations( firstLoader_.loader - , secondLoaderBinder_ - , nil ); - + JFFAsyncOperation asyncOp = bindSequenceOfAsyncOperations(firstLoader.loader, + secondLoaderBinder, + nil ); + __block id finalResult_ = nil; - - asyncOp_( nil, nil, ^( id result_, NSError* error_ ) - { + + asyncOp(nil, nil, ^(id result_, NSError *error_) { + finalResult_ = result_; - } ); - - id firstResult_ = @1; - firstLoader_.loaderFinishBlock.didFinishBlock( firstResult_, nil ); - - GHAssertTrue( monadResult_ == firstResult_, @"OK" ); - GHAssertFalse( secondLoader_.finished, @"OK" ); + }); + + id firstResult = @1; + firstLoader.loaderFinishBlock(firstResult, nil); + + GHAssertTrue( monadResult == firstResult, @"OK" ); + GHAssertFalse( secondLoader.finished, @"OK" ); GHAssertNil( finalResult_, @"OK" ); - + id secondResult_ = @2; - secondLoader_.loaderFinishBlock.didFinishBlock( secondResult_, nil ); - - GHAssertTrue( secondLoader_.finished, @"OK" ); + secondLoader.loaderFinishBlock(secondResult_, nil); + + GHAssertTrue( secondLoader.finished, @"OK" ); GHAssertTrue( finalResult_ == secondResult_, @"OK" ); } - - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } - (void)testFailFirstLoader { + NSUInteger instanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; + NSUInteger instanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; + NSUInteger instanceCount3 = [JFFAsyncOperationManager instancesCount]; + + __weak JFFAsyncOperationManager *firstLoader1; + __weak JFFAsyncOperationManager *secondLoader1; + + __weak NSObject *testBlockFreed1; + __weak NSObject *testBlockFreed2; + @autoreleasepool { JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; JFFAsyncOperation secondLoaderBlock = secondLoader.loader; + firstLoader1 = firstLoader; + secondLoader1 = secondLoader; + + NSObject *testBlockFreedTmp1 = [NSObject new]; + testBlockFreed1 = testBlockFreedTmp1; + __block NSError *finalError = nil; __block BOOL binderCalled = NO; - JFFAsyncOperationBinder secondLoaderBinder = ^JFFAsyncOperation( id firstResult_ ) { + JFFAsyncOperationBinder secondLoaderBinder = ^JFFAsyncOperation(id firstResult) { + + [testBlockFreed1 class]; binderCalled = YES; return secondLoaderBlock; }; @@ -80,20 +96,28 @@ - (void)testFailFirstLoader secondLoaderBinder, nil ); + NSObject *testBlockFreedTmp2 = [NSObject new]; + testBlockFreed2 = testBlockFreedTmp2; + asyncOp(nil, nil, ^(id result, NSError *error) { + + [testBlockFreed2 class]; finalError = error; }); NSError* failError = [JFFError newErrorWithDescription:@"error1"]; - firstLoader.loaderFinishBlock.didFinishBlock( nil, failError ); + firstLoader.loaderFinishBlock(nil, failError); GHAssertFalse(binderCalled, @"OK" ); GHAssertTrue(failError == finalError, @"OK" ); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); - GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); - GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); + GHAssertNil(testBlockFreed1, nil); + GHAssertNil(testBlockFreed2, nil); + + GHAssertTrue(instanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(instanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(instanceCount3 == [JFFAsyncOperationManager instancesCount], @"OK"); } @end diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/AsyncOperationWithDelayTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/AsyncOperationWithDelayTest.m index cbe40ae..61b9aa7 100755 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/AsyncOperationWithDelayTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/AsyncOperationWithDelayTest.m @@ -1,5 +1,3 @@ -#import "JFFAsyncOperationManager.h" - #import #import @@ -24,30 +22,30 @@ - (void)testCancelAsyncOperationWithDelay void (^block)(JFFSimpleBlock) = ^(JFFSimpleBlock complete) { @autoreleasepool { + JFFAsyncOperation loader = asyncOperationWithDelay(.2, .02); - JFFAsyncOperationProgressHandler progressCallback = ^(id data) { + JFFAsyncOperationProgressCallback progressCallback = ^(id data) { + complete(); }; - JFFCancelAsyncOperationHandler cancelCallback = ^(BOOL canceled) { - cancelBlockOk = canceled; - }; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) { - complete(); + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { + + cancelBlockOk = [error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]]; }; - JFFCancelAsyncOperation cancel = loader(progressCallback, - cancelCallback, - doneCallback); + JFFAsyncOperationHandler cancel = loader(progressCallback, + nil, + doneCallback); - cancel(YES); + cancel(JFFAsyncOperationHandlerTaskCancel); NSDate *startDate = [NSDate new]; asyncOperationWithDelay(.3, .03)(nil, nil, ^(id result, NSError *error) { + NSDate *finishDate = [NSDate new]; timeDifference = [finishDate timeIntervalSinceDate:startDate]; - complete(); }); } @@ -74,13 +72,13 @@ - (void)testAsyncOperationWithDelayTwiceCall @autoreleasepool { JFFAsyncOperation loader = asyncOperationWithDelay(.2, .02); - JFFAsyncOperationProgressHandler progressCallback = ^(id data) { + JFFAsyncOperationProgressCallback progressCallback = ^(id data) { complete(); }; - JFFCancelAsyncOperationHandler cancelCallback = ^(BOOL canceled) { + JFFAsyncOperationChangeStateCallback cancelCallback = ^(JFFAsyncOperationState state) { complete(); }; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { ++callsCount; if (callsCount == 2) complete(); diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/CachedAsyncOperationsTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/CachedAsyncOperationsTest.m index b252865..c3a1b4b 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/CachedAsyncOperationsTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/CachedAsyncOperationsTest.m @@ -1,25 +1,22 @@ -#import "JFFAsyncOperationManager.h" - -#import +#import #import @interface TestClassWithProperties : NSObject -@property ( nonatomic ) NSMutableDictionary* dict; +@property (nonatomic) NSMutableDictionary *dict; @end @implementation TestClassWithProperties --(id)init +- (instancetype)init { - self = [ super init ]; - - if ( self ) - { - self->_dict = [ NSMutableDictionary new ]; + self = [super init]; + + if (self) { + _dict = [NSMutableDictionary new]; } - + return self; } @@ -30,219 +27,215 @@ @interface CachedAsyncOperationsTest : GHTestCase @implementation CachedAsyncOperationsTest --(void)setUp +- (void)setUp { - [ JFFCancelAsyncOperationBlockHolder enableInstancesCounting ]; - [ JFFDidFinishAsyncOperationBlockHolder enableInstancesCounting ]; - - [ JFFAsyncOperationManager enableInstancesCounting ]; + [JFFAsyncOperationHandlerBlockHolder enableInstancesCounting]; + [JFFDidFinishAsyncOperationBlockHolder enableInstancesCounting]; + + [JFFAsyncOperationManager enableInstancesCounting]; } --(void)testCachedAsyncOperationsCancel +- (void)testCachedAsyncOperationsCancel { @autoreleasepool { - JFFAsyncOperationManager* nativeLoader_ = [ JFFAsyncOperationManager new ]; - - JFFPropertyPath* propertyPath_ = [[JFFPropertyPath alloc] initWithName:@"dict" - key:@"1"]; + JFFAsyncOperationManager *nativeLoader = [JFFAsyncOperationManager new]; - JFFPropertyExtractorFactoryBlock factory_ = ^JFFPropertyExtractor*( void ) - { - return [ JFFPropertyExtractor new ]; + JFFPropertyPath *propertyPath = [[JFFPropertyPath alloc] initWithName:@"dict" key:@"1"]; + + JFFPropertyExtractorFactoryBlock factory = ^JFFPropertyExtractor *(void) { + + return [JFFPropertyExtractor new]; }; - TestClassWithProperties* dataOwner_ = [ TestClassWithProperties new ]; - + TestClassWithProperties *dataOwner = [TestClassWithProperties new]; + @autoreleasepool { - JFFAsyncOperation cachedLoader_ = [ dataOwner_ asyncOperationForPropertyWithPath: propertyPath_ - propertyExtractorFactoryBlock: factory_ - asyncOperation: nativeLoader_.loader - didFinishLoadDataBlock: nil ]; - - __block BOOL cancelFlag_ = NO; - JFFCancelAsyncOperationHandler cancel_callback_ = ^( BOOL canceled_ ) - { - cancelFlag_ = canceled_; + JFFAsyncOperation cachedLoader = [dataOwner asyncOperationForPropertyWithPath:propertyPath + propertyExtractorFactoryBlock:factory + asyncOperation:nativeLoader.loader + didFinishLoadDataBlock:nil]; + + __block NSError *finishError; + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { + + finishError = error; }; - - JFFCancelAsyncOperation cancel_ = cachedLoader_( nil, cancel_callback_, nil ); - - GHAssertFalse( nativeLoader_.finished , @"OK" ); - GHAssertFalse( nativeLoader_.canceled , @"OK" ); - GHAssertFalse( nativeLoader_.cancelFlag, @"OK" ); - - cancel_( YES ); - - GHAssertFalse( nativeLoader_.finished , @"OK" ); - GHAssertTrue ( nativeLoader_.canceled , @"OK" ); - GHAssertTrue ( nativeLoader_.cancelFlag, @"OK" ); - - GHAssertTrue( cancelFlag_, @"OK" ); + + JFFAsyncOperationHandler cancel = cachedLoader(nil, nil, doneCallback); + + GHAssertFalse(nativeLoader.finished, @"OK"); + GHAssertFalse(nativeLoader.canceled, @"OK"); + GHAssertTrue (nativeLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskUndefined, @"OK"); + + cancel(JFFAsyncOperationHandlerTaskCancel); + + GHAssertFalse(nativeLoader.finished , @"OK"); + GHAssertTrue (nativeLoader.canceled , @"OK"); + GHAssertTrue (nativeLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"OK"); + + GHAssertTrue([finishError isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]], @"OK"); } - } - - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testCachedAsyncOperationsUnsibscribe +- (void)testCachedAsyncOperationsUnsibscribe { @autoreleasepool { - JFFAsyncOperationManager* nativeLoader_ = [ JFFAsyncOperationManager new ]; - - JFFPropertyPath* propertyPath_ = [ [ JFFPropertyPath alloc ] initWithName: @"dict" - key: @"1" ]; - - JFFPropertyExtractorFactoryBlock factory_ = ^JFFPropertyExtractor*( void ) - { - return [ JFFPropertyExtractor new ]; + JFFAsyncOperationManager *nativeLoader = [JFFAsyncOperationManager new]; + + JFFPropertyPath *propertyPath = [[JFFPropertyPath alloc] initWithName:@"dict" + key:@"1"]; + + JFFPropertyExtractorFactoryBlock factory = ^JFFPropertyExtractor *(void) { + + return [JFFPropertyExtractor new]; }; - - TestClassWithProperties* dataOwner_ = [ TestClassWithProperties new ]; - - JFFAsyncOperation cachedLoader_ = [ dataOwner_ asyncOperationForPropertyWithPath: propertyPath_ - propertyExtractorFactoryBlock: factory_ - asyncOperation: nativeLoader_.loader - didFinishLoadDataBlock: nil ]; - - __block BOOL cancelFlag_ = YES; - JFFCancelAsyncOperationHandler cancel_callback_ = ^( BOOL canceled_ ) - { - cancelFlag_ = canceled_; + + TestClassWithProperties *dataOwner = [TestClassWithProperties new]; + + JFFAsyncOperation cachedLoader = [dataOwner asyncOperationForPropertyWithPath:propertyPath + propertyExtractorFactoryBlock:factory + asyncOperation:nativeLoader.loader + didFinishLoadDataBlock:nil]; + + __block NSError *resultError; + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { + + resultError = error; }; - - JFFCancelAsyncOperation cancel_ = cachedLoader_( nil, cancel_callback_, nil ); - - GHAssertFalse( nativeLoader_.finished , @"OK" ); - GHAssertFalse( nativeLoader_.canceled , @"OK" ); - GHAssertFalse( nativeLoader_.cancelFlag, @"OK" ); - - cancel_( NO ); - - GHAssertFalse( nativeLoader_.finished , @"OK" ); - GHAssertFalse( nativeLoader_.canceled , @"OK" ); - GHAssertFalse( nativeLoader_.cancelFlag, @"OK" ); - - GHAssertFalse( cancelFlag_, @"OK" ); - cancelFlag_ = YES; - - nativeLoader_.loaderCancelBlock.onceCancelBlock( NO ); - - GHAssertTrue( cancelFlag_, @"OK" ); + + JFFAsyncOperationHandler cancel = cachedLoader(nil, nil, doneCallback); + + GHAssertFalse(nativeLoader.finished, @"OK"); + GHAssertFalse(nativeLoader.canceled, @"OK"); + GHAssertTrue(nativeLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskUndefined, @"OK"); + + cancel(JFFAsyncOperationHandlerTaskUnsubscribe); + + GHAssertFalse(nativeLoader.finished , @"OK"); + GHAssertFalse(nativeLoader.canceled , @"OK"); + GHAssertTrue(nativeLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskUndefined, @"OK"); + + GHAssertTrue([resultError isKindOfClass:[JFFAsyncOpFinishedByUnsubscriptionError class]], @"OK"); + resultError = nil; + + nativeLoader.loaderHandlerBlock(JFFAsyncOperationHandlerTaskUnsubscribe); + + GHAssertNil(resultError, @"OK"); } - - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testCachedAsyncOperationsCancelNative +- (void)testCachedAsyncOperationsCancelNative { @autoreleasepool { - JFFAsyncOperationManager* nativeLoader_ = [ JFFAsyncOperationManager new ]; - - JFFPropertyPath* propertyPath_ = [ [ JFFPropertyPath alloc ] initWithName: @"dict" - key: @"1" ]; - - JFFPropertyExtractorFactoryBlock factory_ = ^JFFPropertyExtractor*( void ) + JFFAsyncOperationManager *nativeLoader = [JFFAsyncOperationManager new]; + + JFFPropertyPath* propertyPath = [[JFFPropertyPath alloc] initWithName:@"dict" + key:@"1"]; + + JFFPropertyExtractorFactoryBlock factory = ^JFFPropertyExtractor *(void) { - return [ JFFPropertyExtractor new ]; + return [JFFPropertyExtractor new]; }; - - TestClassWithProperties* dataOwner_ = [ TestClassWithProperties new ]; - - JFFAsyncOperation cachedLoader_ = [ dataOwner_ asyncOperationForPropertyWithPath: propertyPath_ - propertyExtractorFactoryBlock: factory_ - asyncOperation: nativeLoader_.loader - didFinishLoadDataBlock: nil ]; - - __block BOOL cancelFlag_ = NO; - JFFCancelAsyncOperationHandler cancel_callback_ = ^( BOOL canceled_ ) - { - cancelFlag_ = canceled_; + + TestClassWithProperties *dataOwner = [TestClassWithProperties new]; + + JFFAsyncOperation cachedLoader = [dataOwner asyncOperationForPropertyWithPath:propertyPath + propertyExtractorFactoryBlock:factory + asyncOperation:nativeLoader.loader + didFinishLoadDataBlock:nil]; + + __block NSError *resultError; + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { + resultError = error; }; - - JFFCancelAsyncOperation cancel_ = cachedLoader_( nil, cancel_callback_, nil ); - - GHAssertFalse( nativeLoader_.finished , @"OK" ); - GHAssertFalse( nativeLoader_.canceled , @"OK" ); - GHAssertFalse( nativeLoader_.cancelFlag, @"OK" ); - - nativeLoader_.loaderCancelBlock.onceCancelBlock( YES ); - - GHAssertFalse( nativeLoader_.finished , @"OK" ); - GHAssertTrue( nativeLoader_.canceled , @"OK" ); - GHAssertTrue( nativeLoader_.cancelFlag, @"OK" ); - - GHAssertTrue( cancelFlag_, @"OK" ); - cancelFlag_ = NO; - - cancel_( YES ); - - GHAssertFalse( cancelFlag_, @"OK" ); + + JFFAsyncOperationHandler cancel = cachedLoader(nil, nil, doneCallback); + + GHAssertFalse(nativeLoader.finished , @"OK"); + GHAssertFalse(nativeLoader.canceled , @"OK"); + GHAssertTrue(nativeLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskUndefined, @"OK"); + + nativeLoader.loaderHandlerBlock(JFFAsyncOperationHandlerTaskCancel); + + GHAssertFalse(nativeLoader.finished, @"OK" ); + GHAssertTrue(nativeLoader.canceled , @"OK" ); + GHAssertTrue(nativeLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"OK" ); + + GHAssertTrue([resultError isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]], @"OK"); + resultError = nil; + + cancel(JFFAsyncOperationHandlerTaskCancel); + + GHAssertNil(resultError, @"OK"); } - - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testCachedAsyncOperationsUnsibscribeNative +- (void)testCachedAsyncOperationsUnsibscribeNative { @autoreleasepool { - JFFAsyncOperationManager* nativeLoader_ = [ JFFAsyncOperationManager new ]; - - JFFPropertyPath* propertyPath_ = [ [ JFFPropertyPath alloc ] initWithName: @"dict" - key: @"1" ]; - - JFFPropertyExtractorFactoryBlock factory_ = ^JFFPropertyExtractor*( void ) - { - return [ JFFPropertyExtractor new ]; + JFFAsyncOperationManager *nativeLoader = [JFFAsyncOperationManager new]; + + JFFPropertyPath *propertyPath = [[JFFPropertyPath alloc] initWithName:@"dict" + key:@"1"]; + + JFFPropertyExtractorFactoryBlock factory = ^JFFPropertyExtractor *(void) { + + return [JFFPropertyExtractor new]; }; - - TestClassWithProperties* dataOwner_ = [ TestClassWithProperties new ]; - - JFFAsyncOperation cachedLoader_ = [ dataOwner_ asyncOperationForPropertyWithPath: propertyPath_ - propertyExtractorFactoryBlock: factory_ - asyncOperation: nativeLoader_.loader - didFinishLoadDataBlock: nil ]; - - __block BOOL cancelFlag_ = YES; - JFFCancelAsyncOperationHandler cancelCallback_ = ^( BOOL canceled_ ) - { - cancelFlag_ = canceled_; + + TestClassWithProperties *dataOwner = [TestClassWithProperties new]; + + JFFAsyncOperation cachedLoader = [dataOwner asyncOperationForPropertyWithPath:propertyPath + propertyExtractorFactoryBlock:factory + asyncOperation:nativeLoader.loader + didFinishLoadDataBlock:nil]; + + __block NSError *resultError; + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { + resultError = error; }; - - JFFCancelAsyncOperation cancel_ = cachedLoader_( nil, cancelCallback_, nil ); - - GHAssertFalse( nativeLoader_.finished , @"OK" ); - GHAssertFalse( nativeLoader_.canceled , @"OK" ); - GHAssertFalse( nativeLoader_.cancelFlag, @"OK" ); - - nativeLoader_.loaderCancelBlock.onceCancelBlock( NO ); - - GHAssertFalse( nativeLoader_.finished , @"OK" ); - GHAssertTrue( nativeLoader_.canceled , @"OK" ); - GHAssertFalse( nativeLoader_.cancelFlag, @"OK" ); - - GHAssertFalse( cancelFlag_, @"OK" ); - cancelFlag_ = YES; - - cancel_( NO ); - - GHAssertTrue( cancelFlag_, @"OK" ); + + JFFAsyncOperationHandler cancel = cachedLoader(nil, nil, doneCallback); + + GHAssertFalse(nativeLoader.finished , @"OK"); + GHAssertFalse(nativeLoader.canceled , @"OK"); + GHAssertTrue(nativeLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskUndefined, @"OK"); + + nativeLoader.loaderHandlerBlock(JFFAsyncOperationHandlerTaskUnsubscribe); + + GHAssertFalse(nativeLoader.finished , @"OK"); + GHAssertTrue(nativeLoader.canceled , @"OK"); + GHAssertTrue(nativeLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskUnsubscribe, @"OK"); + + GHAssertTrue([resultError isKindOfClass:[JFFAsyncOpFinishedByUnsubscriptionError class]], @"OK" ); + resultError = nil; + + cancel(JFFAsyncOperationHandlerTaskUnsubscribe); + + GHAssertNil(resultError, @"OK"); } - - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } -(void)testCachedAsyncOperationsOnceLoading @@ -299,7 +292,7 @@ -(void)testCachedAsyncOperationsOnceLoading GHAssertTrue( dataOwner_.dict[@"1"] == nil, @"OK" ); id result_ = [ NSNull null ]; - nativeLoader.loaderFinishBlock.didFinishBlock( result_, nil ); + nativeLoader.loaderFinishBlock(result_, nil); GHAssertTrue( nativeLoader.finished, @"OK" ); GHAssertTrue( finished1_, @"OK" ); @@ -309,7 +302,7 @@ -(void)testCachedAsyncOperationsOnceLoading GHAssertTrue( dataOwner_.dict[@"1"] == result_, @"OK" ); } - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); + GHAssertTrue( 0 == [ JFFAsyncOperationHandlerBlockHolder instancesCount ], @"OK" ); GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); } @@ -355,12 +348,12 @@ -(void)testUnsubscribeBug unsubscribeLoader_(nil, nil, nil); } - nativeLoader_.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); + nativeLoader_.loaderFinishBlock([NSNull null], nil); } - GHAssertTrue( deallocated_, @"OK" ); + GHAssertTrue(deallocated_, @"OK"); } - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); + GHAssertTrue( 0 == [ JFFAsyncOperationHandlerBlockHolder instancesCount ], @"OK" ); GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); } diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/FailOnFirstErrorGroupOfAsyncOperationsTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/FailOnFirstErrorGroupOfAsyncOperationsTest.m index 6fb3418..75c6c29 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/FailOnFirstErrorGroupOfAsyncOperationsTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/FailOnFirstErrorGroupOfAsyncOperationsTest.m @@ -1,6 +1,4 @@ -#import "JFFAsyncOperationManager.h" - -#import +#import #import @interface FailOnFirstErrorGroupOfAsyncOperationsTest : GHTestCase @@ -8,188 +6,186 @@ @interface FailOnFirstErrorGroupOfAsyncOperationsTest : GHTestCase @implementation FailOnFirstErrorGroupOfAsyncOperationsTest --(void)setUp +- (void)setUp { - [ JFFCancelAsyncOperationBlockHolder enableInstancesCounting ]; - [ JFFDidFinishAsyncOperationBlockHolder enableInstancesCounting ]; - - [ JFFAsyncOperationManager enableInstancesCounting ]; + [JFFAsyncOperationHandlerBlockHolder enableInstancesCounting]; + [JFFDidFinishAsyncOperationBlockHolder enableInstancesCounting]; + + [JFFAsyncOperationManager enableInstancesCounting]; } //TODO cancel on fail one of sub loaders --(void)testNormalFinish +- (void)testNormalFinish { @autoreleasepool { JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; - JFFAsyncOperation loader_ = failOnFirstErrorGroupOfAsyncOperations(firstLoader.loader, - secondLoader.loader, - nil ); - - __block BOOL groupLoaderFinished_ = NO; - loader_( nil, nil, ^( id result_, NSError* error_ ) - { - if ( result_ && !error_ ) - { - groupLoaderFinished_ = YES; + JFFAsyncOperation loader = failOnFirstErrorGroupOfAsyncOperations(firstLoader.loader, + secondLoader.loader, + nil ); + + __block BOOL groupLoaderFinished = NO; + loader( nil, nil, ^(id result, NSError *error) { + + if (result && !error) { + + groupLoaderFinished = YES; } - } ); + }); + + GHAssertFalse(firstLoader.finished , @"First loader not finished yet" ); + GHAssertFalse(secondLoader.finished, @"Second loader not finished yet"); + GHAssertFalse(groupLoaderFinished , @"Group loader not finished yet" ); + + secondLoader.loaderFinishBlock([NSNull null], nil); + + GHAssertTrue (secondLoader.finished, @"Second loader finished already"); + GHAssertFalse(firstLoader.finished , @"First loader not finished yet" ); + GHAssertFalse(groupLoaderFinished , @"Group loader finished already" ); + + firstLoader.loaderFinishBlock([NSNull null], nil); - GHAssertFalse( firstLoader.finished, @"First loader not finished yet" ); - GHAssertFalse( secondLoader.finished, @"Second loader not finished yet" ); - GHAssertFalse( groupLoaderFinished_, @"Group loader not finished yet" ); - - secondLoader.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); - - GHAssertTrue( secondLoader.finished, @"Second loader finished already" ); - GHAssertFalse( firstLoader.finished, @"First loader not finished yet" ); - GHAssertFalse( groupLoaderFinished_, @"Group loader finished already" ); - - firstLoader.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); - GHAssertTrue( firstLoader.finished, @"First loader finished already" ); GHAssertTrue( secondLoader.finished, @"Second loader not finished yet" ); - GHAssertTrue( groupLoaderFinished_, @"Group loader finished already" ); - + GHAssertTrue( groupLoaderFinished, @"Group loader finished already" ); + } - - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testFinishWithSecondError +- (void)testFinishWithSecondError { @autoreleasepool { - JFFAsyncOperationManager* firstLoader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* secondLoader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = failOnFirstErrorGroupOfAsyncOperations( firstLoader_.loader - , secondLoader_.loader - , nil ); - - __block BOOL mainCanceled_ = NO; - __block BOOL mainFinished_ = NO; - - JFFCancelAsyncOperationHandler cancelCallback_ = ^( BOOL canceled_ ) - { - mainCanceled_ = YES; + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = failOnFirstErrorGroupOfAsyncOperations(firstLoader.loader, + secondLoader.loader, + nil); + + __block BOOL mainCanceled = NO; + __block BOOL mainFinished = NO; + + JFFAsyncOperationChangeStateCallback stateCallback = ^(JFFAsyncOperationState state) { + + mainCanceled = YES; }; - JFFDidFinishAsyncOperationHandler doneCallback_ = ^( id result_, NSError* error_ ) - { - mainFinished_ = ( result_ == nil ) && ( error_ != nil ); + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { + + mainFinished = (result == nil) && (error != nil); }; - - loader_( nil, cancelCallback_, doneCallback_ ); - - GHAssertFalse( firstLoader_.canceled, @"First loader not canceled yet" ); - GHAssertFalse( secondLoader_.canceled, @"Second loader not canceled yet" ); - GHAssertFalse( mainCanceled_, @"Group loader not canceled yet" ); - GHAssertFalse( mainFinished_, @"Group loader finished" ); - - secondLoader_.loaderFinishBlock.didFinishBlock( nil, [ JFFError newErrorWithDescription: @"some error" ] ); - - GHAssertTrue ( secondLoader_.finished, @"Second loader finished already" ); - GHAssertTrue ( firstLoader_.canceled, @"First loader not finished yet" ); - GHAssertTrue ( firstLoader_.cancelFlag, @"First loader not finished yet" ); - GHAssertFalse( mainCanceled_, @"Group loader canceled" ); - GHAssertTrue ( mainFinished_, @"Group loader finished" ); - + + loader(nil, stateCallback, doneCallback); + + GHAssertFalse(firstLoader.canceled, @"First loader not canceled yet" ); + GHAssertFalse(secondLoader.canceled, @"Second loader not canceled yet" ); + GHAssertFalse(mainCanceled, @"Group loader not canceled yet" ); + GHAssertFalse(mainFinished, @"Group loader finished" ); + + secondLoader.loaderFinishBlock(nil, [JFFError newErrorWithDescription:@"some error"]); + + GHAssertTrue (secondLoader.finished, @"Second loader finished already"); + GHAssertTrue (firstLoader.canceled, @"First loader not finished yet" ); + GHAssertTrue (firstLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"First loader not finished yet"); + GHAssertFalse(mainCanceled, @"Group loader canceled"); + GHAssertTrue (mainFinished, @"Group loader finished"); } - - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testFinishWithFirstError +- (void)testFinishWithFirstError { @autoreleasepool { - JFFAsyncOperationManager* firstLoader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* secondLoader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = failOnFirstErrorGroupOfAsyncOperations( firstLoader_.loader - , secondLoader_.loader - , nil ); - - __block BOOL mainCanceled_ = NO; - __block BOOL mainFinished_ = NO; - - JFFCancelAsyncOperationHandler cancelCallback_ = ^( BOOL canceled_ ) - { - mainCanceled_ = YES; + JFFAsyncOperationManager *firstLoade = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = failOnFirstErrorGroupOfAsyncOperations(firstLoade.loader, + secondLoader.loader, + nil); + + __block BOOL mainCanceled = NO; + __block BOOL mainFinished = NO; + + JFFAsyncOperationChangeStateCallback stateCallback = ^(JFFAsyncOperationState state) { + + mainCanceled = YES; }; - JFFDidFinishAsyncOperationHandler doneCallback_ = ^( id result_, NSError* error_ ) - { - mainFinished_ = ( result_ == nil ) && ( error_ != nil ); + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { + + mainFinished = (result == nil) && (error != nil); }; - - loader_( nil, cancelCallback_, doneCallback_ ); - - GHAssertFalse( firstLoader_.canceled, @"First loader not canceled yet" ); - GHAssertFalse( secondLoader_.canceled, @"Second loader not canceled yet" ); - GHAssertFalse( mainCanceled_, @"Group loader not canceled yet" ); - GHAssertFalse( mainFinished_, @"Group loader finished" ); - - firstLoader_.loaderFinishBlock.didFinishBlock( nil, [ JFFError newErrorWithDescription: @"some error" ] ); - - GHAssertTrue( firstLoader_.finished, @"First loader finished already" ); - GHAssertTrue( secondLoader_.canceled, @"Second loader not finished yet" ); - GHAssertTrue( secondLoader_.cancelFlag, @"Second loader not finished yet" ); - GHAssertFalse( mainCanceled_, @"Group loader canceled" ); - GHAssertTrue ( mainFinished_, @"Group loader finished" ); + + loader( nil, stateCallback, doneCallback ); + + GHAssertFalse(firstLoade.canceled, @"First loader not canceled yet" ); + GHAssertFalse(secondLoader.canceled, @"Second loader not canceled yet" ); + GHAssertFalse(mainCanceled, @"Group loader not canceled yet" ); + GHAssertFalse(mainFinished, @"Group loader finished" ); + + firstLoade.loaderFinishBlock(nil, [JFFError newErrorWithDescription:@"some error"]); + + GHAssertTrue(firstLoade.finished, @"First loader finished already" ); + GHAssertTrue(secondLoader.canceled, @"Second loader not finished yet" ); + GHAssertTrue(secondLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"Second loader not finished yet"); + GHAssertFalse(mainCanceled, @"Group loader canceled" ); + GHAssertTrue (mainFinished, @"Group loader finished" ); } - - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testCancelFirstLoader +- (void)testCancelFirstLoader { @autoreleasepool { - JFFAsyncOperationManager* firstLoader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* secondLoader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = failOnFirstErrorGroupOfAsyncOperations( firstLoader_.loader - , secondLoader_.loader - , nil ); - - __block BOOL mainCanceled_ = NO; - __block BOOL onceCanceled_ = NO; - - loader_( nil, ^( BOOL unsubscribe_only_if_no_ ) - { - mainCanceled_ = unsubscribe_only_if_no_ && !onceCanceled_; - onceCanceled_ = YES; - }, nil ); - - GHAssertFalse( firstLoader_.canceled, @"First loader not canceled yet" ); - GHAssertFalse( secondLoader_.canceled, @"Second loader not canceled yet" ); - GHAssertFalse( mainCanceled_, @"Group loader not canceled yet" ); - - firstLoader_.loaderCancelBlock.onceCancelBlock( YES ); - - GHAssertTrue( firstLoader_.canceled, @"First loader canceled already" ); - GHAssertTrue( firstLoader_.cancelFlag, @"First loader canceled already" ); - GHAssertTrue( secondLoader_.canceled, @"Second loader canceled already" ); - GHAssertTrue( secondLoader_.cancelFlag, @"Second loader canceled already" ); - GHAssertTrue( mainCanceled_, @"Group loader canceled already" ); - + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = failOnFirstErrorGroupOfAsyncOperations(firstLoader.loader, + secondLoader.loader, + nil); + + __block BOOL mainCanceled = NO; + __block BOOL onceCanceled = NO; + + loader(nil, nil, ^(id result, NSError *error) { + + mainCanceled = [error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]] && !onceCanceled; + onceCanceled = YES; + }); + + GHAssertFalse(firstLoader .canceled, @"First loader not canceled yet" ); + GHAssertFalse(secondLoader.canceled, @"Second loader not canceled yet"); + GHAssertFalse(mainCanceled, @"Group loader not canceled yet" ); + + firstLoader.loaderHandlerBlock(JFFAsyncOperationHandlerTaskCancel); + + GHAssertTrue(firstLoader.canceled, @"First loader canceled already" ); + GHAssertTrue(firstLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"First loader canceled already" ); + GHAssertTrue(secondLoader.canceled, @"Second loader canceled already" ); + GHAssertTrue(secondLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"Second loader canceled already" ); + GHAssertTrue(mainCanceled, @"Group loader canceled already" ); } - - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testCancelSecondLoader +- (void)testCancelSecondLoader { @autoreleasepool { @@ -197,77 +193,78 @@ -(void)testCancelSecondLoader JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; JFFAsyncOperation loader = failOnFirstErrorGroupOfAsyncOperations(firstLoader.loader, - secondLoader.loader, - nil); + secondLoader.loader, + nil); __block BOOL mainCanceled = NO; __block BOOL onceCanceled = NO; - JFFCancelAsyncOperationHandler cancelCallback = ^void(BOOL unsubscribeOnlyIfNo) { + loader(nil, nil, ^(id result, NSError *error) { - mainCanceled = !unsubscribeOnlyIfNo && !onceCanceled; + mainCanceled = [error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]] && !onceCanceled; onceCanceled = YES; - }; - - loader( nil, cancelCallback, nil ); + }); - GHAssertFalse( firstLoader.canceled, @"First loader not canceled yet" ); - GHAssertFalse( secondLoader.canceled, @"Second loader not canceled yet" ); - GHAssertFalse( mainCanceled, @"Group loader not canceled yet" ); + GHAssertFalse(firstLoader.canceled , @"First loader not canceled yet" ); + GHAssertFalse(secondLoader.canceled, @"Second loader not canceled yet"); + GHAssertFalse(mainCanceled, @"Group loader not canceled yet" ); - secondLoader.loaderCancelBlock.onceCancelBlock( NO ); + secondLoader.loaderHandlerBlock(JFFAsyncOperationHandlerTaskCancel); - GHAssertTrue( firstLoader.canceled, @"First loader canceled already" ); - GHAssertFalse( firstLoader.cancelFlag, @"First loader canceled already" ); - GHAssertTrue( secondLoader.canceled, @"Second loader canceled already" ); - GHAssertFalse( secondLoader.cancelFlag, @"Second loader canceled already" ); - GHAssertTrue( mainCanceled, @"Group loader canceled already" ); + GHAssertTrue(firstLoader.canceled, @"First loader canceled already" );//not obligatory + GHAssertTrue(firstLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"First loader canceled already" ); + GHAssertTrue(secondLoader.canceled, @"Second loader canceled already" ); + GHAssertTrue(secondLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"Second loader canceled already" ); + GHAssertTrue(mainCanceled, @"Group loader canceled already" ); } - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testCancelMainLoader +- (void)testCancelMainLoader { @autoreleasepool { - JFFAsyncOperationManager* firstLoader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* secondLoader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = failOnFirstErrorGroupOfAsyncOperations( firstLoader_.loader, secondLoader_.loader, nil ); - - __block BOOL main_canceled_ = NO; - __block BOOL once_canceled_ = NO; - - JFFCancelAsyncOperation cancel_ = loader_( nil, ^( BOOL unsubscribe_only_if_no_ ) - { - main_canceled_ = unsubscribe_only_if_no_ && !once_canceled_; - once_canceled_ = YES; - }, nil ); - - GHAssertFalse( firstLoader_.canceled, @"First loader not canceled yet" ); - GHAssertFalse( secondLoader_.canceled, @"Second loader not canceled yet" ); - GHAssertFalse( main_canceled_, @"Group loader not canceled yet" ); - - cancel_( YES ); - - GHAssertTrue( firstLoader_.canceled, @"First loader canceled already" ); - GHAssertTrue( firstLoader_.cancelFlag, @"First loader canceled already" ); - GHAssertTrue( secondLoader_.canceled, @"Second loader canceled already" ); - GHAssertTrue( secondLoader_.cancelFlag, @"Second loader canceled already" ); - GHAssertTrue( main_canceled_, @"Group loader canceled already" ); - + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = failOnFirstErrorGroupOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); + + __block BOOL mainCanceled = NO; + __block BOOL onceCanceled = NO; + + JFFAsyncOperationHandler cancel = loader(nil, nil, ^(id result, NSError *error) { + + mainCanceled = [error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]] && !onceCanceled; + onceCanceled = YES; + }); + + GHAssertFalse(firstLoader.canceled, @"First loader not canceled yet" ); + GHAssertFalse(secondLoader.canceled, @"Second loader not canceled yet" ); + GHAssertFalse(mainCanceled, @"Group loader not canceled yet" ); + + cancel(JFFAsyncOperationHandlerTaskCancel); + + GHAssertTrue(firstLoader.canceled , @"First loader canceled already" ); + GHAssertTrue(firstLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"First loader canceled already" ); + GHAssertTrue(secondLoader.canceled , @"Second loader canceled already"); + GHAssertTrue(secondLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"Second loader canceled already"); + GHAssertTrue(mainCanceled, @"Group loader canceled already"); } - - GHAssertTrue( 0 == [ JFFCancelAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFDidFinishAsyncOperationBlockHolder instancesCount ], @"OK" ); - GHAssertTrue( 0 == [ JFFAsyncOperationManager instancesCount ], @"OK" ); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } - (void)testImmediatelyCancelCallbackOfFirstLoader { + NSUInteger initialInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; + NSUInteger initialInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; + NSUInteger initialInstanceCount3 = [JFFAsyncOperationManager instancesCount]; + @autoreleasepool { JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; @@ -278,42 +275,38 @@ - (void)testImmediatelyCancelCallbackOfFirstLoader JFFAsyncOperation loader = failOnFirstErrorGroupOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); __block BOOL progressCallbackCalled = NO; - JFFAsyncOperationProgressHandler progressCallback = ^(id progressInfo) { + JFFAsyncOperationProgressCallback progressCallback = ^(id progressInfo) { progressCallbackCalled = YES; }; - __block NSNumber *cancelCallbackCallFlag = NO; + __block NSError *finishError; __block NSUInteger cancelCallbackNumberOfCalls = 0; - JFFCancelAsyncOperationHandler cancelCallback = ^(BOOL canceled) { - - ++cancelCallbackNumberOfCalls; - cancelCallbackCallFlag = @(canceled); - }; - __block BOOL doneCallbackCalled = NO; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { + + if ([error isKindOfClass:[JFFAsyncOperationAbstractFinishError class]]) + ++cancelCallbackNumberOfCalls; - doneCallbackCalled = YES; + finishError = error; }; - loader(progressCallback, cancelCallback, doneCallback); + loader(progressCallback, nil, doneCallback); GHAssertFalse(progressCallbackCalled, nil); - GHAssertEqualObjects(@YES, cancelCallbackCallFlag, nil); - GHAssertFalse(doneCallbackCalled, nil); + GHAssertTrue([finishError isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]], nil); GHAssertEquals((NSUInteger)1, cancelCallbackNumberOfCalls, nil); - GHAssertTrue(firstLoader .canceled, nil); - GHAssertTrue(secondLoader.canceled, nil); + GHAssertTrue (firstLoader .canceled, nil); + GHAssertFalse(secondLoader.canceled, nil); GHAssertEquals((NSUInteger)1, firstLoader .loadingCount, nil); - GHAssertEquals((NSUInteger)1, secondLoader.loadingCount, nil); + GHAssertEquals((NSUInteger)0, secondLoader.loadingCount, nil); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); - GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); - GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); + GHAssertTrue(initialInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); + GHAssertTrue(initialInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(initialInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"OK"); } - (void)testImmediatelyCancelCallbackOfSecondLoader @@ -328,30 +321,26 @@ - (void)testImmediatelyCancelCallbackOfSecondLoader JFFAsyncOperation loader = failOnFirstErrorGroupOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); __block BOOL progressCallbackCalled = NO; - JFFAsyncOperationProgressHandler progressCallback = ^(id progressInfo) { + JFFAsyncOperationProgressCallback progressCallback = ^(id progressInfo) { progressCallbackCalled = YES; }; - __block NSNumber *cancelCallbackCallFlag = NO; + __block NSError *finishError = NO; __block NSUInteger cancelCallbackNumberOfCalls = 0; - JFFCancelAsyncOperationHandler cancelCallback = ^(BOOL canceled) { - - ++cancelCallbackNumberOfCalls; - cancelCallbackCallFlag = @(canceled); - }; - __block BOOL doneCallbackCalled = NO; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { + + if ([error isKindOfClass:[JFFAsyncOperationAbstractFinishError class]]) + ++cancelCallbackNumberOfCalls; - doneCallbackCalled = YES; + finishError = error; }; - loader(progressCallback, cancelCallback, doneCallback); + loader(progressCallback, nil, doneCallback); GHAssertFalse(progressCallbackCalled, nil); - GHAssertEqualObjects(@YES, cancelCallbackCallFlag, nil); - GHAssertFalse(doneCallbackCalled, nil); + GHAssertTrue ([finishError isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]], nil); GHAssertEquals((NSUInteger)1, cancelCallbackNumberOfCalls, nil); GHAssertTrue(firstLoader .canceled, nil); @@ -361,7 +350,7 @@ - (void)testImmediatelyCancelCallbackOfSecondLoader GHAssertEquals((NSUInteger)1, secondLoader.loadingCount, nil); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/GroupOfAsyncOperationsTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/GroupOfAsyncOperationsTest.m index 8eb317d..415ba40 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/GroupOfAsyncOperationsTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/GroupOfAsyncOperationsTest.m @@ -1,6 +1,4 @@ -#import "JFFAsyncOperationManager.h" - -#import +#import #import @interface GroupOfAsyncOperationsTest : GHTestCase @@ -8,15 +6,15 @@ @interface GroupOfAsyncOperationsTest : GHTestCase @implementation GroupOfAsyncOperationsTest --(void)setUp +- (void)setUp { - [ JFFCancelAsyncOperationBlockHolder enableInstancesCounting ]; - [ JFFDidFinishAsyncOperationBlockHolder enableInstancesCounting ]; - - [ JFFAsyncOperationManager enableInstancesCounting ]; + [JFFAsyncOperationHandlerBlockHolder enableInstancesCounting]; + [JFFDidFinishAsyncOperationBlockHolder enableInstancesCounting]; + + [JFFAsyncOperationManager enableInstancesCounting]; } --(void)testNormalFinish +- (void)testNormalFinish { @autoreleasepool { @@ -25,285 +23,274 @@ -(void)testNormalFinish JFFAsyncOperation loader = groupOfAsyncOperations(firstLoader.loader, secondLoader.loader, - nil ); - + nil); + __block BOOL group_loader_finished_ = NO; - loader( nil, nil, ^( id result_, NSError* error_ ) - { - if ( result_ && !error_ ) - { + loader(nil, nil, ^(id result_, NSError *error_) { + + if ( result_ && !error_ ) { + group_loader_finished_ = YES; } - } ); - - GHAssertFalse( firstLoader.finished, @"First loader not finished yet" ); - GHAssertFalse( secondLoader.finished, @"Second loader not finished yet" ); - GHAssertFalse( group_loader_finished_, @"Group loader not finished yet" ); - - secondLoader.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); - + }); + + GHAssertFalse(firstLoader.finished, @"First loader not finished yet" ); + GHAssertFalse(secondLoader.finished, @"Second loader not finished yet"); + GHAssertFalse(group_loader_finished_, @"Group loader not finished yet"); + + secondLoader.loaderFinishBlock([ NSNull new], nil); + GHAssertTrue( secondLoader.finished, @"Second loader finished already" ); GHAssertFalse( firstLoader.finished, @"First loader not finished yet" ); GHAssertFalse( group_loader_finished_, @"Group loader finished already" ); - firstLoader.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); + firstLoader.loaderFinishBlock([NSNull new], nil); GHAssertTrue( firstLoader.finished , @"First loader finished already" ); GHAssertTrue( secondLoader.finished, @"Second loader not finished yet" ); GHAssertTrue( group_loader_finished_, @"Group loader finished already" ); - } - - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testFinishWithFirstError +- (void)testFinishWithFirstError { @autoreleasepool { - JFFAsyncOperationManager* first_loader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* second_loader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = groupOfAsyncOperations( first_loader_.loader, second_loader_.loader, nil ); + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = groupOfAsyncOperations( firstLoader.loader, secondLoader.loader, nil ); - __block BOOL group_loader_failed_ = NO; - loader_( nil, nil, ^( id result_, NSError* error_ ) - { - if ( !result_ && error_ ) - { - group_loader_failed_ = YES; + __block BOOL groupLoaderFailed = NO; + loader( nil, nil, ^(id result, NSError *error) { + + if (!result && error) { + + groupLoaderFailed = YES; } - } ); - - GHAssertFalse( first_loader_.finished, @"First loader not finished yet" ); - GHAssertFalse( second_loader_.finished, @"Second loader not finished yet" ); - GHAssertFalse( group_loader_failed_, @"Group loader not failed yet" ); - - second_loader_.loaderFinishBlock.didFinishBlock( nil, [ JFFError newErrorWithDescription: @"some error" ] ); - - GHAssertTrue( second_loader_.finished, @"Second loader finished already" ); - GHAssertFalse( first_loader_.finished, @"First loader not finished yet" ); - GHAssertFalse( group_loader_failed_, @"Group loader failed already" ); - - first_loader_.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); - - GHAssertTrue( first_loader_.finished, @"First loader finished already" ); - GHAssertTrue( second_loader_.finished, @"Second loader not finished yet" ); - GHAssertTrue( group_loader_failed_, @"Group loader failed already" ); - + }); + + GHAssertFalse(firstLoader .finished, @"First loader not finished yet" ); + GHAssertFalse(secondLoader.finished, @"Second loader not finished yet"); + GHAssertFalse(groupLoaderFailed, @"Group loader not failed yet" ); + + secondLoader.loaderFinishBlock(nil, [JFFError newErrorWithDescription:@"some error"]); + + GHAssertTrue( secondLoader.finished, @"Second loader finished already" ); + GHAssertFalse( firstLoader.finished, @"First loader not finished yet" ); + GHAssertFalse( groupLoaderFailed, @"Group loader failed already" ); + + firstLoader.loaderFinishBlock([NSNull null], nil); + + GHAssertTrue( firstLoader.finished, @"First loader finished already" ); + GHAssertTrue( secondLoader.finished, @"Second loader not finished yet" ); + GHAssertTrue( groupLoaderFailed, @"Group loader failed already" ); } - - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testFinishWithSecondError +- (void)testFinishWithSecondError { @autoreleasepool { - JFFAsyncOperationManager* first_loader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* second_loader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = groupOfAsyncOperations( first_loader_.loader, second_loader_.loader, nil ); - - __block BOOL group_loader_failed_ = NO; - loader_( nil, nil, ^( id result_, NSError* error_ ) - { - if ( !result_ && error_ ) - { - group_loader_failed_ = YES; + JFFAsyncOperationManager *first_loader_ = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *second_loader_ = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader_ = groupOfAsyncOperations(first_loader_.loader, second_loader_.loader, nil); + + __block BOOL groupLoaderFailed = NO; + loader_( nil, nil, ^( id result_, NSError* error_ ) { + + if (!result_ && error_) { + + groupLoaderFailed = YES; } } ); - + GHAssertFalse( first_loader_.finished, @"First loader not finished yet" ); GHAssertFalse( second_loader_.finished, @"Second loader not finished yet" ); - GHAssertFalse( group_loader_failed_, @"Group loader not failed yet" ); - - second_loader_.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); - + GHAssertFalse( groupLoaderFailed, @"Group loader not failed yet" ); + + second_loader_.loaderFinishBlock([NSNull null], nil); + GHAssertTrue( second_loader_.finished, @"Second loader finished already" ); GHAssertFalse( first_loader_.finished, @"First loader not finished yet" ); - GHAssertFalse( group_loader_failed_, @"Group loader failed already" ); - - first_loader_.loaderFinishBlock.didFinishBlock( nil, [ JFFError newErrorWithDescription: @"some error" ] ); - + GHAssertFalse( groupLoaderFailed, @"Group loader failed already" ); + + first_loader_.loaderFinishBlock(nil, [JFFError newErrorWithDescription:@"some error"]); + GHAssertTrue( first_loader_.finished, @"First loader finished already" ); GHAssertTrue( second_loader_.finished, @"Second loader not finished yet" ); - GHAssertTrue( group_loader_failed_, @"Group loader failed already" ); + GHAssertTrue( groupLoaderFailed, @"Group loader failed already" ); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testCancelFirstLoader +- (void)testCancelFirstLoader { @autoreleasepool { - JFFAsyncOperationManager* first_loader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* second_loader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = groupOfAsyncOperations( first_loader_.loader, second_loader_.loader, nil ); - - __block BOOL main_canceled_ = NO; - __block BOOL once_canceled_ = NO; - - loader_( nil, ^( BOOL unsubscribe_only_if_no_ ) - { - main_canceled_ = unsubscribe_only_if_no_ && !once_canceled_; - once_canceled_ = YES; - }, nil ); - - GHAssertFalse( first_loader_.canceled, @"First loader not canceled yet" ); - GHAssertFalse( second_loader_.canceled, @"Second loader not canceled yet" ); - GHAssertFalse( main_canceled_, @"Group loader not canceled yet" ); - - first_loader_.loaderCancelBlock.onceCancelBlock( YES ); - - GHAssertTrue( first_loader_.canceled, @"First loader canceled already" ); - GHAssertTrue( first_loader_.cancelFlag, @"First loader canceled already" ); - GHAssertTrue( second_loader_.canceled, @"Second loader canceled already" ); - GHAssertTrue( second_loader_.cancelFlag, @"Second loader canceled already" ); - GHAssertTrue( main_canceled_, @"Group loader canceled already" ); - + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = groupOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); + + __block BOOL mainCanceled = NO; + __block BOOL onceCanceled = NO; + + loader(nil, nil, ^(id result, NSError *error) { + + mainCanceled = [error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]] && !onceCanceled; + onceCanceled = YES; + }); + + GHAssertFalse(firstLoader.canceled , @"First loader not canceled yet" ); + GHAssertFalse(secondLoader.canceled, @"Second loader not canceled yet"); + GHAssertFalse(mainCanceled, @"Group loader not canceled yet"); + + firstLoader.loaderHandlerBlock(JFFAsyncOperationHandlerTaskCancel); + + GHAssertTrue(firstLoader.canceled, @"First loader canceled already" ); + GHAssertTrue(firstLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"First loader canceled already"); + GHAssertTrue(secondLoader.canceled, @"Second loader canceled already" ); + GHAssertTrue(secondLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"Second loader canceled already" ); + GHAssertTrue(mainCanceled, @"Group loader canceled already" ); } - - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testCancelSecondLoader +- (void)testCancelSecondLoader { @autoreleasepool { - JFFAsyncOperationManager* first_loader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* second_loader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = groupOfAsyncOperations( first_loader_.loader, second_loader_.loader, nil ); - - __block BOOL main_canceled_ = NO; - __block BOOL once_canceled_ = NO; - - loader_( nil, ^( BOOL unsubscribe_only_if_no_ ) - { - main_canceled_ = !unsubscribe_only_if_no_ && !once_canceled_; - once_canceled_ = YES; - }, nil ); - - GHAssertFalse( first_loader_.canceled, @"First loader not canceled yet" ); - GHAssertFalse( second_loader_.canceled, @"Second loader not canceled yet" ); - GHAssertFalse( main_canceled_, @"Group loader not canceled yet" ); - - second_loader_.loaderCancelBlock.onceCancelBlock( NO ); - - GHAssertTrue( first_loader_.canceled, @"First loader canceled already" ); - GHAssertFalse( first_loader_.cancelFlag, @"First loader canceled already" ); - GHAssertTrue( second_loader_.canceled, @"Second loader canceled already" ); - GHAssertFalse( second_loader_.cancelFlag, @"Second loader canceled already" ); - GHAssertTrue( main_canceled_, @"Group loader canceled already" ); - + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = groupOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); + + __block BOOL mainCanceled = NO; + __block BOOL onceCanceled = NO; + + loader(nil, nil, ^(id result, NSError *error) { + + mainCanceled = [error isKindOfClass:[JFFAsyncOpFinishedByUnsubscriptionError class]] && !onceCanceled; + onceCanceled = YES; + }); + + GHAssertFalse(firstLoader.canceled , @"First loader not canceled yet" ); + GHAssertFalse(secondLoader.canceled, @"Second loader not canceled yet"); + GHAssertFalse(mainCanceled, @"Group loader not canceled yet"); + + secondLoader.loaderHandlerBlock(JFFAsyncOperationHandlerTaskUnsubscribe); + + GHAssertTrue(firstLoader.canceled, @"First loader canceled already" ); + GHAssertTrue(firstLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"First loader canceled already"); + GHAssertTrue(secondLoader.canceled, @"Second loader canceled already"); + GHAssertFalse(secondLoader.lastHandleFlag, @"Second loader canceled already" ); + GHAssertTrue(mainCanceled, @"Group loader canceled already"); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testCancelMainLoader +- (void)testCancelMainLoader { @autoreleasepool { - JFFAsyncOperationManager* first_loader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* second_loader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = groupOfAsyncOperations( first_loader_.loader, second_loader_.loader, nil ); - - __block BOOL main_canceled_ = NO; - __block BOOL once_canceled_ = NO; - - JFFCancelAsyncOperation cancel_ = loader_( nil, ^( BOOL unsubscribe_only_if_no_ ) - { - main_canceled_ = unsubscribe_only_if_no_ && !once_canceled_; - once_canceled_ = YES; - }, nil ); - - GHAssertFalse( first_loader_.canceled, @"First loader not canceled yet" ); - GHAssertFalse( second_loader_.canceled, @"Second loader not canceled yet" ); - GHAssertFalse( main_canceled_, @"Group loader not canceled yet" ); - - cancel_( YES ); - - GHAssertTrue( first_loader_.canceled, @"First loader canceled already" ); - GHAssertTrue( first_loader_.cancelFlag, @"First loader canceled already" ); - GHAssertTrue( second_loader_.canceled, @"Second loader canceled already" ); - GHAssertTrue( second_loader_.cancelFlag, @"Second loader canceled already" ); - GHAssertTrue( main_canceled_, @"Group loader canceled already" ); - + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = groupOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); + + __block BOOL mainCanceled = NO; + __block BOOL onceCanceled = NO; + + JFFAsyncOperationHandler cancel = loader(nil, nil, ^(id result, NSError *error) { + + mainCanceled = [error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]] && !onceCanceled; + onceCanceled = YES; + }); + + GHAssertFalse(firstLoader .canceled, @"First loader not canceled yet" ); + GHAssertFalse(secondLoader.canceled, @"Second loader not canceled yet"); + GHAssertFalse(mainCanceled, @"Group loader not canceled yet" ); + + cancel(JFFAsyncOperationHandlerTaskCancel); + + GHAssertTrue(firstLoader.canceled, @"First loader canceled already" ); + GHAssertTrue(firstLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"First loader canceled already" ); + GHAssertTrue(secondLoader.canceled, @"Second loader canceled already" ); + GHAssertTrue(secondLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"Second loader canceled already" ); + GHAssertTrue(mainCanceled, @"Group loader canceled already" ); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testCancelAfterResultFirstLoader +- (void)testCancelAfterResultFirstLoader { @autoreleasepool { - JFFAsyncOperationManager* first_loader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* second_loader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = groupOfAsyncOperations( first_loader_.loader, second_loader_.loader, nil ); - - __block BOOL main_canceled_ = NO; - __block BOOL once_canceled_ = NO; - - JFFCancelAsyncOperationHandler cancel_callback_ = ^( BOOL unsubscribe_only_if_no_ ) - { - main_canceled_ = unsubscribe_only_if_no_ && !once_canceled_; - once_canceled_ = YES; - }; + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; - __block BOOL group_loader_finished_ = NO; + JFFAsyncOperation loader = groupOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); - JFFDidFinishAsyncOperationHandler done_callback_ = ^void( id result_, NSError* error_ ) - { - group_loader_finished_ = YES; + __block BOOL mainCanceled = NO; + __block BOOL onceCanceled = NO; + __block BOOL groupLoaderFinished = NO; + + JFFDidFinishAsyncOperationCallback doneCallback = ^void(id result, NSError *error) { + + mainCanceled = [error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]] && !onceCanceled; + onceCanceled = YES; + groupLoaderFinished = YES; }; - JFFCancelAsyncOperation cancel_ = loader_( nil, cancel_callback_, done_callback_ ); - - GHAssertFalse( first_loader_.canceled, @"First loader not canceled yet" ); - GHAssertFalse( second_loader_.canceled, @"Second loader not canceled yet" ); - GHAssertFalse( main_canceled_, @"Group loader not canceled yet" ); - - second_loader_.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); - - GHAssertTrue( second_loader_.finished, @"Second loader finished already" ); - GHAssertFalse( first_loader_.finished, @"First loader not finished yet" ); - GHAssertFalse( group_loader_finished_, @"Group loader finished already" ); - - cancel_( YES ); - - GHAssertTrue( first_loader_.canceled, @"First loader canceled already" ); - GHAssertTrue( first_loader_.cancelFlag, @"First loader canceled already" ); - GHAssertFalse( second_loader_.canceled, @"Second loader canceled already" ); - GHAssertTrue( main_canceled_, @"Group loader canceled already" ); - + JFFAsyncOperationHandler cancel = loader(nil, nil, doneCallback); + + GHAssertFalse(firstLoader.canceled , @"First loader not canceled yet" ); + GHAssertFalse(secondLoader.canceled, @"Second loader not canceled yet"); + GHAssertFalse(mainCanceled, @"Group loader not canceled yet" ); + + secondLoader.loaderFinishBlock([NSNull new], nil); + + GHAssertTrue(secondLoader.finished, @"Second loader finished already"); + GHAssertFalse(firstLoader.finished, @"First loader not finished yet" ); + GHAssertFalse(groupLoaderFinished, @"Group loader finished already" ); + + cancel(JFFAsyncOperationHandlerTaskCancel); + + GHAssertTrue(firstLoader.canceled, @"First loader canceled already"); + GHAssertTrue(firstLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"First loader canceled already"); + GHAssertFalse(secondLoader.canceled, @"Second loader canceled already" ); + GHAssertTrue(mainCanceled, @"Group loader canceled already" ); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } -typedef JFFAsyncOperation (*MergeLoadersPtr)( JFFAsyncOperation, ... ); +typedef JFFAsyncOperation (*MergeLoadersPtr)(JFFAsyncOperation, ...); --(void)testResultOfGroupLoadersWithFunc:( MergeLoadersPtr )func_ +- (void)testResultOfGroupLoadersWithFunc:(MergeLoadersPtr)func { @autoreleasepool { @@ -311,89 +298,89 @@ -(void)testResultOfGroupLoadersWithFunc:( MergeLoadersPtr )func_ { for ( int j = 0; j < 2; ++j ) { - JFFAsyncOperationManager* first_loader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* second_loader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* third_loader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = func_( first_loader_ .loader - , second_loader_.loader - , third_loader_ .loader - , nil ); - - __block id resultContext_; - JFFDidFinishAsyncOperationHandler done_callback_ = ^void( id result_, NSError* error_ ) - { - resultContext_ = result_; + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *thirdLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = func(firstLoader .loader, + secondLoader.loader, + thirdLoader .loader, + nil); + + __block id resultContext; + JFFDidFinishAsyncOperationCallback doneCallback = ^void(id result, NSError *error) { + + resultContext = result; }; - loader_( nil, nil, done_callback_ ); - - NSArray* results_ = @[ @"0", @"1", @"2" ]; - NSArray* loadersResults_ = @[ first_loader_ .loaderFinishBlock.didFinishBlock - , second_loader_.loaderFinishBlock.didFinishBlock - , third_loader_ .loaderFinishBlock.didFinishBlock ]; - - NSMutableArray* indexes_ = [ NSMutableArray arrayWithArray: results_ ]; - - NSUInteger firstIndex_ = [ indexes_[ i ] integerValue ]; - [ indexes_ removeObject: indexes_[ i ] ]; - - NSUInteger secondIndex_ = [ indexes_[ j ] integerValue ]; - [ indexes_ removeObject: indexes_[ j ] ]; - - NSUInteger thirdIndex_ = [ indexes_[ 0 ] integerValue ]; - - JFFDidFinishAsyncOperationHandler loader1_ = loadersResults_[ firstIndex_ ]; - JFFDidFinishAsyncOperationHandler loader2_ = loadersResults_[ secondIndex_ ]; - JFFDidFinishAsyncOperationHandler loader3_ = loadersResults_[ thirdIndex_ ]; - - loader1_( results_[ firstIndex_ ], nil ); - loader2_( results_[ secondIndex_ ], nil ); - loader3_( results_[ thirdIndex_ ], nil ); - - GHAssertTrue( [ resultContext_ isEqual: results_ ], @"OK" ); + loader(nil, nil, doneCallback); + + NSArray *results = @[@"0", @"1", @"2"]; + NSArray *loadersResults = @[firstLoader .loaderFinishBlock, + secondLoader.loaderFinishBlock, + thirdLoader .loaderFinishBlock]; + + NSMutableArray *indexes = [NSMutableArray arrayWithArray:results]; + + NSUInteger firstIndex = [indexes[i] integerValue]; + [indexes removeObject:indexes[i]]; + + NSUInteger secondIndex = [indexes[j] integerValue]; + [indexes removeObject:indexes[j]]; + + NSUInteger thirdIndex = [indexes[0] integerValue]; + + JFFDidFinishAsyncOperationCallback loader1 = loadersResults[firstIndex ]; + JFFDidFinishAsyncOperationCallback loader2 = loadersResults[secondIndex]; + JFFDidFinishAsyncOperationCallback loader3 = loadersResults[thirdIndex ]; + + loader1(results[firstIndex ], nil); + loader2(results[secondIndex], nil); + loader3(results[thirdIndex ], nil); + + GHAssertTrue([resultContext isEqual:results], @"OK"); } } } - - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } --(void)testResultOfGroupLoaders +- (void)testResultOfGroupLoaders { - [ self testResultOfGroupLoadersWithFunc: &groupOfAsyncOperations ]; + [self testResultOfGroupLoadersWithFunc:&groupOfAsyncOperations]; } --(void)testResultOfFailOnFirstErrorGroupLoaders +- (void)testResultOfFailOnFirstErrorGroupLoaders { - [ self testResultOfGroupLoadersWithFunc: &failOnFirstErrorGroupOfAsyncOperations ]; + [self testResultOfGroupLoadersWithFunc:&failOnFirstErrorGroupOfAsyncOperations]; } --(void)testMemoryManagementOfGroupLoaders +- (void)testMemoryManagementOfGroupLoaders { __block BOOL result2WasDeallocated_ = NO; - __block BOOL result3WasDeallocated_ = NO; - + __block BOOL result3WasDeallocated = NO; + @autoreleasepool { - JFFAsyncOperationManager* loader5 = [ JFFAsyncOperationManager new ]; + JFFAsyncOperationManager *loader5 = [JFFAsyncOperationManager new]; @autoreleasepool { - JFFAsyncOperationManager* loader2_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* loader4 = [ JFFAsyncOperationManager new ]; - + JFFAsyncOperationManager *loader2 = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *loader4 = [JFFAsyncOperationManager new]; + @autoreleasepool { - JFFAsyncOperationManager* loader1_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* loader3_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation gr1Loader_ = groupOfAsyncOperations( loader1_.loader - , loader2_.loader - , nil ); - JFFAsyncOperation gr2Loader_ = groupOfAsyncOperations( loader3_.loader - , loader4.loader - , nil ); + JFFAsyncOperationManager *loader1 = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *loader3 = [JFFAsyncOperationManager new]; + + JFFAsyncOperation gr1Loader_ = groupOfAsyncOperations(loader1.loader, + loader2.loader, + nil); + JFFAsyncOperation gr2Loader_ = groupOfAsyncOperations(loader3.loader, + loader4.loader, + nil); JFFAsyncOperation loader_ = groupOfAsyncOperations( gr1Loader_ , gr2Loader_ @@ -402,49 +389,49 @@ -(void)testMemoryManagementOfGroupLoaders __block BOOL group_loader_finished_ = NO; - JFFDidFinishAsyncOperationHandler done_callback_ = ^void( id result_, NSError* error_ ) + JFFDidFinishAsyncOperationCallback done_callback_ = ^void( id result_, NSError* error_ ) { GHAssertFalse( result2WasDeallocated_, @"OK" ); - GHAssertFalse( result3WasDeallocated_, @"OK" ); + GHAssertFalse( result3WasDeallocated, @"OK" ); group_loader_finished_ = YES; }; loader_( nil, nil, done_callback_ ); GHAssertFalse( group_loader_finished_, @"First loader not canceled yet" ); - - loader1_.loaderFinishBlock.didFinishBlock( nil, [ JFFError newErrorWithDescription: @"some error" ] ); - + + loader1.loaderFinishBlock(nil, [JFFError newErrorWithDescription:@"some error"]); + { - NSObject* result3_ = [ NSObject new ]; - [ result3_ addOnDeallocBlock: ^ - { - result3WasDeallocated_ = YES; - } ]; - loader3_.loaderFinishBlock.didFinishBlock( result3_, nil ); + NSObject *result3 = [NSObject new]; + [result3 addOnDeallocBlock: ^void(void) { + + result3WasDeallocated = YES; + }]; + loader3.loaderFinishBlock(result3, nil); } } //@autoreleasepool { - NSObject* result2_ = [ NSObject new ]; - [ result2_ addOnDeallocBlock: ^ - { + NSObject *result2 = [NSObject new]; + [result2 addOnDeallocBlock: ^(void) { + result2WasDeallocated_ = YES; - } ]; - loader2_.loaderFinishBlock.didFinishBlock( result2_, nil ); + }]; + loader2.loaderFinishBlock(result2, nil); } - loader4.loaderFinishBlock.didFinishBlock([NSNull new], nil); + loader4.loaderFinishBlock([NSNull new], nil); } - loader5.loaderFinishBlock.didFinishBlock([NSNull null], nil); + loader5.loaderFinishBlock([NSNull null], nil); } GHAssertTrue(result2WasDeallocated_, @"OK"); - GHAssertTrue(result3WasDeallocated_, @"OK"); + GHAssertTrue(result3WasDeallocated, @"OK"); - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } @@ -478,40 +465,36 @@ - (void)testImmediatelyCancelCallbackOfFirstLoader JFFAsyncOperation loader = groupOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); __block BOOL progressCallbackCalled = NO; - JFFAsyncOperationProgressHandler progressCallback = ^(id progressInfo) { + JFFAsyncOperationProgressCallback progressCallback = ^(id progressInfo) { progressCallbackCalled = YES; }; - __block NSNumber *cancelCallbackCallFlag = NO; + __block NSError *finishError; __block NSUInteger cancelCallbackNumberOfCalls = 0; - JFFCancelAsyncOperationHandler cancelCallback = ^(BOOL canceled) { - - ++cancelCallbackNumberOfCalls; - cancelCallbackCallFlag = @(canceled); - }; - __block BOOL doneCallbackCalled = NO; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { + + if ([error isKindOfClass:[JFFAsyncOperationAbstractFinishError class]]) + ++cancelCallbackNumberOfCalls; - doneCallbackCalled = YES; + finishError = error; }; - loader(progressCallback, cancelCallback, doneCallback); + loader(progressCallback, nil, doneCallback); GHAssertFalse(progressCallbackCalled, nil); - GHAssertEqualObjects(@YES, cancelCallbackCallFlag, nil); - GHAssertFalse(doneCallbackCalled, nil); + GHAssertTrue([finishError isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]], nil); GHAssertEquals((NSUInteger)1, cancelCallbackNumberOfCalls, nil); - GHAssertTrue(firstLoader .canceled, nil); - GHAssertTrue(secondLoader.canceled, nil); + GHAssertTrue (firstLoader .canceled, nil); + GHAssertFalse(secondLoader.canceled, nil); GHAssertEquals((NSUInteger)1, firstLoader .loadingCount, nil); - GHAssertEquals((NSUInteger)1, secondLoader.loadingCount, nil); + GHAssertEquals((NSUInteger)0, secondLoader.loadingCount, nil); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } @@ -528,30 +511,26 @@ - (void)testImmediatelyCancelCallbackOfSecondLoader JFFAsyncOperation loader = groupOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); __block BOOL progressCallbackCalled = NO; - JFFAsyncOperationProgressHandler progressCallback = ^(id progressInfo) { + JFFAsyncOperationProgressCallback progressCallback = ^(id progressInfo) { progressCallbackCalled = YES; }; - __block NSNumber *cancelCallbackCallFlag = NO; + __block NSError *finishError; __block NSUInteger cancelCallbackNumberOfCalls = 0; - JFFCancelAsyncOperationHandler cancelCallback = ^(BOOL canceled) { - - ++cancelCallbackNumberOfCalls; - cancelCallbackCallFlag = @(canceled); - }; - __block BOOL doneCallbackCalled = NO; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { + + if ([error isKindOfClass:[JFFAsyncOperationAbstractFinishError class]]) + ++cancelCallbackNumberOfCalls; - doneCallbackCalled = YES; + finishError = error; }; - loader(progressCallback, cancelCallback, doneCallback); + loader(progressCallback, nil, doneCallback); GHAssertFalse(progressCallbackCalled, nil); - GHAssertEqualObjects(@YES, cancelCallbackCallFlag, nil); - GHAssertFalse(doneCallbackCalled, nil); + GHAssertTrue([finishError isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]], nil); GHAssertEquals((NSUInteger)1, cancelCallbackNumberOfCalls, nil); GHAssertTrue(firstLoader .canceled, nil); @@ -561,7 +540,7 @@ - (void)testImmediatelyCancelCallbackOfSecondLoader GHAssertEquals((NSUInteger)1, secondLoader.loadingCount, nil); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationManager.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationManager.m deleted file mode 100644 index 4244a0d..0000000 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationManager.m +++ /dev/null @@ -1,96 +0,0 @@ -#import "JFFAsyncOperationManager.h" - -#import -#import - -@interface JFFAsyncOperationManager () - -@property (nonatomic) JFFDidFinishAsyncOperationBlockHolder *loaderFinishBlock; -@property (nonatomic) JFFCancelAsyncOperationBlockHolder *loaderCancelBlock; - -@property (nonatomic) NSUInteger loadingCount; -@property (nonatomic) BOOL finished; -@property (nonatomic) BOOL canceled; -@property (nonatomic) BOOL cancelFlag; - -@end - -@implementation JFFAsyncOperationManager - -- (JFFDidFinishAsyncOperationBlockHolder *)loaderFinishBlock -{ - if (!_loaderFinishBlock) { - - _loaderFinishBlock = [JFFDidFinishAsyncOperationBlockHolder new]; - } - - return _loaderFinishBlock; -} - -- (JFFCancelAsyncOperationBlockHolder *)loaderCancelBlock -{ - if (!_loaderCancelBlock) { - - _loaderCancelBlock = [JFFCancelAsyncOperationBlockHolder new]; - } - - return _loaderCancelBlock; -} - -- (void)clear -{ - _loaderFinishBlock = nil; - _loaderCancelBlock = nil; - _finished = NO; -} - -- (JFFAsyncOperation)loader -{ - return [^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progress_callback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { - - __weak JFFAsyncOperationManager *weakSelf = self; - - self.loadingCount += 1; - - if (self.cancelAtLoading > JFFDoNotCancelAsyncOperationManager) { - - self.canceled = YES; - if (cancelCallback) - cancelCallback(JFFCancelAsyncOperationManagerWithYesFlag == self.cancelAtLoading); - return JFFStubCancelAsyncOperationBlock; - } - - doneCallback = [doneCallback copy]; - - self.loaderFinishBlock.didFinishBlock = ^(id result, NSError *error) { - - weakSelf.loaderFinishBlock.didFinishBlock = nil; - weakSelf.loaderCancelBlock.cancelBlock = nil; - weakSelf.finished = YES; - if (doneCallback) - doneCallback(result, error); - }; - - if (self.finishAtLoading || self.failAtLoading) { - if (self.finishAtLoading) - self.loaderFinishBlock.didFinishBlock([NSNull null], nil); - else - self.loaderFinishBlock.didFinishBlock(nil, [JFFError newErrorWithDescription:@"some error"]); - return JFFStubCancelAsyncOperationBlock; - } - - cancelCallback = [cancelCallback copy]; - self.loaderCancelBlock.cancelBlock = ^(BOOL canceled) { - weakSelf.loaderFinishBlock.didFinishBlock = nil; - weakSelf.canceled = YES; - weakSelf.cancelFlag = canceled; - if (cancelCallback) - cancelCallback(canceled); - }; - return self.loaderCancelBlock.onceCancelBlock; - } copy]; -} - -@end diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationUtilsTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationUtilsTest.m index 83aeeaa..5e2e431 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationUtilsTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationUtilsTest.m @@ -22,12 +22,12 @@ -(void)testCallingOfPregressBlock __block BOOL resultCalled = NO; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { resultCalled = YES; complete(); }; - JFFAsyncOperationProgressHandler progressCallback = ^(id info) { + JFFAsyncOperationProgressCallback progressCallback = ^(id info) { progressCalled = (info == resultObject); ++progressCallsCount; progressCalledBeforeResult = !resultCalled; diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationsTest-Prefix.pch b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationsTest-Prefix.pch index 82b6cb5..f4b8a2a 100755 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationsTest-Prefix.pch +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFAsyncOperationsTest-Prefix.pch @@ -13,6 +13,7 @@ #import #import #import + #import #import diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFCancelAyncOperationBlockHolderTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFCancelAyncOperationBlockHolderTest.m index 203bfce..c8fcc26 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFCancelAyncOperationBlockHolderTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFCancelAyncOperationBlockHolderTest.m @@ -1,54 +1,54 @@ -#import +#import -@interface JFFCancelAsyncOperationBlockHolderTest : GHTestCase +@interface JFFAsyncOperationHandlerBlockHolderTest : GHTestCase @end -@implementation JFFCancelAsyncOperationBlockHolderTest +@implementation JFFAsyncOperationHandlerBlockHolderTest -(void)testJFFCancelAsyncOperationBlockHolder { - __block BOOL holderDeallocated_ = NO; - + __block BOOL holderDeallocated = NO; + @autoreleasepool { - JFFCancelAsyncOperationBlockHolder* holder_ = [JFFCancelAsyncOperationBlockHolder new]; - [holder_ addOnDeallocBlock:^void(void) { + JFFAsyncOperationHandlerBlockHolder *holder = [JFFAsyncOperationHandlerBlockHolder new]; + [holder addOnDeallocBlock:^void(void) { - holderDeallocated_ = YES; + holderDeallocated = YES; }]; - __block BOOL blockContextDeallocated_ = NO; - __block NSUInteger cancelBlockCallsNumber_ = 0; - + __block BOOL blockContextDeallocated = NO; + __block NSUInteger cancelBlockCallsNumber = 0; + @autoreleasepool { - NSObject* blockContext_ = [ NSObject new ]; - [ blockContext_ addOnDeallocBlock: ^void( void ) - { - blockContextDeallocated_ = YES; - } ]; - - holder_.cancelBlock = ^( BOOL unsubscribeOnlyIfNo_ ) - { - if ( [ blockContext_ class ] ) - ++cancelBlockCallsNumber_; + NSObject *blockContext = [NSObject new]; + [blockContext addOnDeallocBlock:^void(void) { + + blockContextDeallocated = YES; + }]; + + holder.loaderHandler = ^(JFFAsyncOperationHandlerTask task) { + + if ([blockContext class]) + ++cancelBlockCallsNumber; }; } - GHAssertFalse(blockContextDeallocated_, @"context not deallocated"); + GHAssertFalse(blockContextDeallocated, @"context not deallocated"); - holder_.onceCancelBlock(NO); - - GHAssertTrue(nil == holder_.cancelBlock, @"cancel block empty" ); - GHAssertTrue(blockContextDeallocated_, @"context deallocated" ); - GHAssertTrue(1 == cancelBlockCallsNumber_, @"block once was called"); - - holder_.onceCancelBlock( NO ); - - GHAssertTrue( 1 == cancelBlockCallsNumber_, @"block still once was called" ); + holder.smartLoaderHandler(JFFAsyncOperationHandlerTaskUnsubscribe); + + GHAssertTrue(nil == holder.loaderHandler, @"cancel block empty" ); + GHAssertTrue(blockContextDeallocated, @"context deallocated" ); + GHAssertTrue(1 == cancelBlockCallsNumber, @"block once was called"); + + holder.smartLoaderHandler(JFFAsyncOperationHandlerTaskUnsubscribe); + + GHAssertTrue(1 == cancelBlockCallsNumber, @"block still once was called" ); } - - GHAssertTrue( holderDeallocated_, @"holder deallocated" ); + + GHAssertTrue(holderDeallocated, @"holder deallocated"); } @end diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFLimitedLoadersQueueTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFLimitedLoadersQueueTest.m index 96872b7..ef443d3 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFLimitedLoadersQueueTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFFLimitedLoadersQueueTest.m @@ -1,6 +1,3 @@ - -#import "JFFAsyncOperationManager.h" - #import #import @@ -10,7 +7,7 @@ @interface JFFLimitedLoadersQueueTest : GHAsyncTestCase @implementation JFFLimitedLoadersQueueTest --(void)setUp +- (void)setUp { [JFFBaseLoaderOwner enableInstancesCounting]; } @@ -37,12 +34,12 @@ - (void)testPerormTwoBlocksAndOneWaits //1. perform 4 blocks with limit - 2 (any finished) balancedLoader1(nil, nil, nil); balancedLoader2(nil, nil, nil); - JFFCancelAsyncOperation cancelBalanced3 = balancedLoader3(nil, nil, nil); + JFFAsyncOperationHandler cancelBalanced3 = balancedLoader3(nil, nil, nil); - __block BOOL canceled4 = NO; - JFFCancelAsyncOperation cancelBalanced4 = balancedLoader4(nil, ^(BOOL canceled){ - canceled4 = canceled; - }, nil); + __block NSError *resultError; + JFFAsyncOperationHandler cancelBalanced4 = balancedLoader4(nil, nil, ^(id result, NSError *error) { + resultError = error; + }); //2. Check that only first two runned GHAssertTrue(loader1.loadingCount == 1, nil); @@ -51,7 +48,7 @@ - (void)testPerormTwoBlocksAndOneWaits GHAssertTrue(loader4.loadingCount == 0, nil); //3. Finish first, check that 3-th was runned - loader1.loaderFinishBlock.didFinishBlock([NSNull new], nil); + loader1.loaderFinishBlock([NSNull new], nil); GHAssertTrue(loader1.finished, nil); GHAssertTrue(loader2.loadingCount == 1, nil); GHAssertTrue(loader3.loadingCount == 1, nil); @@ -60,18 +57,18 @@ - (void)testPerormTwoBlocksAndOneWaits //5. Cancel 4-th and than 3-th, // check that 3-th native was canceled // check that 4-th was not runned - cancelBalanced4(YES); - cancelBalanced3(YES); + cancelBalanced4(JFFAsyncOperationHandlerTaskCancel); + cancelBalanced3(JFFAsyncOperationHandlerTaskCancel); GHAssertTrue(loader3.canceled, nil); GHAssertTrue(loader4.loadingCount == 0, nil); //6. Finish second, and check that all loader was finished or canceled - loader2.loaderFinishBlock.didFinishBlock([NSNull new], nil); + loader2.loaderFinishBlock([NSNull new], nil); GHAssertTrue(loader1.finished, nil); GHAssertTrue(loader2.finished, nil); GHAssertTrue(loader3.canceled, nil); - GHAssertTrue(canceled4 , nil); + GHAssertTrue([resultError isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]], nil); } GHAssertTrue(initialSchedulerInstancesCount == [JFFBaseLoaderOwner instancesCount], @"OK"); @@ -98,12 +95,12 @@ - (void)testOneOperationInQueue GHAssertTrue(loader1.loadingCount == 1, nil); GHAssertTrue(loader2.loadingCount == 0, nil); - loader1.loaderFinishBlock.didFinishBlock([NSNull new], nil); + loader1.loaderFinishBlock([NSNull new], nil); GHAssertTrue(loader1.finished, nil); GHAssertTrue(loader2.loadingCount == 1, nil); - loader2.loaderFinishBlock.didFinishBlock([NSNull new], nil); + loader2.loaderFinishBlock([NSNull new], nil); } GHAssertTrue(initialSchedulerInstancesCount == [JFFBaseLoaderOwner instancesCount], @"OK"); @@ -137,17 +134,17 @@ - (void)testBarrierLoader GHAssertTrue(loader3.loadingCount == 0, nil); //3. Finish first, check that 2-th was runned - loader1.loaderFinishBlock.didFinishBlock([NSNull new], nil); + loader1.loaderFinishBlock([NSNull new], nil); GHAssertTrue(loader1.finished, nil); GHAssertTrue(loader2.loadingCount == 1, nil); GHAssertTrue(loader3.loadingCount == 0, nil); //4. Finish second and check that 3-th was runned - loader2.loaderFinishBlock.didFinishBlock([NSNull new], nil); + loader2.loaderFinishBlock([NSNull new], nil); GHAssertTrue(loader2.finished == 1, nil); GHAssertTrue(loader3.loadingCount == 1, nil); - loader3.loaderFinishBlock.didFinishBlock([NSNull new], nil); + loader3.loaderFinishBlock([NSNull new], nil); GHAssertTrue(loader3.finished == 1, nil); } diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFileDescriptorReaderTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFileDescriptorReaderTest.m new file mode 100644 index 0000000..2b3297a --- /dev/null +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/JFileDescriptorReaderTest.m @@ -0,0 +1,74 @@ + +@interface JFileDescriptorReaderTest : GHAsyncTestCase +@end + +@implementation JFileDescriptorReaderTest +{ + NSData *_data; + NSString *_filePath; +} + +- (void)prepareDataFile +{ + if (_data) + return; + + srand(0); + + size_t size = sizeof(int); + + NSMutableData *data = [NSMutableData new]; + + //1000000 + + for (NSUInteger index = 0; index < 10; ++index) { + + int value = rand(); + [data appendBytes:&value length:size]; + } + + _data = [data copy]; + + NSString *fileName = [[NSUUID new] UUIDString]; + _filePath = [NSString cachesPathByAppendingPathComponent:fileName]; + + [_data writeToFile:_filePath atomically:YES]; +} + +- (void)setUp +{ + [self prepareDataFile]; +} + +- (void)testJFileDescriptorReaderDownloadFullFileAndTestContent +{ + NSMutableData *expectedData = [NSMutableData new]; + + void (^block)(JFFSimpleBlock) = ^void(JFFSimpleBlock complete) { + + JFFFileHendlerBuilder handleBuilder = ^uintptr_t() { + + return open([_filePath UTF8String], (O_RDONLY | O_NONBLOCK)); + }; + + JFFAsyncOperation loader = jFileDescriptorReader(handleBuilder, dispatch_get_main_queue()); + + JFFAsyncOperationProgressCallback progressCallback = ^(NSData *chunk) { + + [expectedData appendData:chunk]; + }; + + loader(progressCallback, nil, ^(id result, NSError *error) { + + complete(); + }); + }; + + [self performAsyncRequestOnMainThreadWithBlock:block + selector:_cmd + timeout:10000.]; + + GHAssertEqualObjects(expectedData, _data, nil); +} + +@end diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/ParalelBlockTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/ParalelBlockTest.m index 9604cf1..1c75b5d 100755 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/ParalelBlockTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/ParalelBlockTest.m @@ -7,12 +7,12 @@ @interface ParalelBlockTest : GHAsyncTestCase @implementation ParalelBlockTest --(void)setUp +- (void)setUp { [JFFBlockOperation enableInstancesCounting]; } --(void)testParalelTask +- (void)testParalelTask { const NSUInteger initialSchedulerInstancesCount = [JFFBlockOperation instancesCount]; @@ -20,24 +20,25 @@ -(void)testParalelTask __block BOOL theProgressOk = NO; void (^block)(JFFSimpleBlock) = ^(JFFSimpleBlock complete) { + @autoreleasepool { dispatch_queue_t currentQueue = dispatch_get_current_queue(); - JFFSyncOperationWithProgress progressLoadDataBlock_ = ^id(NSError** error, - JFFAsyncOperationProgressHandler progressCallback) - { + JFFSyncOperationWithProgress progressLoadDataBlock = ^id(NSError** error, + JFFAsyncOperationProgressCallback progressCallback) { + if (progressCallback) progressCallback([NSNull null]); return [NSNull null]; }; - JFFAsyncOperation loader = asyncOperationWithSyncOperationWithProgressBlock( progressLoadDataBlock_ ); + JFFAsyncOperation loader = asyncOperationWithSyncOperationWithProgressBlock(progressLoadDataBlock); - JFFDidFinishAsyncOperationHandler doneCallback = ^( id result_, NSError* error_ ) + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { theSameThread = ( currentQueue == dispatch_get_current_queue() ); - if ( result_ && theSameThread ) + if ( result && theSameThread ) { complete(); } @@ -47,7 +48,7 @@ -(void)testParalelTask } }; - JFFAsyncOperationProgressHandler progressCallback = ^(id data) + JFFAsyncOperationProgressCallback progressCallback = ^(id data) { theProgressOk = YES; @@ -85,41 +86,34 @@ - (void)testCancelParalelTask dispatch_queue_t currentQueue = dispatch_get_current_queue(); JFFSyncOperationWithProgress progressLoadDataBlock = ^id(NSError **error, - JFFAsyncOperationProgressHandler progressCallback) - { + JFFAsyncOperationProgressCallback progressCallback) { + progressCallback([ NSNull new]); return [NSNull new]; }; JFFAsyncOperation loader = asyncOperationWithSyncOperationWithProgressBlock(progressLoadDataBlock); - JFFCancelAsyncOperationHandler cancelCallback = ^(BOOL canceled) + JFFAsyncOperationChangeStateCallback stateCallback = ^(JFFAsyncOperationState state) { - theSameThread = ( currentQueue == dispatch_get_current_queue() ); - - if (theSameThread && canceled) - { - complete(); - } - else - { - complete(); - } + complete(); }; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { + theSameThread = (currentQueue == dispatch_get_current_queue()); + complete(); }; - JFFAsyncOperationProgressHandler progressCallback = ^(id data) - { + JFFAsyncOperationProgressCallback progressCallback = ^(id data) { + complete(); }; asyncOperationWithDelay(0.1, 0.01)(nil, nil, ^(id result, NSError *error) { loader(progressCallback, - cancelCallback, + stateCallback, doneCallback)(YES); } ); } diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/SequenceOfAsyncOperationsTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/SequenceOfAsyncOperationsTest.m index d43eb82..4cbc80e 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/SequenceOfAsyncOperationsTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/SequenceOfAsyncOperationsTest.m @@ -1,6 +1,4 @@ -#import "JFFAsyncOperationManager.h" - -#import +#import #import @interface SequenceOfAsyncOperationsTest : GHTestCase @@ -10,7 +8,7 @@ @implementation SequenceOfAsyncOperationsTest - (void)setUp { - [JFFCancelAsyncOperationBlockHolder enableInstancesCounting]; + [JFFAsyncOperationHandlerBlockHolder enableInstancesCounting]; [JFFDidFinishAsyncOperationBlockHolder enableInstancesCounting]; [JFFAsyncOperationManager enableInstancesCounting]; @@ -34,27 +32,27 @@ - (void)testSequenceOfAsyncOperations __block id sequenceResult = nil; __block BOOL sequenceLoaderFinished = NO; - loader_( nil, nil, ^( id result_, NSError* error_ ) { + loader_(nil, nil, ^(id result_, NSError *error_) { - if ( result_ && !error_ ) { + if (result_ && !error_) { sequenceResult = result_; sequenceLoaderFinished = YES; } - } ); + }); - GHAssertFalse( firstLoader.finished, @"First loader not finished yet" ); - GHAssertFalse( secondLoader.finished, @"Second loader not finished yet" ); - GHAssertFalse( sequenceLoaderFinished, @"Sequence loader not finished yet" ); + GHAssertFalse(firstLoader.finished, @"First loader not finished yet" ); + GHAssertFalse(secondLoader.finished, @"Second loader not finished yet" ); + GHAssertFalse(sequenceLoaderFinished, @"Sequence loader not finished yet" ); - firstLoader.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); + firstLoader.loaderFinishBlock([NSNull null], nil); GHAssertTrue( firstLoader.finished, @"First loader finished already" ); GHAssertFalse( secondLoader.finished, @"Second loader not finished yet" ); GHAssertFalse( sequenceLoaderFinished, @"Sequence loader finished already" ); id result = [NSObject new]; - secondLoader.loaderFinishBlock.didFinishBlock( result, nil ); + secondLoader.loaderFinishBlock(result, nil); GHAssertTrue( firstLoader.finished, @"First loader finished already" ); GHAssertTrue( secondLoader.finished, @"Second loader not finished yet" ); @@ -63,7 +61,7 @@ - (void)testSequenceOfAsyncOperations GHAssertTrue( result == sequenceResult, @"Sequence loader finished already" ); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } @@ -72,26 +70,26 @@ - (void)testCancelFirstLoaderOfSequence { @autoreleasepool { - JFFAsyncOperationManager* firstLoader = [JFFAsyncOperationManager new]; - JFFAsyncOperationManager* secondLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; JFFAsyncOperation loader = sequenceOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); - JFFCancelAsyncOperation cancel = loader(nil, nil, nil); + JFFAsyncOperationHandler cancel = loader(nil, nil, nil); - GHAssertFalse( firstLoader.canceled, @"still not canceled" ); - GHAssertFalse( secondLoader.canceled, @"still not canceled" ); + GHAssertFalse(firstLoader .canceled, @"still not canceled"); + GHAssertFalse(secondLoader.canceled, @"still not canceled"); - cancel( YES ); + cancel(JFFAsyncOperationHandlerTaskCancel); - GHAssertTrue( firstLoader.canceled, @"canceled" ); - GHAssertTrue( firstLoader.cancelFlag, @"canceled" ); - GHAssertFalse( secondLoader.canceled, @"still not canceled" ); + GHAssertTrue(firstLoader.canceled, @"canceled" ); + GHAssertTrue(firstLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"canceled"); + GHAssertFalse(secondLoader.canceled, @"still not canceled"); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } @@ -105,88 +103,85 @@ - (void)testCancelSecondLoaderOfSequence JFFAsyncOperation loader_ = sequenceOfAsyncOperations( firstLoader.loader , secondLoader.loader, nil ); - - JFFCancelAsyncOperation cancel_ = loader_( nil, nil, nil ); - + + JFFAsyncOperationHandler cancel_ = loader_( nil, nil, nil ); + GHAssertFalse( firstLoader.canceled, @"still not canceled" ); GHAssertFalse( secondLoader.canceled, @"still not canceled" ); - firstLoader.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); + firstLoader.loaderFinishBlock([NSNull null], nil); GHAssertFalse( firstLoader.canceled, @"still not canceled" ); GHAssertFalse( secondLoader.canceled, @"still not canceled" ); - cancel_( YES ); - - GHAssertFalse( firstLoader.canceled, @"canceled" ); - GHAssertTrue( secondLoader.canceled, @"still not canceled" ); - GHAssertTrue( secondLoader.cancelFlag, @"canceled" ); + cancel_(JFFAsyncOperationHandlerTaskCancel); + GHAssertFalse(firstLoader.canceled, @"canceled" ); + GHAssertTrue(secondLoader.canceled, @"still not canceled" ); + GHAssertTrue(secondLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"canceled" ); } - - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } - (void)testCancelSecondLoaderOfSequenceIfFirstInstantFinish { - @autoreleasepool - { - JFFAsyncOperationManager* first_loader_ = [ JFFAsyncOperationManager new ]; - first_loader_.finishAtLoading = YES; - - JFFAsyncOperationManager* second_loader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = sequenceOfAsyncOperations( first_loader_.loader, second_loader_.loader, nil ); - - JFFCancelAsyncOperation cancel_ = loader_( nil, nil, nil ); - - GHAssertTrue( first_loader_.finished, @"finished" ); - GHAssertFalse( second_loader_.finished, @"not finished" ); - - cancel_( YES ); - - GHAssertFalse( first_loader_.canceled, @"canceled" ); - GHAssertTrue( second_loader_.canceled, @"still not canceled" ); - GHAssertTrue( second_loader_.cancelFlag, @"canceled" ); - - } - - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + @autoreleasepool + { + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + firstLoader.finishAtLoading = YES; + + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = sequenceOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); + + JFFAsyncOperationHandler cancel = loader(nil, nil, nil); + + GHAssertTrue(firstLoader.finished, @"finished" ); + GHAssertFalse(secondLoader.finished, @"not finished" ); + + cancel(JFFAsyncOperationHandlerTaskCancel); + + GHAssertFalse(firstLoader.canceled, @"canceled"); + GHAssertTrue(secondLoader.canceled, @"still not canceled"); + GHAssertTrue(secondLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"canceled"); + } + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } - (void)testFirstLoaderFailOfSequence { - @autoreleasepool - { - JFFAsyncOperationManager* first_loader_ = [ JFFAsyncOperationManager new ]; - first_loader_.failAtLoading = YES; - - JFFAsyncOperationManager* second_loader_ = [ JFFAsyncOperationManager new ]; - second_loader_.finishAtLoading = YES; - - JFFAsyncOperation loader_ = sequenceOfAsyncOperations( first_loader_.loader, second_loader_.loader, nil ); - - __block BOOL sequence_loader_failed_ = NO; - - loader_( nil, nil, ^( id result_, NSError* error_ ) - { - if ( !result_ && error_ ) - { - sequence_loader_failed_ = YES; - } - } ); - - GHAssertTrue( sequence_loader_failed_, @"sequence failed" ); - GHAssertTrue( first_loader_.finished, @"first - finished" ); - GHAssertFalse( second_loader_.finished, @"second - not finished" ); - - } - - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + @autoreleasepool + { + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + firstLoader.failAtLoading = YES; + + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + secondLoader.finishAtLoading = YES; + + JFFAsyncOperation loader = sequenceOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); + + __block BOOL sequenceLoaderFailed = NO; + + loader(nil, nil, ^(id result, NSError *error) { + + if (!result && error) { + + sequenceLoaderFailed = YES; + } + }); + + GHAssertTrue(sequenceLoaderFailed, @"sequence failed"); + GHAssertTrue(firstLoader.finished, @"first - finished"); + GHAssertFalse(secondLoader.finished, @"second - not finished"); + } + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } @@ -195,29 +190,28 @@ - (void)testSequenceWithOneLoader { @autoreleasepool { - JFFAsyncOperationManager* first_loader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = sequenceOfAsyncOperationsArray( @[ first_loader_.loader ] ); - - __block BOOL sequenceLoaderFinished_ = NO; - - loader_( nil, nil, ^( id result_, NSError* error_ ) - { - if ( result_ && !error_ ) - { - sequenceLoaderFinished_ = YES; + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = sequenceOfAsyncOperationsArray(@[firstLoader.loader]); + + __block BOOL sequenceLoaderFinished = NO; + + loader( nil, nil, ^(id result, NSError *error) { + + if (result && !error ) { + + sequenceLoaderFinished = YES; } - } ); - - GHAssertFalse( sequenceLoaderFinished_, @"sequence not finished" ); - - first_loader_.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); - - GHAssertTrue( sequenceLoaderFinished_, @"sequence finished" ); - + }); + + GHAssertFalse(sequenceLoaderFinished, @"sequence not finished" ); + + firstLoader.loaderFinishBlock([NSNull null], nil); + + GHAssertTrue(sequenceLoaderFinished, @"sequence finished" ); } - - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } @@ -226,47 +220,47 @@ - (void)testSequenceWithTwoLoader { @autoreleasepool { - JFFAsyncOperationManager* firstLoader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* secondLoader_ = [ JFFAsyncOperationManager new ]; - - NSArray* loaders_ = @[ firstLoader_.loader, secondLoader_.loader ]; - - __block id sequenceResult = nil; - id seconBlockResult = [ NSObject new ]; - - JFFAsyncOperation loader_ = sequenceOfAsyncOperationsArray( loaders_ ); - - __block BOOL sequenceLoaderFinished_ = NO; + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + + NSArray *loaders = @[firstLoader.loader, secondLoader.loader]; - loader_( nil, nil, ^( id result_, NSError* error_ ) - { - if ( result_ && !error_ ) - { + __block id sequenceResult = nil; + id seconBlockResult = [NSObject new]; + + JFFAsyncOperation loader = sequenceOfAsyncOperationsArray(loaders); + + __block BOOL sequenceLoaderFinished = NO; + + loader(nil, nil, ^(id result_, NSError *error_) { + + if (result_ && !error_) { + sequenceResult = result_; - sequenceLoaderFinished_ = YES; + sequenceLoaderFinished = YES; } - } ); - - GHAssertFalse( sequenceLoaderFinished_, @"sequence not finished" ); - GHAssertFalse( firstLoader_.finished , @"firstLoader not finished" ); - GHAssertFalse( secondLoader_.finished , @"firstLoader not finished" ); + }); + + GHAssertFalse(sequenceLoaderFinished, @"sequence not finished"); + GHAssertFalse(firstLoader.finished , @"firstLoader not finished"); + GHAssertFalse(secondLoader.finished , @"firstLoader not finished"); - firstLoader_.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); + firstLoader.loaderFinishBlock([NSNull new], nil); - GHAssertFalse( sequenceLoaderFinished_, @"sequence not finished" ); - GHAssertTrue( firstLoader_.finished , @"firstLoader not finished" ); - GHAssertFalse( secondLoader_.finished , @"secondLoader not finished" ); + GHAssertFalse( sequenceLoaderFinished, @"sequence not finished" ); + GHAssertTrue( firstLoader.finished , @"firstLoader not finished" ); + GHAssertFalse( secondLoader.finished , @"secondLoader not finished" ); - secondLoader_.loaderFinishBlock.didFinishBlock( seconBlockResult, nil ); + secondLoader.loaderFinishBlock( seconBlockResult, nil ); - GHAssertTrue( sequenceLoaderFinished_, @"sequence finished" ); - GHAssertTrue( firstLoader_.finished , @"firstLoader finished" ); - GHAssertTrue( secondLoader_.finished , @"secondLoader finished" ); + GHAssertTrue( sequenceLoaderFinished, @"sequence finished" ); + GHAssertTrue( firstLoader.finished , @"firstLoader finished" ); + GHAssertTrue( secondLoader.finished , @"secondLoader finished" ); GHAssertTrue( seconBlockResult == sequenceResult, @"secondLoader finished" ); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } @@ -282,10 +276,10 @@ - (void)testCriticalErrorOnFailFirstLoaderWhenSequenceResultCallbackIsNil loader_( nil, nil, nil ); - firstLoader.loaderFinishBlock.didFinishBlock( nil, [JFFError newErrorWithDescription:@"some error"]); + firstLoader.loaderFinishBlock( nil, [JFFError newErrorWithDescription:@"some error"]); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } @@ -302,33 +296,27 @@ - (void)testImmediatelyCancelCallbackOfFirstLoader JFFAsyncOperation loader = sequenceOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); __block BOOL progressCallbackCalled = NO; - JFFAsyncOperationProgressHandler progressCallback = ^(id progressInfo) { + JFFAsyncOperationProgressCallback progressCallback = ^(id progressInfo) { progressCallbackCalled = YES; }; - __block NSNumber *cancelCallbackCallFlag = NO; - JFFCancelAsyncOperationHandler cancelCallback = ^(BOOL canceled) { - - cancelCallbackCallFlag = @(canceled); - }; + __block NSError *finishError; - __block BOOL doneCallbackCalled = NO; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { - doneCallbackCalled = YES; + finishError = error; }; - loader(progressCallback, cancelCallback, doneCallback); + loader(progressCallback, nil, doneCallback); GHAssertFalse(progressCallbackCalled, @"progressCallback mismatch"); - GHAssertEqualObjects(@YES, cancelCallbackCallFlag, @"cancelCallback mismatch"); - GHAssertFalse(doneCallbackCalled, @"doneCallback mismatch"); + GHAssertTrue([finishError isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]], @"cancelCallback mismatch"); GHAssertEquals((NSUInteger)0, secondLoader.loadingCount, @"unwanted invocation - second loader"); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } @@ -345,33 +333,27 @@ - (void)testImmediatelyCancelCallbackOfSecondLoader JFFAsyncOperation loader = sequenceOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); __block BOOL progressCallbackCalled = NO; - JFFAsyncOperationProgressHandler progressCallback = ^(id progressInfo) { + JFFAsyncOperationProgressCallback progressCallback = ^(id progressInfo) { progressCallbackCalled = YES; }; - __block NSNumber *cancelCallbackCallFlag = NO; - JFFCancelAsyncOperationHandler cancelCallback = ^(BOOL canceled) { - - cancelCallbackCallFlag = @(canceled); - }; + __block NSError *finishError; - __block BOOL doneCallbackCalled = NO; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { - doneCallbackCalled = YES; + finishError = error; }; - loader(progressCallback, cancelCallback, doneCallback); + loader(progressCallback, nil, doneCallback); - firstLoader.loaderFinishBlock.didFinishBlock([NSNull new], nil); + firstLoader.loaderFinishBlock([NSNull new], nil); GHAssertFalse(progressCallbackCalled, nil); - GHAssertEqualObjects(@YES, cancelCallbackCallFlag, nil); - GHAssertFalse(doneCallbackCalled, nil); + GHAssertTrue([finishError isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]], nil); } - GHAssertTrue(0 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"OK"); + GHAssertTrue(0 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"OK"); GHAssertTrue(0 == [JFFAsyncOperationManager instancesCount], @"OK"); } diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/SequenceWithAllResultTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/SequenceWithAllResultTest.m index 475b40d..7381554 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/SequenceWithAllResultTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/SequenceWithAllResultTest.m @@ -1,6 +1,4 @@ -#import "JFFAsyncOperationManager.h" - -#import +#import #import @interface SequenceWithAllResultTest : GHTestCase @@ -12,7 +10,7 @@ - (void)setUp { [super setUp]; - [JFFCancelAsyncOperationBlockHolder enableInstancesCounting]; + [JFFAsyncOperationHandlerBlockHolder enableInstancesCounting]; [JFFDidFinishAsyncOperationBlockHolder enableInstancesCounting]; [JFFAsyncOperationManager enableInstancesCounting]; @@ -20,7 +18,7 @@ - (void)setUp - (void)testBlocksAreExecutedInTurn { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @@ -69,19 +67,19 @@ - (void)testBlocksAreExecutedInTurn GHAssertFalse(thirdLoader.finished , @"Third loader not finished yet"); GHAssertFalse(sequenceLoaderFinished, @"Sequence loader not finished yet"); - firstLoader.loaderFinishBlock.didFinishBlock(firstResult, nil); + firstLoader.loaderFinishBlock(firstResult, nil); GHAssertTrue(firstLoader.finished , @"First loader finished already"); GHAssertFalse(secondLoader.finished , @"Second loader not finished yet"); GHAssertFalse(thirdLoader.finished , @"Third loader not finished yet"); GHAssertFalse(sequenceLoaderFinished, @"Sequence loader finished already"); - secondLoader.loaderFinishBlock.didFinishBlock(secondResult, nil); + secondLoader.loaderFinishBlock(secondResult, nil); GHAssertTrue(firstLoader.finished , @"First loader finished already"); GHAssertTrue(secondLoader.finished , @"Second loader not finished yet"); GHAssertFalse(thirdLoader.finished , @"Third loader not finished yet"); GHAssertFalse(sequenceLoaderFinished, @"Sequence loader finished already"); - thirdLoader.loaderFinishBlock.didFinishBlock(thirdResult, nil); + thirdLoader.loaderFinishBlock(thirdResult, nil); GHAssertTrue(firstLoader.finished , @"First loader finished already"); GHAssertTrue(secondLoader.finished , @"Second loader not finished yet"); GHAssertTrue(thirdLoader.finished , @"Third loader not finished yet"); @@ -99,14 +97,14 @@ - (void)testBlocksAreExecutedInTurn test();//invoke th same loader again } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } - (void)testMultiSequenceWithEmptyArray { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @@ -119,58 +117,58 @@ - (void)testMultiSequenceWithEmptyArray ); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } - (void)testMultiSequenceWithOneLoader { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @autoreleasepool { - JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; - JFFAsyncOperation loader = sequenceOfAsyncOperationsWithAllResults( @[firstLoader.loader] ); + JFFAsyncOperation loader = sequenceOfAsyncOperationsWithAllResults(@[firstLoader.loader]); __block id sequenceResult = nil; __block BOOL sequenceLoaderFinished = NO; - loader( nil, nil, ^(id result, NSError *error_ ) { + loader( nil, nil, ^(id result, NSError *error ) { - if ( result && !error_ ) { + if (result && !error) { sequenceResult = result; sequenceLoaderFinished = YES; } - } ); + }); - NSNumber* firstResult = @(2.71); - GHAssertFalse( firstLoader.finished, @"First loader not finished yet" ); - GHAssertFalse( sequenceLoaderFinished, @"Sequence loader not finished yet" ); + NSNumber *firstResult = @(2.71); + GHAssertFalse(firstLoader.finished, @"First loader not finished yet" ); + GHAssertFalse(sequenceLoaderFinished, @"Sequence loader not finished yet" ); - firstLoader.loaderFinishBlock.didFinishBlock( firstResult, nil ); - GHAssertTrue( firstLoader.finished, @"First loader finished already" ); - GHAssertTrue( sequenceLoaderFinished, @"Sequence loader finished already" ); + firstLoader.loaderFinishBlock(firstResult, nil); + GHAssertTrue(firstLoader.finished, @"First loader finished already" ); + GHAssertTrue(sequenceLoaderFinished, @"Sequence loader finished already" ); - GHAssertTrue( [ sequenceResult isKindOfClass: [ NSArray class ] ], @"Result type mismatch" ); - GHAssertTrue( 1 == [ sequenceResult count ], @"result count mismatch" ); + GHAssertTrue([ sequenceResult isKindOfClass: [ NSArray class ] ], @"Result type mismatch" ); + GHAssertTrue(1 == [ sequenceResult count ], @"result count mismatch" ); - NSArray* expectedResult = @[ firstResult ]; + NSArray *expectedResult = @[firstResult]; GHAssertEqualObjects( expectedResult, sequenceResult, @"result object mismatch" ); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } - (void)testMultiSequenceFailsIfAnyOperationFails { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @@ -184,43 +182,44 @@ - (void)testMultiSequenceFailsIfAnyOperationFails JFFAsyncOperationManager *thirdLoader = [JFFAsyncOperationManager new]; thirdLoader.finishAtLoading = YES; - __weak JFFAsyncOperationManager* assign_first_loader_ = firstLoader; - JFFAsyncOperation loader2_ = asyncOperationWithDoneBlock( secondLoader.loader, ^() { + __weak JFFAsyncOperationManager *assignFirstLoader = firstLoader; + JFFAsyncOperation loader2 = asyncOperationWithDoneBlock(secondLoader.loader, ^() { - GHAssertTrue( assign_first_loader_.finished, @"First loader finished already" ); - } ); + GHAssertTrue(assignFirstLoader.finished, @"First loader finished already"); + }); - JFFAsyncOperation loader_ = sequenceOfAsyncOperationsWithAllResults( @[ firstLoader.loader, loader2_, thirdLoader.loader ] ); + JFFAsyncOperation loader = sequenceOfAsyncOperationsWithAllResults(@[firstLoader.loader, loader2, thirdLoader.loader]); __block id sequenceResult = nil; - __block NSError* sequenceError = nil; + __block NSError *sequenceError = nil; __block BOOL sequenceLoaderFinished = NO; - loader_( nil, nil, ^( id result_, NSError* error_ ) { - sequenceError = error_; - sequenceResult = result_; + loader(nil, nil, ^(id result, NSError *error) { + + sequenceError = error; + sequenceResult = result; sequenceLoaderFinished = YES; - } ); + }); - GHAssertFalse( firstLoader.finished, @"First loader not finished yet" ); - GHAssertFalse( secondLoader.finished, @"Second loader not finished yet" ); - GHAssertFalse( thirdLoader.finished, @"Third loader not finished yet" ); - GHAssertFalse( sequenceLoaderFinished, @"Sequence loader not finished yet" ); + GHAssertFalse(firstLoader.finished, @"First loader not finished yet" ); + GHAssertFalse(secondLoader.finished, @"Second loader not finished yet" ); + GHAssertFalse(thirdLoader.finished, @"Third loader not finished yet" ); + GHAssertFalse(sequenceLoaderFinished, @"Sequence loader not finished yet" ); - NSNumber* firstResult = @(2.71); - firstLoader.loaderFinishBlock.didFinishBlock( firstResult, nil ); + NSNumber *firstResult = @(2.71); + firstLoader.loaderFinishBlock(firstResult, nil); - // secondLoader.loaderFinishBlock.didFinishBlock( nil, secondError ); - GHAssertTrue( firstLoader.finished, @"First loader finished already" ); - GHAssertTrue( secondLoader.finished, @"Second loader not finished yet" ); - GHAssertFalse( thirdLoader.finished, @"Third loader not finished yet" ); - GHAssertTrue( sequenceLoaderFinished, @"Sequence loader finished already" ); + // secondLoader.loaderFinishBlock.didFinishBlock(nil, secondError); + GHAssertTrue(firstLoader.finished, @"First loader finished already"); + GHAssertTrue(secondLoader.finished, @"Second loader not finished yet"); + GHAssertFalse(thirdLoader.finished, @"Third loader not finished yet"); + GHAssertTrue(sequenceLoaderFinished, @"Sequence loader finished already"); - GHAssertNil( sequenceResult, @"Result type mismatch" ); - GHAssertNotNil( sequenceError, @"error object mismatch" ); + GHAssertNil(sequenceResult, @"Result type mismatch"); + GHAssertNotNil(sequenceError, @"error object mismatch"); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/SequenceWithSuccessfullResultTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/SequenceWithSuccessfullResultTest.m index a181981..ce0d62b 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/SequenceWithSuccessfullResultTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/SequenceWithSuccessfullResultTest.m @@ -1,9 +1,6 @@ -#import "JFFAsyncOperationManager.h" - -#import +#import #import - @interface SequenceWithSuccessfullResultTest : GHTestCase @end @@ -13,7 +10,7 @@ - (void)setUp { [super setUp]; - [JFFCancelAsyncOperationBlockHolder enableInstancesCounting]; + [JFFAsyncOperationHandlerBlockHolder enableInstancesCounting]; [JFFDidFinishAsyncOperationBlockHolder enableInstancesCounting]; [JFFAsyncOperationManager enableInstancesCounting]; @@ -21,7 +18,7 @@ - (void)setUp - (void)testBlocksAreExecutedInTurn { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @@ -32,7 +29,7 @@ - (void)testBlocksAreExecutedInTurn JFFAsyncOperationManager *thirdLoader = [JFFAsyncOperationManager new]; __weak JFFAsyncOperationManager *assignFirstLoader = firstLoader; - JFFAsyncOperation loader2 = asyncOperationWithDoneBlock(secondLoader.loader, ^() { + JFFAsyncOperation loader2 = asyncOperationWithDoneBlock(secondLoader.loader, ^void(void) { GHAssertTrue(assignFirstLoader.finished, @"First loader finished already"); }); @@ -51,7 +48,7 @@ - (void)testBlocksAreExecutedInTurn [secondLoader clear]; [thirdLoader clear]; - loader( nil, nil, ^(id result, NSError *error) { + loader(nil, nil, ^(id result, NSError *error) { if (result && !error) { @@ -62,37 +59,36 @@ - (void)testBlocksAreExecutedInTurn NSNumber *firstResult = @(2.71); NSNumber *secondResult = @(3.14); - NSString *thirdResult = @"E and Pi"; + NSString *thirdResult = @"E and Pi"; - GHAssertFalse(firstLoader.finished, @"First loader not finished yet" ); - GHAssertFalse(secondLoader.finished, @"Second loader not finished yet" ); - GHAssertFalse(thirdLoader.finished, @"Third loader not finished yet" ); - GHAssertFalse(sequenceLoaderFinished, @"Sequence loader not finished yet" ); + GHAssertFalse(firstLoader .finished , @"First loader not finished yet" ); + GHAssertFalse(secondLoader.finished , @"Second loader not finished yet" ); + GHAssertFalse(thirdLoader .finished , @"Third loader not finished yet" ); + GHAssertFalse(sequenceLoaderFinished, @"Sequence loader not finished yet"); - firstLoader.loaderFinishBlock.didFinishBlock( firstResult, nil ); - GHAssertTrue(firstLoader.finished, @"First loader finished already" ); - GHAssertFalse(secondLoader.finished, @"Second loader not finished yet" ); - GHAssertFalse(thirdLoader.finished, @"Third loader not finished yet" ); + firstLoader.loaderFinishBlock(firstResult, nil); + GHAssertTrue(firstLoader .finished, @"First loader finished already" ); + GHAssertFalse(secondLoader.finished, @"Second loader not finished yet"); + GHAssertFalse(thirdLoader .finished, @"Third loader not finished yet" ); GHAssertFalse(sequenceLoaderFinished, @"Sequence loader finished already"); - secondLoader.loaderFinishBlock.didFinishBlock( secondResult, nil ); + secondLoader.loaderFinishBlock(secondResult, nil); GHAssertTrue(firstLoader.finished, @"First loader finished already" ); GHAssertTrue(secondLoader.finished, @"Second loader not finished yet" ); GHAssertFalse(thirdLoader.finished, @"Third loader not finished yet" ); GHAssertFalse(sequenceLoaderFinished, @"Sequence loader finished already" ); - thirdLoader.loaderFinishBlock.didFinishBlock( thirdResult, nil ); - GHAssertTrue( firstLoader.finished, @"First loader finished already" ); - GHAssertTrue( secondLoader.finished, @"Second loader not finished yet" ); - GHAssertTrue( thirdLoader.finished, @"Third loader not finished yet" ); - GHAssertTrue( sequenceLoaderFinished, @"Sequence loader finished already" ); - + thirdLoader.loaderFinishBlock(thirdResult, nil); + GHAssertTrue(firstLoader.finished , @"First loader finished already" ); + GHAssertTrue(secondLoader.finished, @"Second loader not finished yet"); + GHAssertTrue(thirdLoader.finished , @"Third loader not finished yet" ); + GHAssertTrue(sequenceLoaderFinished, @"Sequence loader finished already"); - GHAssertTrue( [ sequenceResult isKindOfClass: [ NSArray class ] ], @"Result type mismatch" ); - GHAssertTrue( 3 == [ sequenceResult count ], @"result count mismatch" ); + GHAssertTrue([sequenceResult isKindOfClass:[NSArray class]], @"Result type mismatch"); + GHAssertTrue(3 == [sequenceResult count], @"result count mismatch"); - NSArray* expectedResult = @[ firstResult, secondResult, thirdResult ]; - GHAssertEqualObjects( expectedResult, sequenceResult, @"result object mismatch" ); + NSArray *expectedResult = @[firstResult, secondResult, thirdResult]; + GHAssertEqualObjects(expectedResult, sequenceResult, @"result object mismatch"); }; test(); @@ -100,14 +96,14 @@ - (void)testBlocksAreExecutedInTurn test();//invoke th same loader again } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } - (void)testMultiSequenceWithEmptyArray { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @@ -115,19 +111,19 @@ - (void)testMultiSequenceWithEmptyArray { GHAssertThrows ( - sequenceOfAsyncOperationsWithSuccessfullResults( @[] ), + sequenceOfAsyncOperationsWithSuccessfullResults(@[]), @"asert expected" ); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } - (void)testMultiSequenceWithOneLoader { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @@ -150,28 +146,28 @@ - (void)testMultiSequenceWithOneLoader }); NSNumber* firstResult = @(2.71); - GHAssertFalse( firstLoader.finished, @"First loader not finished yet" ); - GHAssertFalse( sequenceLoaderFinished, @"Sequence loader not finished yet" ); + GHAssertFalse(firstLoader.finished, @"First loader not finished yet"); + GHAssertFalse(sequenceLoaderFinished, @"Sequence loader not finished yet"); - firstLoader.loaderFinishBlock.didFinishBlock( firstResult, nil ); - GHAssertTrue( firstLoader.finished, @"First loader finished already" ); - GHAssertTrue( sequenceLoaderFinished, @"Sequence loader finished already" ); + firstLoader.loaderFinishBlock(firstResult, nil); + GHAssertTrue(firstLoader.finished, @"First loader finished already"); + GHAssertTrue(sequenceLoaderFinished, @"Sequence loader finished already"); - GHAssertTrue( [ sequenceResult isKindOfClass: [ NSArray class ] ], @"Result type mismatch" ); - GHAssertTrue( 1 == [ sequenceResult count ], @"result count mismatch" ); + GHAssertTrue([sequenceResult isKindOfClass:[NSArray class]], @"Result type mismatch"); + GHAssertTrue(1 == [sequenceResult count], @"result count mismatch"); - NSArray* expectedResult = @[ firstResult ]; - GHAssertEqualObjects( expectedResult, sequenceResult, @"result object mismatch" ); + NSArray* expectedResult = @[firstResult]; + GHAssertEqualObjects(expectedResult, sequenceResult, @"result object mismatch"); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } - (void)testFailedOperationResultsAreSkippedInMultiSequence { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @@ -210,7 +206,7 @@ - (void)testFailedOperationResultsAreSkippedInMultiSequence NSNumber *firstResult = @(2.71); NSNull *thirdResult = [NSNull null]; - firstLoader.loaderFinishBlock.didFinishBlock(firstResult, nil); + firstLoader.loaderFinishBlock(firstResult, nil); // secondLoader.loaderFinishBlock.didFinishBlock( nil, secondError ); GHAssertTrue(firstLoader.finished , @"First loader finished already" ); @@ -221,14 +217,14 @@ - (void)testFailedOperationResultsAreSkippedInMultiSequence GHAssertNotNil(sequenceResult, @"Result type mismatch" ); GHAssertNil(sequenceError, @"error object mismatch" ); - GHAssertTrue([ sequenceResult isKindOfClass: [ NSArray class ] ], @"Result type mismatch" ); - GHAssertTrue(2 == [ sequenceResult count ], @"result count mismatch" ); + GHAssertTrue([sequenceResult isKindOfClass:[NSArray class]], @"Result type mismatch"); + GHAssertTrue(2 == [sequenceResult count], @"result count mismatch" ); - NSArray* expectedResult = @[ firstResult, thirdResult ]; - GHAssertEqualObjects( expectedResult, sequenceResult, @"result object mismatch" ); + NSArray* expectedResult = @[firstResult, thirdResult]; + GHAssertEqualObjects(expectedResult, sequenceResult, @"result object mismatch"); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/TrySequenceOfAsyncOperationsTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/TrySequenceOfAsyncOperationsTest.m index 4760f0b..4ca3994 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/TrySequenceOfAsyncOperationsTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/TrySequenceOfAsyncOperationsTest.m @@ -1,6 +1,4 @@ -#import "JFFAsyncOperationManager.h" - -#import +#import #import @interface TrySequenceOfAsyncOperationsTest : GHTestCase @@ -10,7 +8,7 @@ @implementation TrySequenceOfAsyncOperationsTest -(void)setUp { - [JFFCancelAsyncOperationBlockHolder enableInstancesCounting]; + [JFFAsyncOperationHandlerBlockHolder enableInstancesCounting]; [JFFDidFinishAsyncOperationBlockHolder enableInstancesCounting]; [JFFAsyncOperationManager enableInstancesCounting]; @@ -18,7 +16,7 @@ -(void)setUp -(void)testTrySequenceOfAsyncOperations { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @@ -45,18 +43,18 @@ -(void)testTrySequenceOfAsyncOperations } } ); - GHAssertFalse( firstLoader.finished, @"First loader not finished yet" ); - GHAssertFalse( secondLoader.finished, @"Second loader not finished yet" ); - GHAssertFalse( sequenceLoaderFinished_, @"Sequence loader not finished yet" ); + GHAssertFalse(firstLoader.finished, @"First loader not finished yet" ); + GHAssertFalse(secondLoader.finished, @"Second loader not finished yet" ); + GHAssertFalse(sequenceLoaderFinished_, @"Sequence loader not finished yet" ); - firstLoader.loaderFinishBlock.didFinishBlock( nil, [ JFFError newErrorWithDescription: @"some error" ] ); + firstLoader.loaderFinishBlock(nil, [JFFError newErrorWithDescription:@"some error"]); GHAssertTrue( firstLoader.finished, @"First loader finished already" ); GHAssertFalse( secondLoader.finished, @"Second loader not finished yet" ); GHAssertFalse( sequenceLoaderFinished_, @"Sequence loader finished already" ); id result_ = [NSObject new]; - secondLoader.loaderFinishBlock.didFinishBlock( result_, nil ); + secondLoader.loaderFinishBlock(result_, nil); GHAssertTrue( firstLoader.finished, @"First loader finished already" ); GHAssertTrue( secondLoader.finished, @"Second loader not finished yet" ); @@ -65,151 +63,148 @@ -(void)testTrySequenceOfAsyncOperations GHAssertTrue( result_ == sequenceResult_, @"Sequence loader finished already" ); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } --(void)testCancelFirstLoaderOfTrySequence +- (void)testCancelFirstLoaderOfTrySequence { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @autoreleasepool { - JFFAsyncOperationManager* firstLoader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* secondLoader_ = [ JFFAsyncOperationManager new ]; + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; - JFFAsyncOperation loader_ = trySequenceOfAsyncOperations( firstLoader_.loader - , secondLoader_.loader - , nil ); + JFFAsyncOperation loader = trySequenceOfAsyncOperations(firstLoader.loader, + secondLoader.loader, + nil); - JFFCancelAsyncOperation cancel_ = loader_( nil, nil, nil ); + JFFAsyncOperationHandler handler = loader(nil, nil, nil); - GHAssertFalse( firstLoader_.canceled, @"still not canceled" ); - GHAssertFalse( secondLoader_.canceled, @"still not canceled" ); + GHAssertFalse(firstLoader .canceled, @"still not canceled" ); + GHAssertFalse(secondLoader.canceled, @"still not canceled" ); - cancel_( YES ); + handler(JFFAsyncOperationHandlerTaskCancel); - GHAssertTrue( firstLoader_.canceled , @"canceled" ); - GHAssertTrue( firstLoader_.cancelFlag, @"canceled" ); - GHAssertFalse( secondLoader_.canceled, @"still not canceled" ); + GHAssertTrue(firstLoader.canceled , @"canceled" ); + GHAssertTrue(firstLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"canceled" ); + GHAssertFalse( secondLoader.canceled, @"still not canceled" ); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } --(void)testCancelSecondLoaderOfTrySequence +- (void)testCancelSecondLoaderOfTrySequence { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @autoreleasepool { - JFFAsyncOperationManager* firstLoader_ = [ JFFAsyncOperationManager new ]; - JFFAsyncOperationManager* secondLoader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = trySequenceOfAsyncOperations( firstLoader_.loader, secondLoader_.loader, nil ); - - JFFCancelAsyncOperation cancel_ = loader_( nil, nil, nil ); - - GHAssertFalse( firstLoader_.canceled, @"still not canceled" ); - GHAssertFalse( secondLoader_.canceled, @"still not canceled" ); - - firstLoader_.loaderFinishBlock.didFinishBlock( nil, [ JFFError newErrorWithDescription: @"some error" ] ); - - GHAssertFalse( firstLoader_.canceled, @"still not canceled" ); - GHAssertFalse( secondLoader_.canceled, @"still not canceled" ); - - cancel_( YES ); - - GHAssertFalse( firstLoader_.canceled, @"canceled" ); - GHAssertTrue( secondLoader_.canceled, @"still not canceled" ); - GHAssertTrue( secondLoader_.cancelFlag, @"canceled" ); - + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = trySequenceOfAsyncOperations( firstLoader.loader, secondLoader.loader, nil ); + + JFFAsyncOperationHandler handler = loader(nil, nil, nil); + + GHAssertFalse(firstLoader.canceled, @"still not canceled" ); + GHAssertFalse(secondLoader.canceled, @"still not canceled" ); + + firstLoader.loaderFinishBlock(nil, [JFFError newErrorWithDescription:@"some error"]); + + GHAssertFalse(firstLoader.canceled, @"still not canceled"); + GHAssertFalse(secondLoader.canceled, @"still not canceled"); + + handler(JFFAsyncOperationHandlerTaskCancel); + + GHAssertFalse(firstLoader.canceled, @"canceled"); + GHAssertTrue(secondLoader.canceled, @"still not canceled"); + GHAssertTrue(secondLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"canceled"); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } --(void)testCancelSecondLoaderOfTrySequenceIfFirstInstantFinish +- (void)testCancelSecondLoaderOfTrySequenceIfFirstInstantFinish { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @autoreleasepool { - JFFAsyncOperationManager* first_loader_ = [ JFFAsyncOperationManager new ]; - first_loader_.failAtLoading = YES; - - JFFAsyncOperationManager* second_loader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = trySequenceOfAsyncOperations( first_loader_.loader, second_loader_.loader, nil ); - - JFFCancelAsyncOperation cancel_ = loader_( nil, nil, nil ); - - GHAssertTrue( first_loader_.finished, @"finished" ); - GHAssertFalse( second_loader_.finished, @"not finished" ); - - cancel_( YES ); - - GHAssertFalse( first_loader_.canceled, @"canceled" ); - GHAssertTrue( second_loader_.canceled, @"still not canceled" ); - GHAssertTrue( second_loader_.cancelFlag, @"canceled" ); - + JFFAsyncOperationManager* firstLoader = [ JFFAsyncOperationManager new ]; + firstLoader.failAtLoading = YES; + + JFFAsyncOperationManager* secondLoader = [ JFFAsyncOperationManager new ]; + + JFFAsyncOperation loader_ = trySequenceOfAsyncOperations( firstLoader.loader, secondLoader.loader, nil ); + + JFFAsyncOperationHandler handler = loader_( nil, nil, nil ); + + GHAssertTrue( firstLoader.finished, @"finished" ); + GHAssertFalse( secondLoader.finished, @"not finished" ); + + handler(JFFAsyncOperationHandlerTaskCancel); + + GHAssertFalse(firstLoader.canceled, @"canceled" ); + GHAssertTrue(secondLoader.canceled, @"still not canceled" ); + GHAssertTrue(secondLoader.lastHandleFlag == JFFAsyncOperationHandlerTaskCancel, @"canceled" ); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } --(void)testFirstLoaderOkOfTrySequence +- (void)testFirstLoaderOkOfTrySequence { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @autoreleasepool { - JFFAsyncOperationManager* first_loader_ = [ JFFAsyncOperationManager new ]; - first_loader_.finishAtLoading = YES; - - JFFAsyncOperationManager* second_loader_ = [ JFFAsyncOperationManager new ]; - - JFFAsyncOperation loader_ = trySequenceOfAsyncOperations( first_loader_.loader, second_loader_.loader, nil ); - - __block BOOL sequence_loader_finished_ = NO; - - loader_( nil, nil, ^( id result_, NSError* error_ ) - { - if ( result_ && !error_ ) - { - sequence_loader_finished_ = YES; + JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; + firstLoader.finishAtLoading = YES; + + JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + + JFFAsyncOperation loader = trySequenceOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); + + __block BOOL sequenceLoaderFinished = NO; + + loader(nil, nil, ^(id result, NSError *error) { + + if (result && !error) { + + sequenceLoaderFinished = YES; } - } ); - - GHAssertTrue( sequence_loader_finished_, @"sequence failed" ); - GHAssertTrue( first_loader_.finished, @"first - finished" ); - GHAssertFalse( second_loader_.finished, @"second - not finished" ); + }); + GHAssertTrue(sequenceLoaderFinished, @"sequence failed" ); + GHAssertTrue(firstLoader.finished, @"first - finished" ); + GHAssertFalse(secondLoader.finished, @"second - not finished" ); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } --(void)testTrySequenceWithOneLoader +- (void)testTrySequenceWithOneLoader { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @@ -229,44 +224,53 @@ -(void)testTrySequenceWithOneLoader } }); - GHAssertFalse( sequenceLoaderFinished, @"sequence not finished" ); + GHAssertFalse(sequenceLoaderFinished, @"sequence not finished"); - firstLoader.loaderFinishBlock.didFinishBlock([NSNull new], nil); + firstLoader.loaderFinishBlock([NSNull new], nil); - GHAssertTrue( sequenceLoaderFinished, @"sequence finished" ); + GHAssertTrue(sequenceLoaderFinished, @"sequence finished"); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } - (void)testCriticalErrorOnFailFirstLoaderWhenTrySequenceResultCallbackIsNil { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; + __weak JFFAsyncOperationManager *weakFirstLoader; + __weak JFFAsyncOperationManager *weakSecondLoader; + @autoreleasepool { JFFAsyncOperationManager *firstLoader = [JFFAsyncOperationManager new]; JFFAsyncOperationManager *secondLoader = [JFFAsyncOperationManager new]; + weakFirstLoader = firstLoader; + weakSecondLoader = secondLoader; + JFFAsyncOperation loader = trySequenceOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); loader(nil, nil, nil); - firstLoader.loaderFinishBlock.didFinishBlock( [ NSNull null ], nil ); + firstLoader.loaderFinishBlock([NSNull null], nil); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertNil(weakFirstLoader , nil); + GHAssertNil(weakSecondLoader, nil); + + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } - (void)testImmediatelyCancelCallbackOfFirstLoader { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @@ -280,40 +284,34 @@ - (void)testImmediatelyCancelCallbackOfFirstLoader JFFAsyncOperation loader = trySequenceOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); __block BOOL progressCallbackCalled = NO; - JFFAsyncOperationProgressHandler progressCallback = ^(id progressInfo) { + JFFAsyncOperationProgressCallback progressCallback = ^(id progressInfo) { progressCallbackCalled = YES; }; - __block NSNumber *cancelCallbackCallFlag = NO; - JFFCancelAsyncOperationHandler cancelCallback = ^(BOOL canceled) { - - cancelCallbackCallFlag = @(canceled); - }; + __block NSError *finishError; - __block BOOL doneCallbackCalled = NO; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { - doneCallbackCalled = YES; + finishError = error; }; - loader(progressCallback, cancelCallback, doneCallback); + loader(progressCallback, nil, doneCallback); GHAssertFalse(progressCallbackCalled, nil); - GHAssertEqualObjects(@YES, cancelCallbackCallFlag, nil); - GHAssertFalse(doneCallbackCalled, nil); + GHAssertTrue([finishError isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]], nil); GHAssertEquals((NSUInteger)0, secondLoader.loadingCount, nil); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } - (void)testImmediatelyCancelCallbackOfSecondLoader { - NSUInteger originalInstanceCount1 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount1 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount2 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationManager instancesCount]; @@ -327,33 +325,27 @@ - (void)testImmediatelyCancelCallbackOfSecondLoader JFFAsyncOperation loader = trySequenceOfAsyncOperations(firstLoader.loader, secondLoader.loader, nil); __block BOOL progressCallbackCalled = NO; - JFFAsyncOperationProgressHandler progressCallback = ^(id progressInfo) { + JFFAsyncOperationProgressCallback progressCallback = ^(id progressInfo) { progressCallbackCalled = YES; }; - __block NSNumber *cancelCallbackCallFlag = NO; - JFFCancelAsyncOperationHandler cancelCallback = ^(BOOL canceled) { - - cancelCallbackCallFlag = @(canceled); - }; + __block NSError *finishError; - __block BOOL doneCallbackCalled = NO; - JFFDidFinishAsyncOperationHandler doneCallback = ^(id result, NSError *error) { + JFFDidFinishAsyncOperationCallback doneCallback = ^(id result, NSError *error) { - doneCallbackCalled = YES; + finishError = error; }; - loader(progressCallback, cancelCallback, doneCallback); + loader(progressCallback, nil, doneCallback); - firstLoader.loaderFinishBlock.didFinishBlock(nil, [JFFError newErrorWithDescription:@"test"]); + firstLoader.loaderFinishBlock(nil, [JFFError newErrorWithDescription:@"test"]); GHAssertFalse(progressCallbackCalled, nil); - GHAssertEqualObjects(@YES, cancelCallbackCallFlag, nil); - GHAssertFalse(doneCallbackCalled, nil); + GHAssertTrue([finishError isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]], nil); } - GHAssertTrue(originalInstanceCount1 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount1 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount2 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationManager instancesCount], @"All object of this class should be deallocated"); } diff --git a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/WeakAsyncOperationTest.m b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/WeakAsyncOperationTest.m index a52e8b5..ce71c59 100644 --- a/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/WeakAsyncOperationTest.m +++ b/test/JFFAsyncOperationsTest/JFFAsyncOperationsTest/WeakAsyncOperationTest.m @@ -1,5 +1,5 @@ #import -#import +#import #import #import @@ -11,7 +11,7 @@ @implementation WeakAsyncOperationTest - (void)setUp { [JFFSimpleBlockHolder enableInstancesCounting]; - [JFFCancelAsyncOperationBlockHolder enableInstancesCounting]; + [JFFAsyncOperationHandlerBlockHolder enableInstancesCounting]; [JFFAsyncOperationProgressBlockHolder enableInstancesCounting]; [JFFDidFinishAsyncOperationBlockHolder enableInstancesCounting]; } @@ -19,51 +19,52 @@ - (void)setUp - (void)testCancelActionAfterUnsubscribeOnDealloc { NSUInteger originalInstanceCount1 = [JFFSimpleBlockHolder instancesCount]; - NSUInteger originalInstanceCount2 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount2 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationProgressBlockHolder instancesCount]; NSUInteger originalInstanceCount4 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; @autoreleasepool { - __block BOOL cancelCallbackCalled_ = NO; - JFFCancelAsyncOperation cancel_; + __block JFFAsyncOperationHandlerTask cancelCallbackCalled = JFFAsyncOperationHandlerTaskUndefined; + JFFAsyncOperationHandler cancel; @autoreleasepool { - NSObject* obj_ = [ NSObject new ]; - + NSObject *obj = [NSObject new]; + @autoreleasepool { - JFFAsyncOperation operation_ = ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) + JFFAsyncOperation operation = ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { - cancelCallback = [ cancelCallback copy ]; - return [ ^void( BOOL cancel_ ) - { - if ( cancelCallback ) - cancelCallback( cancel_ ); - } copy ]; + stateCallback = [stateCallback copy]; + doneCallback = [doneCallback copy]; + + return ^void(JFFAsyncOperationHandlerTask task) { + + processHandlerFlag(task, stateCallback, doneCallback); + }; }; - operation_ = [ obj_ autoUnsubsribeOnDeallocAsyncOperation: operation_ ]; + operation = [obj autoUnsubsribeOnDeallocAsyncOperation:operation]; - cancel_ = operation_( nil, ^( BOOL canceled_ ) - { - cancelCallbackCalled_ = YES; - }, nil ); + cancel = operation(nil, ^(JFFAsyncOperationState state) { + + cancelCallbackCalled = YES; + }, nil); } } - GHAssertTrue( cancelCallbackCalled_, @"Cancel callback should be called" ); - cancelCallbackCalled_ = NO; + GHAssertTrue(cancelCallbackCalled, @"Cancel callback should be called"); + cancelCallbackCalled = NO; - cancel_( YES ); + cancel(JFFAsyncOperationHandlerTaskCancel); - GHAssertFalse( cancelCallbackCalled_, @"Cancel callback should not be called after dealloc" ); + GHAssertFalse(cancelCallbackCalled, @"Cancel callback should not be called after dealloc"); } GHAssertTrue(originalInstanceCount1 == [JFFSimpleBlockHolder instancesCount], @"All object of this class should be deallocated"); - GHAssertTrue(originalInstanceCount2 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount2 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationProgressBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount4 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); } @@ -71,29 +72,30 @@ - (void)testCancelActionAfterUnsubscribeOnDealloc - (void)testOnceCancelBlockCallingOnDealloc { NSUInteger originalInstanceCount1 = [JFFSimpleBlockHolder instancesCount]; - NSUInteger originalInstanceCount2 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount2 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationProgressBlockHolder instancesCount]; NSUInteger originalInstanceCount4 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; @autoreleasepool { __block NSUInteger cancelCallbackCallCount = 0; - + @autoreleasepool { NSObject *obj = [NSObject new]; - - JFFAsyncOperation operation = ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) + + JFFAsyncOperation operation = ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { - cancelCallback = [cancelCallback copy]; - return [ ^void( BOOL cancel_ ) - { + stateCallback = [stateCallback copy]; + doneCallback = [doneCallback copy]; + + return ^void(JFFAsyncOperationHandlerTask task) { + ++cancelCallbackCallCount; - if (cancelCallback) - cancelCallback( cancel_ ); - } copy ]; + processHandlerFlag(task, stateCallback, doneCallback); + }; }; operation = [obj autoUnsubsribeOnDeallocAsyncOperation:operation]; @@ -105,7 +107,7 @@ - (void)testOnceCancelBlockCallingOnDealloc } GHAssertTrue(originalInstanceCount1 == [JFFSimpleBlockHolder instancesCount], @"All object of this class should be deallocated"); - GHAssertTrue(originalInstanceCount2 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount2 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationProgressBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount4 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); } @@ -113,7 +115,7 @@ - (void)testOnceCancelBlockCallingOnDealloc - (void)testCancelCallbackCallingOnCancelBlock { NSUInteger originalInstanceCount1 = [JFFSimpleBlockHolder instancesCount]; - NSUInteger originalInstanceCount2 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount2 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationProgressBlockHolder instancesCount]; NSUInteger originalInstanceCount4 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; @@ -122,187 +124,181 @@ - (void)testCancelCallbackCallingOnCancelBlock __block BOOL cancelBlockCalled = NO; - JFFAsyncOperation operation = ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { - cancelCallback = [cancelCallback copy]; - return [^void(BOOL cancel) { - cancelBlockCalled = cancel; - if (cancelCallback) - cancelCallback(cancel); - }copy]; + JFFAsyncOperation operation = ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + stateCallback = [stateCallback copy]; + doneCallback = [doneCallback copy]; + + return ^void(JFFAsyncOperationHandlerTask task) { + + cancelBlockCalled = (task == JFFAsyncOperationHandlerTaskCancel); + processHandlerFlag(task, stateCallback, doneCallback); + }; }; operation = [obj autoUnsubsribeOnDeallocAsyncOperation:operation]; __block BOOL cancelCallbackCalled = NO; - JFFCancelAsyncOperation cancel = operation(nil, ^(BOOL canceled) { - cancelCallbackCalled = YES; - }, nil); + JFFAsyncOperationHandler cancel = operation(nil, nil, ^(id result, NSError *error) { + + cancelCallbackCalled = [error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]]; + }); - cancel(YES); + cancel(JFFAsyncOperationHandlerTaskCancel); GHAssertTrue(cancelCallbackCalled, @"Cancel callback should not be called after dealloc"); GHAssertTrue(cancelBlockCalled, @"Cancel callback should not be called after dealloc"); } GHAssertTrue(originalInstanceCount1 == [JFFSimpleBlockHolder instancesCount], @"All object of this class should be deallocated"); - GHAssertTrue(originalInstanceCount2 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount2 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationProgressBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount4 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); } // When unsubscribe from autoCancelAsyncOperation -> native should not be canceled --(void)testUnsubscribeFromAutoCancel +- (void)testUnsubscribeFromAutoCancel { NSUInteger originalInstanceCount1 = [JFFSimpleBlockHolder instancesCount]; - NSUInteger originalInstanceCount2 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount2 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationProgressBlockHolder instancesCount]; NSUInteger originalInstanceCount4 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; @autoreleasepool { - NSObject *operationOwner_ = [ NSObject new ]; - - __block BOOL nativeCancelBlockCalled_ = NO; - - JFFAsyncOperation operation_ = ^JFFCancelAsyncOperation( JFFAsyncOperationProgressHandler progressCallback_ - , JFFCancelAsyncOperationHandler cancelCallback_ - , JFFDidFinishAsyncOperationHandler doneCallback_ ) - { - cancelCallback_ = [ cancelCallback_ copy ]; - return [ ^void( BOOL cancel_ ) - { - nativeCancelBlockCalled_ = YES; - if ( cancelCallback_ ) - cancelCallback_( cancel_ ); - } copy ]; + NSObject *operationOwner = [NSObject new]; + + __block BOOL nativeCancelBlockCalled = NO; + + JFFAsyncOperation operation = ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + + stateCallback = [stateCallback copy]; + doneCallback = [doneCallback copy]; + + return ^void(JFFAsyncOperationHandlerTask task) { + + nativeCancelBlockCalled = (task == JFFAsyncOperationHandlerTaskUnsubscribe); + processHandlerFlag(task, stateCallback, doneCallback); + }; }; - - JFFAsyncOperation autoCancelOperation_ = [ operationOwner_ autoCancelOnDeallocAsyncOperation: operation_ ]; - - __block BOOL deallocated_ = NO; - JFFCancelAsyncOperation cancel_; - __block BOOL cancelCallbackCalled_ = NO; - + + JFFAsyncOperation autoCancelOperation = [operationOwner autoCancelOnDeallocAsyncOperation:operation]; + + __block BOOL deallocated = NO; + JFFAsyncOperationHandler cancel; + __block BOOL cancelCallbackCalled = NO; + @autoreleasepool { - NSObject* ownedByCallbacks_ = [ NSObject new ]; - [ ownedByCallbacks_ addOnDeallocBlock: ^void( void ) - { - deallocated_ = YES; - } ]; - - JFFAsyncOperationProgressHandler progress_callback_ = ^void( id progressInfo_ ) - { - //simulate using object in callback block - [ ownedByCallbacks_ class ]; - }; - JFFCancelAsyncOperationHandler cancel_callback_ = ^void( BOOL canceled_ ) + NSObject *ownedByCallbacks = [NSObject new]; + [ownedByCallbacks addOnDeallocBlock:^void(void) { + + deallocated = YES; + }]; + + JFFAsyncOperationProgressCallback progressCallback = ^void(id progressInfo) { - cancelCallbackCalled_ = !canceled_; //simulate using object in callback block - [ ownedByCallbacks_ class ]; + [ownedByCallbacks class]; }; - JFFDidFinishAsyncOperationHandler done_callback_ = ^void( id result_, NSError* error_ ) - { + JFFDidFinishAsyncOperationCallback doneCallback = ^void(id result, NSError *error) { + + cancelCallbackCalled = [error isKindOfClass:[JFFAsyncOpFinishedByUnsubscriptionError class]]; //simulate using object in callback block - [ ownedByCallbacks_ class ]; + [ownedByCallbacks class]; }; - - cancel_ = autoCancelOperation_( progress_callback_ - , cancel_callback_ - , done_callback_ ); + + cancel = autoCancelOperation(progressCallback, nil, doneCallback); } - - GHAssertFalse( deallocated_, @"owned_by_callbacks_ object should not be deallocated" ); - - cancel_( NO ); - - GHAssertTrue( nativeCancelBlockCalled_, @"Native cancel block should not be called" ); - GHAssertTrue( deallocated_, @"owned_by_callbacks_ objet should be deallocated" ); - GHAssertTrue( cancelCallbackCalled_, @"cancel callback should ba called" ); + + GHAssertFalse(deallocated, @"owned_by_callbacks_ object should not be deallocated" ); + + cancel(JFFAsyncOperationHandlerTaskUnsubscribe); + + GHAssertTrue(nativeCancelBlockCalled, @"Native cancel block should not be called" ); + GHAssertTrue(deallocated, @"owned_by_callbacks_ objet should be deallocated" ); + GHAssertTrue(cancelCallbackCalled, @"cancel callback should ba called" ); } GHAssertTrue(originalInstanceCount1 == [JFFSimpleBlockHolder instancesCount], @"All object of this class should be deallocated"); - GHAssertTrue(originalInstanceCount2 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount2 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationProgressBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount4 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); } --(void)testCancelCallbackCallingForNativeLoaderWhenWeekDelegateRemove +- (void)testCancelCallbackCallingForNativeLoaderWhenWeekDelegateRemove { NSUInteger originalInstanceCount1 = [JFFSimpleBlockHolder instancesCount]; - NSUInteger originalInstanceCount2 = [JFFCancelAsyncOperationBlockHolder instancesCount]; + NSUInteger originalInstanceCount2 = [JFFAsyncOperationHandlerBlockHolder instancesCount]; NSUInteger originalInstanceCount3 = [JFFAsyncOperationProgressBlockHolder instancesCount]; NSUInteger originalInstanceCount4 = [JFFDidFinishAsyncOperationBlockHolder instancesCount]; @autoreleasepool { - __block BOOL nativeCancelBlockCalled_ = NO; - + __block BOOL nativeCancelBlockCalled = NO; + @autoreleasepool { - NSObject* operationOwner_ = [ NSObject new ]; - - __block BOOL unsibscribeCancelBlockCalled_ = NO; - __block BOOL delegateDeallocated_ = NO; - + NSObject *operationOwner = [NSObject new]; + + __block BOOL unsibscribeCancelBlockCalled = NO; + __block BOOL delegateDeallocated = NO; + @autoreleasepool { - NSObject* delegate_ = [ NSObject new ]; - [ delegate_ addOnDeallocBlock: ^void( void ) - { - delegateDeallocated_ = YES; - } ]; - + NSObject *delegate = [NSObject new]; + [delegate addOnDeallocBlock:^void(void) { + + delegateDeallocated = YES; + }]; + JFFAsyncOperation operation_ = nil; - + @autoreleasepool { - operation_ = [ ^JFFCancelAsyncOperation( JFFAsyncOperationProgressHandler progressCallback_ - , JFFCancelAsyncOperationHandler cancelCallback_ - , JFFDidFinishAsyncOperationHandler doneCallback_ ) - { - return [ ^void( BOOL cancel_ ) - { - if ( cancelCallback_ ) - cancelCallback_( cancel_ ); - nativeCancelBlockCalled_ = YES; - } copy ]; - } copy ]; + operation_ = [^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + + stateCallback = [stateCallback copy]; + doneCallback = [doneCallback copy]; + + return ^void(JFFAsyncOperationHandlerTask task) { + + nativeCancelBlockCalled = (task == JFFAsyncOperationHandlerTaskUnsubscribe); + processHandlerFlag(task, stateCallback, doneCallback); + }; + } copy]; //like native operation still living - - JFFAsyncOperation autoCancelOperation_ = [ operationOwner_ autoCancelOnDeallocAsyncOperation: operation_ ]; - - __unsafe_unretained id weakDelegate_ = delegate_; - - JFFCancelAsyncOperationHandler unsubscribeCallback_ = ^( BOOL canceled_ ) - { - unsibscribeCancelBlockCalled_ = !canceled_; + + JFFAsyncOperation autoCancelOperation_ = [operationOwner autoCancelOnDeallocAsyncOperation:operation_]; + + __unsafe_unretained id weakDelegate = delegate; + + JFFDidFinishAsyncOperationCallback doneCallback = ^void(id result, NSError *error) { + + unsibscribeCancelBlockCalled = [error isKindOfClass:[JFFAsyncOpFinishedByUnsubscriptionError class]]; + NSLog(@"notify delegate: %@, with owner: %@", weakDelegate, operationOwner); }; - [ weakDelegate_ autoUnsubsribeOnDeallocAsyncOperation: autoCancelOperation_ ]( nil - , unsubscribeCallback_ - , ^void( id result_ - , NSError* error_ ) - { - NSLog( @"notify delegate: %@, with owner: %@", weakDelegate_, operationOwner_ ); - } ); + [weakDelegate autoUnsubsribeOnDeallocAsyncOperation:autoCancelOperation_](nil, nil, doneCallback); } } - GHAssertTrue( delegateDeallocated_ , @"OK" ); - GHAssertTrue( nativeCancelBlockCalled_ , @"OK" ); - GHAssertTrue( unsibscribeCancelBlockCalled_, @"OK" ); - nativeCancelBlockCalled_ = NO; + GHAssertTrue(delegateDeallocated , @"OK"); + GHAssertTrue(nativeCancelBlockCalled , @"OK"); + GHAssertTrue(unsibscribeCancelBlockCalled, @"OK"); + nativeCancelBlockCalled = NO; } - - GHAssertFalse( nativeCancelBlockCalled_, @"operation_ should be canceled here" ); + + GHAssertFalse( nativeCancelBlockCalled, @"operation_ should be canceled here" ); } GHAssertTrue(originalInstanceCount1 == [JFFSimpleBlockHolder instancesCount], @"All object of this class should be deallocated"); - GHAssertTrue(originalInstanceCount2 == [JFFCancelAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); + GHAssertTrue(originalInstanceCount2 == [JFFAsyncOperationHandlerBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount3 == [JFFAsyncOperationProgressBlockHolder instancesCount], @"All object of this class should be deallocated"); GHAssertTrue(originalInstanceCount4 == [JFFDidFinishAsyncOperationBlockHolder instancesCount], @"All object of this class should be deallocated"); } diff --git a/test/JFFCachesTest/Default-568h@2x.png b/test/JFFCachesTest/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0891b7aabfcf3422423b109c8beed2bab838c607 GIT binary patch literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u literal 0 HcmV?d00001 diff --git a/test/JFFContactsTest/JFFContactsTest/JFFContactsTest.m b/test/JFFContactsTest/JFFContactsTest/JFFContactsTest.m index 00514ba..fa2412a 100644 --- a/test/JFFContactsTest/JFFContactsTest/JFFContactsTest.m +++ b/test/JFFContactsTest/JFFContactsTest/JFFContactsTest.m @@ -221,7 +221,7 @@ - (void)testEnumerateAllContacts JFFAddressBookSuccessCallback onSuccess = ^(JFFAddressBook *book) { - NSArray *savedContacts = [contactIds forceMap: ^id(NSNumber *contactId) { + NSArray *savedContacts = [contactIds forceMap:^id(NSNumber *contactId) { return [JFFContact findContactWithContactInternalId:[contactId longLongValue] addressBook:book]; }]; diff --git a/test/JFFCoreLocationTest/JFFCoreLocationTest.xcodeproj/project.pbxproj b/test/JFFCoreLocationTest/JFFCoreLocationTest.xcodeproj/project.pbxproj index 66048dd..3611ce4 100644 --- a/test/JFFCoreLocationTest/JFFCoreLocationTest.xcodeproj/project.pbxproj +++ b/test/JFFCoreLocationTest/JFFCoreLocationTest.xcodeproj/project.pbxproj @@ -7,9 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + 4C11F7A0182792ED00229A6B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C11F79F182792ED00229A6B /* QuartzCore.framework */; }; + 4C11F7A2182792F900229A6B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C11F7A1182792F900229A6B /* CoreGraphics.framework */; }; CE206E2B16414CFF002476FD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE206E2A16414CFF002476FD /* UIKit.framework */; }; CE206E2D16414CFF002476FD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE206E2C16414CFF002476FD /* Foundation.framework */; }; - CE206E2F16414CFF002476FD /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE206E2E16414CFF002476FD /* CoreGraphics.framework */; }; CE206E3516414CFF002476FD /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE206E3316414CFF002476FD /* InfoPlist.strings */; }; CE206E3716414CFF002476FD /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CE206E3616414CFF002476FD /* main.m */; }; CE206E3D16414CFF002476FD /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = CE206E3C16414CFF002476FD /* Default.png */; }; @@ -28,6 +29,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 4C11F795182792DF00229A6B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CE206E7616414EE5002476FD /* JFFAsyncOperations.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4C1A0F8D182577BE0020FBF6; + remoteInfo = JFFAsyncOperationsMacOS; + }; CE206E7216414EDE002476FD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CE206E6A16414EDE002476FD /* JFFCoreLocation.xcodeproj */; @@ -171,10 +179,11 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 4C11F79F182792ED00229A6B /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 4C11F7A1182792F900229A6B /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; CE206E2616414CFF002476FD /* JFFCoreLocationTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JFFCoreLocationTest.app; sourceTree = BUILT_PRODUCTS_DIR; }; CE206E2A16414CFF002476FD /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; CE206E2C16414CFF002476FD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - CE206E2E16414CFF002476FD /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; CE206E3216414CFF002476FD /* JFFCoreLocationTest-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "JFFCoreLocationTest-Info.plist"; sourceTree = ""; }; CE206E3416414CFF002476FD /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; CE206E3616414CFF002476FD /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; @@ -199,6 +208,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4C11F7A2182792F900229A6B /* CoreGraphics.framework in Frameworks */, + 4C11F7A0182792ED00229A6B /* QuartzCore.framework in Frameworks */, CE206FC116415677002476FD /* CoreLocation.framework in Frameworks */, CE206EF516414FE7002476FD /* libJFFScheduler.a in Frameworks */, CE206EF616414FE7002476FD /* libJFFTestTools.a in Frameworks */, @@ -209,7 +220,6 @@ CE206EAC16414F05002476FD /* libJFFUtils.a in Frameworks */, CE206E2B16414CFF002476FD /* UIKit.framework in Frameworks */, CE206E2D16414CFF002476FD /* Foundation.framework in Frameworks */, - CE206E2F16414CFF002476FD /* CoreGraphics.framework in Frameworks */, CE206E6316414D2C002476FD /* GHUnitIOS.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -238,13 +248,14 @@ CE206E2916414CFF002476FD /* Frameworks */ = { isa = PBXGroup; children = ( + 4C11F7A1182792F900229A6B /* CoreGraphics.framework */, + 4C11F79F182792ED00229A6B /* QuartzCore.framework */, CE206EDD16414FC0002476FD /* libc++.dylib */, CE206EDB16414FB9002476FD /* libstdc++.dylib */, CE206FC016415677002476FD /* CoreLocation.framework */, CE206E6216414D2C002476FD /* GHUnitIOS.framework */, CE206E2A16414CFF002476FD /* UIKit.framework */, CE206E2C16414CFF002476FD /* Foundation.framework */, - CE206E2E16414CFF002476FD /* CoreGraphics.framework */, ); name = Frameworks; sourceTree = ""; @@ -299,6 +310,7 @@ CE206E8416414EE6002476FD /* libJFFAsyncOperations.a */, CE206E8616414EE6002476FD /* libJFFAsyncOperations-clang.a */, CE206E8816414EE6002476FD /* JFFAsyncOperationsFW.framework */, + 4C11F796182792DF00229A6B /* libJFFAsyncOperationsMacOS.a */, ); name = Products; sourceTree = ""; @@ -408,6 +420,13 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + 4C11F796182792DF00229A6B /* libJFFAsyncOperationsMacOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libJFFAsyncOperationsMacOS.a; + remoteRef = 4C11F795182792DF00229A6B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; CE206E7316414EDE002476FD /* libJFFCoreLocation.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; diff --git a/test/JFFNetworkTest/Classes/JFFConectionTest.m b/test/JFFNetworkTest/Classes/JFFConectionTest.m index 7710ecd..63f0b21 100755 --- a/test/JFFNetworkTest/Classes/JFFConectionTest.m +++ b/test/JFFNetworkTest/Classes/JFFConectionTest.m @@ -25,15 +25,14 @@ - (void)testHttp406NotAcceptableCode void (^testBlock)(JFFSimpleBlock) = ^(JFFSimpleBlock finishTest) { - JFFAsyncOperationProgressHandler progress = ^(NSData *dataChunk) - { + JFFAsyncOperationProgressCallback progress = ^(NSData *dataChunk) { if (!totalData) totalData = [NSMutableData new]; [totalData appendData:dataChunk]; }; - JFFDidFinishAsyncOperationHandler finish = ^(id result, NSError *error) - { + JFFDidFinishAsyncOperationCallback finish = ^(id result, NSError *error) { + didFinishLoadingBlockError = error; finishTest(); }; diff --git a/test/JFFNetworkTest/JFFNetworkTest.xcodeproj/project.pbxproj b/test/JFFNetworkTest/JFFNetworkTest.xcodeproj/project.pbxproj index c5e0fe1..214f1d8 100755 --- a/test/JFFNetworkTest/JFFNetworkTest.xcodeproj/project.pbxproj +++ b/test/JFFNetworkTest/JFFNetworkTest.xcodeproj/project.pbxproj @@ -15,6 +15,7 @@ 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; }; + 4C11F7BD182793D300229A6B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C11F7BC182793D300229A6B /* QuartzCore.framework */; }; 5310BA45141F4D7800A3E2B1 /* GHUnitIOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5310BA44141F4D7800A3E2B1 /* GHUnitIOS.framework */; }; 5310BAEF141F51D300A3E2B1 /* libJFFUtils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5310BA9B141F51AD00A3E2B1 /* libJFFUtils.a */; }; 5310BAF0141F51E000A3E2B1 /* libJFFScheduler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5310BA98141F51AD00A3E2B1 /* libJFFScheduler.a */; }; @@ -66,6 +67,13 @@ remoteGlobalIDString = 1BE0542A154826DA00270B58; remoteInfo = JFFTestTools; }; + 4C11F7C1182793D400229A6B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5310BA84141F51AD00A3E2B1 /* JFFAsyncOperations.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4C1A0F8D182577BE0020FBF6; + remoteInfo = JFFAsyncOperationsMacOS; + }; 5310BA91141F51AD00A3E2B1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 5310BA84141F51AD00A3E2B1 /* JFFAsyncOperations.xcodeproj */; @@ -230,6 +238,7 @@ 288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* JFFNetworkTest_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFNetworkTest_Prefix.pch; sourceTree = ""; }; + 4C11F7BC182793D300229A6B /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 5310BA44141F4D7800A3E2B1 /* GHUnitIOS.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GHUnitIOS.framework; path = ../../frameworks/GHUnitIOS.framework; sourceTree = SOURCE_ROOT; }; 5310BA84141F51AD00A3E2B1 /* JFFAsyncOperations.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = JFFAsyncOperations.xcodeproj; path = ../../lib/JFFAsyncOperations/JFFAsyncOperations.xcodeproj; sourceTree = SOURCE_ROOT; }; 5310BA87141F51AD00A3E2B1 /* JFFNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = JFFNetwork.xcodeproj; path = ../../lib/JFFNetwork/JFFNetwork.xcodeproj; sourceTree = SOURCE_ROOT; }; @@ -272,6 +281,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4C11F7BD182793D300229A6B /* QuartzCore.framework in Frameworks */, 1BEC485C156A27270099DA6D /* libstdc++.dylib in Frameworks */, 1B0E89961563FAC800825E3C /* libc++.dylib in Frameworks */, 1B2669E615623FBD0054E183 /* libJFFTestTools.a in Frameworks */, @@ -393,6 +403,7 @@ 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( + 4C11F7BC182793D300229A6B /* QuartzCore.framework */, 1BEC485B156A27270099DA6D /* libstdc++.dylib */, 1B0E89951563FAC800825E3C /* libc++.dylib */, 53A33F2A141F65F700469DAA /* CFNetwork.framework */, @@ -411,6 +422,7 @@ 5310BA92141F51AD00A3E2B1 /* libJFFAsyncOperations.a */, 5357CDE314A9F4F80046EA34 /* libJFFAsyncOperations-clang.a */, 65B1F93B151A8B74000A1736 /* JFFAsyncOperationsFW.framework */, + 4C11F7C2182793D400229A6B /* libJFFAsyncOperationsMacOS.a */, ); name = Products; sourceTree = ""; @@ -580,6 +592,13 @@ remoteRef = 1B2669E215623FA80054E183 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C11F7C2182793D400229A6B /* libJFFAsyncOperationsMacOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libJFFAsyncOperationsMacOS.a; + remoteRef = 4C11F7C1182793D400229A6B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 5310BA92141F51AD00A3E2B1 /* libJFFAsyncOperations.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; diff --git a/test/JFFRestKitTest/JFFRestKitTest/JFFDataLoadersToolsTests.m b/test/JFFRestKitTest/JFFRestKitTest/JFFDataLoadersToolsTests.m index cc70b19..38f1382 100644 --- a/test/JFFRestKitTest/JFFRestKitTest/JFFDataLoadersToolsTests.m +++ b/test/JFFRestKitTest/JFFRestKitTest/JFFDataLoadersToolsTests.m @@ -2,9 +2,9 @@ static JFFAsyncOperation testDataLoader(const int *buffer, int bufferSize) { - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback cancelCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { __block JFFTimer *timer = [JFFTimer new]; @@ -34,13 +34,15 @@ static JFFAsyncOperation testDataLoader(const int *buffer, int bufferSize) } } duration:.01]; - return ^(BOOL canceled) { + return ^(JFFAsyncOperationHandlerTask task) { + + NSCParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); if (!timer) return; if (cancelCallback) - cancelCallback(canceled); + cancelCallback(task); [timer cancelAllScheduledOperations]; timer = nil; @@ -75,7 +77,7 @@ - (void)testJTmpFileLoaderWithChunkedDataLoader JFFAsyncOperation loader = jTmpFileLoaderWithChunkedDataLoader(dataLoader); - JFFAsyncOperationProgressHandler progressCallback = ^(NSData *chunkData) { + JFFAsyncOperationProgressCallback progressCallback = ^(NSData *chunkData) { [chunks addObject:chunkData]; }; diff --git a/test/JFFRestKitTest/JFFRestKitTest/SmartDataLoaderTest.m b/test/JFFRestKitTest/JFFRestKitTest/SmartDataLoaderTest.m index 67ef171..e791e44 100644 --- a/test/JFFRestKitTest/JFFRestKitTest/SmartDataLoaderTest.m +++ b/test/JFFRestKitTest/JFFRestKitTest/SmartDataLoaderTest.m @@ -44,9 +44,9 @@ static JFFAsyncOperationBinder testDataLoader(BOOL *wasCalled) { return ^JFFAsyncOperation(NSURL *url) { NSData *response = [[url description] dataUsingEncoding:NSUTF8StringEncoding]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback cancelCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { if (wasCalled) *wasCalled = YES; return asyncOperationWithResult(response)(progressCallback, @@ -67,13 +67,13 @@ static JFFAsyncOperationBinder badTestDataLoader() static JFFAsyncOperationBinder differentTestDataLoader(BOOL *wasCalled) { - return ^JFFAsyncOperation(NSURL *url) - { + return ^JFFAsyncOperation(NSURL *url) { + NSData *response = [differntServerResponse dataUsingEncoding:NSUTF8StringEncoding]; - return ^JFFCancelAsyncOperation(JFFAsyncOperationProgressHandler progressCallback, - JFFCancelAsyncOperationHandler cancelCallback, - JFFDidFinishAsyncOperationHandler doneCallback) - { + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback cancelCallback, + JFFDidFinishAsyncOperationCallback doneCallback) { + if (wasCalled) *wasCalled = YES; return asyncOperationWithResult(response)(progressCallback, @@ -187,11 +187,11 @@ -(void)testUseCachedDataIfCannotLoadData __block NSString *storedDataString = nil; __block NSString *cachedDataString = nil; - loader(nil, nil, ^(id data, NSError *error_) { + loader(nil, nil, ^(id data, NSError *error) { storedDataString = data; - loaderWromCache( nil, nil, ^( id data_, NSError* error_ ) { - cachedDataString = data_; + loaderWromCache( nil, nil, ^(id data, NSError *error) { + cachedDataString = data; }); }); diff --git a/test/JFFSchedulerTest/JFFSchedulerTest.xcodeproj/project.pbxproj b/test/JFFSchedulerTest/JFFSchedulerTest.xcodeproj/project.pbxproj index dc6163c..89681f9 100644 --- a/test/JFFSchedulerTest/JFFSchedulerTest.xcodeproj/project.pbxproj +++ b/test/JFFSchedulerTest/JFFSchedulerTest.xcodeproj/project.pbxproj @@ -20,7 +20,9 @@ 1B41AD65151CD1EE00566B1B /* libJFFUtils.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B41AD5C151CD1E000566B1B /* libJFFUtils.a */; }; 1BEC47F7156A26B80099DA6D /* libstdc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1BEC47F6156A26B80099DA6D /* libstdc++.dylib */; }; 1BEE3D2615EFB43E0024D249 /* PerformSelectorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BEE3D2515EFB43E0024D249 /* PerformSelectorTest.m */; }; + 4C11F7DC1827956900229A6B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C11F7DB1827956900229A6B /* QuartzCore.framework */; }; 4C7F8060182008CC009785AF /* libJFFAsyncOperations.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C7F8059182008BB009785AF /* libJFFAsyncOperations.a */; }; + 4CDB8DC7182BBB5200C5BFA3 /* JFFAsyncOperationHelpersTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CDB8DC6182BBB5200C5BFA3 /* JFFAsyncOperationHelpersTest.m */; }; CE1BC2DB161B2E81007DEC95 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = CE1BC2DA161B2E81007DEC95 /* Default-568h@2x.png */; }; /* End PBXBuildFile section */ @@ -109,6 +111,13 @@ remoteGlobalIDString = D2AAC07D0554694100DB518D; remoteInfo = JFFUtils; }; + 4C11F7E01827956900229A6B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4C7F8052182008BB009785AF /* JFFAsyncOperations.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4C1A0F8D182577BE0020FBF6; + remoteInfo = JFFAsyncOperationsMacOS; + }; 4C7F8058182008BB009785AF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 4C7F8052182008BB009785AF /* JFFAsyncOperations.xcodeproj */; @@ -163,7 +172,9 @@ 1B41AD51151CD1E000566B1B /* JFFUtils.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = JFFUtils.xcodeproj; path = ../../lib/JFFUtils/JFFUtils.xcodeproj; sourceTree = ""; }; 1BEC47F6156A26B80099DA6D /* libstdc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.dylib"; path = "usr/lib/libstdc++.dylib"; sourceTree = SDKROOT; }; 1BEE3D2515EFB43E0024D249 /* PerformSelectorTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PerformSelectorTest.m; sourceTree = ""; }; + 4C11F7DB1827956900229A6B /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 4C7F8052182008BB009785AF /* JFFAsyncOperations.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = JFFAsyncOperations.xcodeproj; path = ../../lib/JFFAsyncOperations/JFFAsyncOperations.xcodeproj; sourceTree = ""; }; + 4CDB8DC6182BBB5200C5BFA3 /* JFFAsyncOperationHelpersTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOperationHelpersTest.m; sourceTree = ""; }; CE1BC2DA161B2E81007DEC95 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -172,6 +183,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4C11F7DC1827956900229A6B /* QuartzCore.framework in Frameworks */, 4C7F8060182008CC009785AF /* libJFFAsyncOperations.a in Frameworks */, 1BEC47F7156A26B80099DA6D /* libstdc++.dylib in Frameworks */, 1B0E89441563FA7900825E3C /* libc++.dylib in Frameworks */, @@ -218,6 +230,7 @@ 1B41ACF8151CCF7100566B1B /* Frameworks */ = { isa = PBXGroup; children = ( + 4C11F7DB1827956900229A6B /* QuartzCore.framework */, 1B0E89431563FA7900825E3C /* libc++.dylib */, 1BEC47F6156A26B80099DA6D /* libstdc++.dylib */, 1B41AD19151CCF9300566B1B /* GHUnitIOS.framework */, @@ -234,6 +247,7 @@ 1B41AD00151CCF7100566B1B /* Supporting Files */, 1B41AD1C151CD08100566B1B /* JFFSchedulerTest.m */, 1BEE3D2515EFB43E0024D249 /* PerformSelectorTest.m */, + 4CDB8DC6182BBB5200C5BFA3 /* JFFAsyncOperationHelpersTest.m */, ); path = JFFSchedulerTest; sourceTree = ""; @@ -289,6 +303,7 @@ 4C7F8059182008BB009785AF /* libJFFAsyncOperations.a */, 4C7F805B182008BB009785AF /* libJFFAsyncOperations-clang.a */, 4C7F805D182008BB009785AF /* JFFAsyncOperationsFW.framework */, + 4C11F7E11827956900229A6B /* libJFFAsyncOperationsMacOS.a */, ); name = Products; sourceTree = ""; @@ -424,6 +439,13 @@ remoteRef = 1B41AD61151CD1E000566B1B /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C11F7E11827956900229A6B /* libJFFAsyncOperationsMacOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libJFFAsyncOperationsMacOS.a; + remoteRef = 4C11F7E01827956900229A6B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 4C7F8059182008BB009785AF /* libJFFAsyncOperations.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -472,6 +494,7 @@ buildActionMask = 2147483647; files = ( 1B41AD06151CCF7100566B1B /* main.m in Sources */, + 4CDB8DC7182BBB5200C5BFA3 /* JFFAsyncOperationHelpersTest.m in Sources */, 1B41AD1D151CD08100566B1B /* JFFSchedulerTest.m in Sources */, 1BEE3D2615EFB43E0024D249 /* PerformSelectorTest.m in Sources */, ); diff --git a/test/JFFSchedulerTest/JFFSchedulerTest/JFFAsyncOperationHelpersTest.m b/test/JFFSchedulerTest/JFFSchedulerTest/JFFAsyncOperationHelpersTest.m new file mode 100644 index 0000000..3f29b1d --- /dev/null +++ b/test/JFFSchedulerTest/JFFSchedulerTest/JFFAsyncOperationHelpersTest.m @@ -0,0 +1,144 @@ + +#import +#import + +#import + +@interface JFFAsyncOperationHelpersTest : GHAsyncTestCase +@end + +@implementation JFFAsyncOperationHelpersTest + +- (void)setUp +{ + [JFFTimer enableInstancesCounting]; + [JFFAsyncOperationManager enableInstancesCounting]; +} + +- (void)testCancelFirstLoader +{ + NSUInteger initialInstanceCount1 = [JFFTimer instancesCount]; + NSUInteger initialInstanceCount2 = [JFFAsyncOperationManager instancesCount]; + + @autoreleasepool { + + JFFAsyncOperationManager *nativeLoaderManager = [JFFAsyncOperationManager new]; + + JFFContinueLoaderWithResult continueLoaderBuilder = ^JFFAsyncOperation(id result, NSError *error) { + + return nativeLoaderManager.loader; + }; + + JFFAsyncOperation loader = repeatAsyncOperationWithDelayLoader(nativeLoaderManager.loader, + continueLoaderBuilder, + 1000); + + loader(nil, nil, nil)(JFFAsyncOperationHandlerTaskCancel); + + GHAssertEquals((NSUInteger)1, nativeLoaderManager.loadingCount, nil); + } + + GHAssertEquals(initialInstanceCount1, [JFFTimer instancesCount], nil); + GHAssertEquals(initialInstanceCount2, [JFFAsyncOperationManager instancesCount], nil); +} + +- (void)testCancelTimerLoader +{ + NSUInteger initialInstanceCount1 = [JFFTimer instancesCount]; + NSUInteger initialInstanceCount2 = [JFFAsyncOperationManager instancesCount]; + + @autoreleasepool { + + JFFAsyncOperationManager *nativeLoaderManager = [JFFAsyncOperationManager new]; + JFFAsyncOperationManager *timerLoaderManager = [JFFAsyncOperationManager new]; + + __block BOOL thirdLoaderCreated = NO; + + JFFContinueLoaderWithResult continueLoaderBuilder = ^JFFAsyncOperation(id result, NSError *error) { + + thirdLoaderCreated = YES; + + return sequenceOfAsyncOperations(timerLoaderManager.loader, nativeLoaderManager.loader, nil); + }; + + JFFAsyncOperation loader = repeatAsyncOperationWithDelayLoader(nativeLoaderManager.loader, + continueLoaderBuilder, + 1000); + + JFFAsyncOperationHandler handler = loader(nil, nil, nil); + + nativeLoaderManager.loaderFinishBlock([NSNull new], nil); + + handler(JFFAsyncOperationHandlerTaskCancel); + + GHAssertTrue(thirdLoaderCreated, nil); + + GHAssertEquals((NSUInteger)1, nativeLoaderManager.loadingCount, nil); + GHAssertEquals((NSUInteger)1, timerLoaderManager .loadingCount, nil); + } + + GHAssertEquals(initialInstanceCount1, [JFFTimer instancesCount], nil); + GHAssertEquals(initialInstanceCount2, [JFFAsyncOperationManager instancesCount], nil); +} + +- (void)testCallThreeTimesNativeLoader +{ + NSUInteger initialInstanceCount1 = [JFFTimer instancesCount]; + NSUInteger initialInstanceCount2 = [JFFAsyncOperationManager instancesCount]; + + @autoreleasepool { + + JFFAsyncOperationManager *nativeLoaderManager = [JFFAsyncOperationManager new]; + nativeLoaderManager.finishAtLoading = YES; + + JFFContinueLoaderWithResult continueLoaderBuilder = ^JFFAsyncOperation(id result, NSError *error) { + + return result?nativeLoaderManager.loader:nil; + }; + + JFFAsyncOperation loader = repeatAsyncOperationWithDelayLoader(nativeLoaderManager.loader, + continueLoaderBuilder, + 3); + + JFFAsyncOperationHandler handler = loader(nil, nil, nil); + + handler(JFFAsyncOperationHandlerTaskCancel); + + GHAssertEquals((NSUInteger)4, nativeLoaderManager.loadingCount, nil); + } + + GHAssertEquals(initialInstanceCount1, [JFFTimer instancesCount], nil); + GHAssertEquals(initialInstanceCount2, [JFFAsyncOperationManager instancesCount], nil); +} + +- (void)testCallThreeTimesNativeLoaderOnError +{ + NSUInteger initialInstanceCount1 = [JFFTimer instancesCount]; + NSUInteger initialInstanceCount2 = [JFFAsyncOperationManager instancesCount]; + + @autoreleasepool { + + JFFAsyncOperationManager *nativeLoaderManager = [JFFAsyncOperationManager new]; + nativeLoaderManager.failAtLoading = YES; + + JFFContinueLoaderWithResult continueLoaderBuilder = ^JFFAsyncOperation(id result, NSError *error) { + + return error?nativeLoaderManager.loader:nil; + }; + + JFFAsyncOperation loader = repeatAsyncOperationWithDelayLoader(nativeLoaderManager.loader, + continueLoaderBuilder, + 3); + + JFFAsyncOperationHandler handler = loader(nil, nil, nil); + + handler(JFFAsyncOperationHandlerTaskCancel); + + GHAssertEquals((NSUInteger)4, nativeLoaderManager.loadingCount, nil); + } + + GHAssertEquals(initialInstanceCount1, [JFFTimer instancesCount], nil); + GHAssertEquals(initialInstanceCount2, [JFFAsyncOperationManager instancesCount], nil); +} + +@end diff --git a/test/JFFSchedulerTest/JFFSchedulerTest/JFFSchedulerTest.m b/test/JFFSchedulerTest/JFFSchedulerTest/JFFSchedulerTest.m index b12f6fe..30b14f2 100755 --- a/test/JFFSchedulerTest/JFFSchedulerTest/JFFSchedulerTest.m +++ b/test/JFFSchedulerTest/JFFSchedulerTest/JFFSchedulerTest.m @@ -14,26 +14,30 @@ - (void)setUp - (void)testCancelWhenDeallocedScheduler { - __block BOOL fired = NO; JFFTimer *sharedScheduler = [JFFTimer sharedByThreadTimer]; - const NSUInteger initialSchedulerInstancesCount_ = [JFFTimer instancesCount]; - __block NSTimeInterval timeDifference_ = 0; + const NSUInteger initialSchedulerInstancesCount = [JFFTimer instancesCount]; + + __block BOOL fired = NO; + __block NSTimeInterval timeDifference = 0; @autoreleasepool { + [[JFFTimer new] addBlock:^(JFFCancelScheduledBlock cancel) { + cancel(); fired = YES; - } duration: 0.1 ]; + } duration:0.1]; - NSDate* startDate_ = [ NSDate new ]; + NSDate *startDate = [NSDate new]; [sharedScheduler addBlock:^(JFFCancelScheduledBlock cancel) { - NSDate* finishDate_ = [ NSDate new ]; - timeDifference_ = [ finishDate_ timeIntervalSinceDate: startDate_ ]; + + NSDate *finishDate = [NSDate new]; + timeDifference = [finishDate timeIntervalSinceDate:startDate]; cancel(); [self notify:kGHUnitWaitStatusSuccess forSelector:_cmd]; - } duration: 0.2 ]; + } duration:0.2]; //GHAssertTrue( 0 != [JFFTimer instancesCount], @"OK"); } @@ -42,54 +46,60 @@ - (void)testCancelWhenDeallocedScheduler [self waitForStatus:kGHUnitWaitStatusSuccess timeout:1.]; GHAssertFalse(fired, @"OK" ); - GHAssertTrue(initialSchedulerInstancesCount_ == [JFFTimer instancesCount], @"OK"); - GHAssertTrue(timeDifference_ >= 0.2, @"OK" ); + GHAssertTrue(timeDifference >= 0.2, @"OK" ); + + GHAssertTrue(initialSchedulerInstancesCount == [JFFTimer instancesCount], @"OK"); } - (void)testCancelBlockReturned { - __block BOOL fired_ = NO; - JFFTimer *sharedScheduler_ = [JFFTimer sharedByThreadTimer]; - const NSUInteger initialSchedulerInstancesCount_ = [JFFTimer instancesCount]; - __block NSTimeInterval timeDifference_ = 0; + JFFTimer *sharedScheduler = [JFFTimer sharedByThreadTimer]; + const NSUInteger initialSchedulerInstancesCount = [JFFTimer instancesCount]; + + __block BOOL fired = NO; + __block NSTimeInterval timeDifference = 0; @autoreleasepool { - JFFCancelScheduledBlock mainCancel_ = [[JFFTimer new] addBlock:^(JFFCancelScheduledBlock cancel_) { - cancel_(); - fired_ = YES; - } duration: 0.2 ]; - [sharedScheduler_ addBlock: ^( JFFCancelScheduledBlock cancel_ ) { - mainCancel_(); - cancel_(); - } duration: 0.1 ]; + JFFCancelScheduledBlock mainCancel = [[JFFTimer new] addBlock:^(JFFCancelScheduledBlock cancel) { + cancel(); + fired = YES; + } duration:0.2]; - NSDate* startDate_ = [NSDate new]; + [sharedScheduler addBlock:^void(JFFCancelScheduledBlock cancel) { + mainCancel(); + cancel(); + } duration:0.1]; + + NSDate *startDate = [NSDate new]; - [sharedScheduler_ addBlock:^(JFFCancelScheduledBlock cancel_) { - NSDate* finishDate_ = [ NSDate new ]; - timeDifference_ = [ finishDate_ timeIntervalSinceDate: startDate_ ]; + [sharedScheduler addBlock:^(JFFCancelScheduledBlock cancel) { + + NSDate *finishDate = [NSDate new]; + timeDifference = [finishDate timeIntervalSinceDate:startDate]; - cancel_(); - [ self notify: kGHUnitWaitStatusSuccess forSelector: _cmd ]; - } duration: 0.3 ]; + cancel(); + [self notify:kGHUnitWaitStatusSuccess forSelector:_cmd]; + } duration:0.3]; //GHAssertTrue( 0 != [ JFFScheduler instancesCount ], @"OK" ); } - [ self prepare ]; - [ self waitForStatus: kGHUnitWaitStatusSuccess timeout: 1. ]; + [self prepare]; + [self waitForStatus:kGHUnitWaitStatusSuccess timeout:1.]; + + GHAssertFalse(fired, @"OK" ); + GHAssertTrue(timeDifference >= 0.3, @"OK" ); - GHAssertFalse( fired_, @"OK" ); - GHAssertTrue( initialSchedulerInstancesCount_ == [JFFTimer instancesCount], @"OK"); - GHAssertTrue( timeDifference_ >= 0.3, @"OK" ); + GHAssertTrue(initialSchedulerInstancesCount == [JFFTimer instancesCount], @"OK"); } - (void)testCancelAllScheduledOperations { - __block BOOL fired = NO; JFFTimer *sharedScheduler = [JFFTimer sharedByThreadTimer]; const NSUInteger initialSchedulerInstancesCount = [JFFTimer instancesCount]; + + __block BOOL fired = NO; __block NSTimeInterval timeDifference = 0; @autoreleasepool { @@ -99,12 +109,12 @@ - (void)testCancelAllScheduledOperations [timer addBlock:^(JFFCancelScheduledBlock cancel) { cancel(); fired = YES; - } duration:0.3 leeway:0.]; + } duration:0.6 leeway:0.]; [timer addBlock:^(JFFCancelScheduledBlock cancel) { cancel(); fired = YES; - } duration:0.3 leeway:0.]; + } duration:0.6 leeway:0.]; [sharedScheduler addBlock:^(JFFCancelScheduledBlock cancel) { [timer cancelAllScheduledOperations]; @@ -119,7 +129,7 @@ - (void)testCancelAllScheduledOperations cancel(); [self notify:kGHUnitWaitStatusSuccess forSelector:_cmd]; - } duration:0.3 leeway:0.]; + } duration:0.6 leeway:0.]; //GHAssertTrue( 0 != [ JFFScheduler instancesCount ], @"OK" ); } @@ -128,40 +138,46 @@ - (void)testCancelAllScheduledOperations [self waitForStatus:kGHUnitWaitStatusSuccess timeout:1.]; GHAssertFalse(fired, @"OK"); - GHAssertTrue(initialSchedulerInstancesCount == [JFFTimer instancesCount], @"OK"); GHAssertTrue(timeDifference >= 0.2, @"OK" ); + + GHAssertTrue(initialSchedulerInstancesCount == [JFFTimer instancesCount], @"OK"); } - (void)testNotmalScheduledOperationTwice { - JFFTimer *sharedScheduler_ = [JFFTimer sharedByThreadTimer]; - const NSUInteger initialSchedulerInstancesCount_ = [JFFTimer instancesCount]; - __block NSTimeInterval timeDifference_ = 0; + JFFTimer *sharedScheduler = [JFFTimer sharedByThreadTimer]; + + const NSUInteger initialSchedulerInstancesCount = [JFFTimer instancesCount]; + __block NSTimeInterval timeDifference = 0; @autoreleasepool { - NSDate* startDate_ = [ NSDate new ]; - __block BOOL fired_ = NO; - [ sharedScheduler_ addBlock: ^( JFFCancelScheduledBlock cancel_ ) { - if ( fired_ ) { - NSDate* finishDate_ = [ NSDate new ]; - timeDifference_ = [ finishDate_ timeIntervalSinceDate: startDate_ ]; + NSDate *startDate = [NSDate new]; + + __block BOOL fired = NO; + [sharedScheduler addBlock:^void(JFFCancelScheduledBlock cancel) { + + if (fired) { - cancel_(); - [ self notify: kGHUnitWaitStatusSuccess forSelector: _cmd ]; + NSDate *finishDate = [NSDate new]; + timeDifference = [finishDate timeIntervalSinceDate:startDate]; + + cancel(); + [self notify:kGHUnitWaitStatusSuccess forSelector:_cmd]; } - fired_ = YES; - } duration: 0.2 ]; + fired = YES; + } duration:0.2]; //GHAssertTrue( 0 != [ JFFScheduler instancesCount ], @"OK" ); } - [ self prepare ]; - [ self waitForStatus: kGHUnitWaitStatusSuccess timeout: 1. ]; + [self prepare]; + [self waitForStatus:kGHUnitWaitStatusSuccess timeout:1.]; + + GHAssertTrue(timeDifference >= 0.2, @"OK"); - GHAssertTrue(initialSchedulerInstancesCount_ == [JFFTimer instancesCount], @"OK"); - GHAssertTrue(timeDifference_ >= 0.2, @"OK"); + GHAssertTrue(initialSchedulerInstancesCount == [JFFTimer instancesCount], @"OK"); } @end diff --git a/test/JFFUITest/Classes/OpenApplicationAsyncOpTest.m b/test/JFFUITest/Classes/OpenApplicationAsyncOpTest.m index e5d54ee..aca77f4 100644 --- a/test/JFFUITest/Classes/OpenApplicationAsyncOpTest.m +++ b/test/JFFUITest/Classes/OpenApplicationAsyncOpTest.m @@ -21,7 +21,7 @@ @interface OpenApplicationAsyncOpTest : GHAsyncTestCase @implementation OpenApplicationAsyncOpTest --(void)__testActionWithTitle +- (void)__testActionWithTitle { __block NSURL *resultURL; diff --git a/test/JFFUtilsTest/JFFUtilsTest.xcodeproj/project.pbxproj b/test/JFFUtilsTest/JFFUtilsTest.xcodeproj/project.pbxproj index 01f21ff..693339c 100644 --- a/test/JFFUtilsTest/JFFUtilsTest.xcodeproj/project.pbxproj +++ b/test/JFFUtilsTest/JFFUtilsTest.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 1B0E89211563FA5200825E3C /* libc++.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B0E89201563FA5200825E3C /* libc++.dylib */; }; 1B2D8B6C154BF37C00360296 /* libJFFTestTools.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B2D8B69154BF36C00360296 /* libJFFTestTools.a */; }; + 4C11F80F182795F700229A6B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C11F80E182795F700229A6B /* QuartzCore.framework */; }; 534CDFDE14A8CAAC0068F4DF /* JMStringHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 534CDFDD14A8CAAC0068F4DF /* JMStringHolder.m */; }; 7E7225DE1588891400210CBE /* DevNullTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7225DD1588891400210CBE /* DevNullTest.m */; }; B69483EC1429C88400B8247E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B69483EB1429C88400B8247E /* UIKit.framework */; }; @@ -87,6 +88,7 @@ /* Begin PBXFileReference section */ 1B0E89201563FA5200825E3C /* libc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.dylib"; path = "usr/lib/libc++.dylib"; sourceTree = SDKROOT; }; 1B2D8B61154BF36C00360296 /* JFFTestTools.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = JFFTestTools.xcodeproj; path = ../../lib/JFFTestTools/JFFTestTools.xcodeproj; sourceTree = ""; }; + 4C11F80E182795F700229A6B /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 534CDFD914A8CA290068F4DF /* libstdc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.dylib"; path = "usr/lib/libstdc++.dylib"; sourceTree = SDKROOT; }; 534CDFDC14A8CAAC0068F4DF /* JMStringHolder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JMStringHolder.h; sourceTree = ""; }; 534CDFDD14A8CAAC0068F4DF /* JMStringHolder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JMStringHolder.m; sourceTree = ""; }; @@ -112,6 +114,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4C11F80F182795F700229A6B /* QuartzCore.framework in Frameworks */, CE57FBE11611FA0900124D90 /* libstdc++.dylib in Frameworks */, 1B0E89211563FA5200825E3C /* libc++.dylib in Frameworks */, 1B2D8B6C154BF37C00360296 /* libJFFTestTools.a in Frameworks */, @@ -174,6 +177,7 @@ B69483EA1429C88400B8247E /* Frameworks */ = { isa = PBXGroup; children = ( + 4C11F80E182795F700229A6B /* QuartzCore.framework */, 1B0E89201563FA5200825E3C /* libc++.dylib */, 534CDFD914A8CA290068F4DF /* libstdc++.dylib */, B69484021429D3D300B8247E /* GHUnitIOS.framework */, @@ -405,11 +409,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_ENABLE_OBJC_ARC = NO; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; GCC_OPTIMIZATION_LEVEL = 0; @@ -418,7 +420,6 @@ "$(inherited)", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; @@ -426,7 +427,7 @@ ../../lib/, ../../lib/JFFTestTools, ); - IPHONEOS_DEPLOYMENT_TARGET = 4.0; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; New_Setting = ""; OTHER_LDFLAGS = "-all_load"; SDKROOT = iphoneos; @@ -438,13 +439,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_ENABLE_OBJC_ARC = NO; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; COPY_PHASE_STRIP = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; - GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; @@ -452,7 +450,7 @@ ../../lib/, ../../lib/JFFTestTools, ); - IPHONEOS_DEPLOYMENT_TARGET = 4.0; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; New_Setting = ""; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; OTHER_LDFLAGS = "-all_load"; @@ -475,7 +473,6 @@ GCC_GENERATE_TEST_COVERAGE_FILES = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFUtilsTest/JFFUtilsTest-Prefix.pch"; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = "JFFUtilsTest/JFFUtilsTest-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 5.0; LIBRARY_SEARCH_PATHS = ( @@ -502,7 +499,6 @@ GCC_GENERATE_TEST_COVERAGE_FILES = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFUtilsTest/JFFUtilsTest-Prefix.pch"; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; INFOPLIST_FILE = "JFFUtilsTest/JFFUtilsTest-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 5.0; LIBRARY_SEARCH_PATHS = ( From 29aca113eae9c426b4c54cc99f287a79057b6618 Mon Sep 17 00:00:00 2001 From: volodg Date: Sun, 27 Apr 2014 20:18:36 +0300 Subject: [PATCH 2/3] test --- README.md | 180 ++++++++++ .../A/DeprecatedHeaders/FBAppLinkData.h | 8 +- .../Versions/A/DeprecatedHeaders/FBDialogs.h | 22 +- .../Versions/A/DeprecatedHeaders/FBError.h | 5 + .../FBFriendPickerViewController.h | 7 +- .../A/DeprecatedHeaders/FBLoginDialog.h | 2 +- .../A/DeprecatedHeaders/FBLoginView.h | 9 + .../Versions/A/DeprecatedHeaders/FBRequest.h | 3 + .../A/DeprecatedHeaders/FBRequestConnection.h | 5 +- .../Versions/A/DeprecatedHeaders/FBSettings.h | 24 +- .../A/DeprecatedHeaders/FacebookSDK.h | 2 +- .../Versions/A/FacebookSDK | Bin 8644076 -> 8732324 bytes .../Versions/A/Headers/FBAppLinkData.h | 8 +- .../Versions/A/Headers/FBDialogs.h | 22 +- .../Versions/A/Headers/FBError.h | 5 + .../A/Headers/FBFriendPickerViewController.h | 7 +- .../Versions/A/Headers/FBLoginView.h | 9 + .../Versions/A/Headers/FBRequest.h | 3 + .../Versions/A/Headers/FBRequestConnection.h | 5 +- .../Versions/A/Headers/FBSettings.h | 24 +- .../Versions/A/Headers/FacebookSDK.h | 2 +- .../project.pbxproj | 32 +- .../JFFPropertyExtractor.h | 1 - .../JFFPropertyExtractor.m | 17 +- .../NSObject+AsyncPropertyReader.m | 13 +- .../Categories/NSDictionary+AsyncMap.m | 3 +- .../NSObject+AutoCancelAsyncOperation.h | 12 + .../NSObject+AutoCancelAsyncOperation.m | 99 ++++++ .../JFFAsyncOperationContinuity.m | 15 +- .../JFFAsyncOperationHandlerTask.h | 2 +- .../JFFAsyncOperationHelpers.h | 4 +- .../JFFAsyncOperationHelpers.m | 15 +- lib/JFFAsyncOperations/JFFAsyncOperations.h | 4 +- .../project.pbxproj | 59 +--- .../JFFAsyncOperationLoadBalancer.m | 4 +- .../LoadBalancer/JFFLimitedLoadersQueue.m | 11 +- .../JFFCache.xcodeproj/project.pbxproj | 57 ++- lib/JFFCache/JFFCache/JFFCache.h | 1 - lib/JFFCache/JFFCache/JFFCacheDB.h | 4 - lib/JFFCache/JFFCache/JFFCaches.h | 12 +- lib/JFFCache/JFFCache/JFFCaches.m | 122 +++---- lib/JFFCache/JFFCache/JFFDBInfo.h | 8 +- lib/JFFCache/JFFCache/JFFDBInfo.m | 69 ++-- lib/JFFCache/JFFCache/JFFThumbnailStorage.m | 11 +- .../JFFContacts.xcodeproj/project.pbxproj | 9 +- .../JFFContacts/JFFAddressBookFactory.mm | 2 + .../JFFCoreLocation.xcodeproj/project.pbxproj | 10 +- .../JFFJsonTools.xcodeproj/project.pbxproj | 26 +- .../Details/NSObject+JFFJsonObjectValidator.m | 4 +- .../ContentEncodings/JNGzipErrorsLogger.m | 2 +- .../CookiesStorage/JFFLocalCookiesStorage.h | 2 + lib/JFFNetwork/Errors/JHttpError.h | 1 + lib/JFFNetwork/Errors/JHttpError.m | 5 + .../JFFNetwork.xcodeproj/project.pbxproj | 2 +- lib/JFFNetwork/JFFNetworkBlocksFunctions.m | 2 +- lib/JFFNetwork/JFFURLConnection.m | 51 +-- lib/JFFNetwork/JHttpFlagChecker.mm | 12 +- lib/JFFNetwork/JNNsUrlConnection.m | 31 +- .../JFFRestKit.xcodeproj/project.pbxproj | 27 +- lib/JFFRestKit/JFFRestKit/JFFRestKit.h | 4 +- .../Async/JFFAsyncOperationHelpers.m | 45 +-- lib/JFFScheduler/NSObject+Timer.m | 14 +- .../JFFSocial.xcodeproj/project.pbxproj | 26 +- .../AsyncAdapters/JFFAsyncFacebookLogin.m | 34 +- ...AsyncFacebookLoginWithPublishPermissions.m | 2 +- .../AsyncAdapters/JFFAsyncFacebookLogout.m | 6 +- .../JFFFacebookPublishAccessRequestAdapter.m | 2 +- .../JFFSocial/Facebook/JFFSocialFacebook.m | 1 - .../JFFSocial/Instagram/JFFSocialInstagram.m | 2 +- .../JFFSocial/Twitter/JFFSocialTwitter.h | 2 +- .../JFFSocial/Twitter/JFFSocialTwitter.m | 13 +- .../JFFStoreKit.xcodeproj/project.pbxproj | 10 +- .../asyncAdapters/asyncSKFinishTransaction.m | 2 +- .../asyncAdapters/asyncSKPaymentQueue.m | 2 +- .../asyncSKPendingTransactions.m | 26 +- .../asyncAdapters/asyncSKProductRequest.m | 1 - .../GHAsyncTestCase+MainThreadTests.h | 12 +- .../GHAsyncTestCase+MainThreadTests.m | 20 +- .../JFFTestTools/JFFAsyncOperationManager.h | 7 +- .../JFFTestTools/JFFAsyncOperationManager.m | 2 +- .../AlertView/Detail/JFFWaitAlertView.mm | 21 +- lib/JFFUI/JFFUI.h | 2 - lib/JFFUI/JFFUI.xcodeproj/project.pbxproj | 11 +- lib/JFFUI/JFFUI_Prefix.pch | 4 + lib/JFFUI/PhotoCamera/JFFPhotoCamera.m | 10 +- lib/JFFUI/StripeView/JFFPageSlider.m | 20 +- .../JFFUtils.xcodeproj/project.pbxproj | 14 +- .../DateDifferenceStringFromDateTest.h | 4 +- .../DateDifferenceStringFromDateTest.m | 10 +- lib/JFFUtils/JFFUtilsTest/DelegateProxyTest.h | 4 +- lib/JFFUtils/JFFUtilsTest/DelegateProxyTest.m | 16 +- lib/JFFUtils/JFFUtilsTest/EmptyStringTest.h | 4 +- lib/JFFUtils/JFFUtilsTest/EmptyStringTest.m | 10 +- .../JFFUtilsTest/JFFAssignProxyTest.h | 4 +- .../JFFUtilsTest/JFFAssignProxyTest.m | 4 +- .../JFFUtilsTest/JFFMeaningClassTest.h | 4 +- .../JFFUtilsTest/JFFMeaningClassTest.m | 54 +-- .../JFFUtilsTest/JFFMulticastDelegateTest.h | 4 +- .../JFFUtilsTest/JFFMulticastDelegateTest.m | 10 +- .../JFFUtilsTest/JFFMutableAssignArrayTest.h | 4 +- .../JFFUtilsTest/JFFMutableAssignArrayTest.m | 20 +- .../JFFMutableAssignDictionaryTest.h | 4 +- .../JFFMutableAssignDictionaryTest.m | 72 ++-- .../JFFMutableAssignKeyDictionaryTest.h | 7 +- .../JFFMutableAssignKeyDictionaryTest.m | 56 +-- .../JFFUtilsTest/JFFOnDeallocBlockOwnerTest.h | 4 +- .../JFFUtilsTest/JFFOnDeallocBlockOwnerTest.m | 12 +- .../JFFUtilsTest/JFFRuntimeAddiotionsTest.h | 4 +- .../JFFUtilsTest/JFFRuntimeAddiotionsTest.m | 14 +- .../JFFUtilsTest/JFFSimpleBlockHolderTest.h | 4 +- .../JFFUtilsTest/JFFSimpleBlockHolderTest.m | 12 +- .../JFFUtilsTest/JFFStringFormatTest.h | 4 +- .../JFFUtilsTest/JFFStringFormatTest.m | 4 +- .../JFFUtilsTest/JFFUtilsTest-Info.plist | 2 +- .../JFFUtilsTest/JFFUtilsTest-Prefix.pch | 6 +- .../JFFUtilsTest/JUArrayAdditionsTest.h | 4 +- .../JFFUtilsTest/JUArrayAdditionsTest.m | 10 +- .../JFFUtilsTest/JUMutableArrayTest.h | 4 +- .../JFFUtilsTest/JUMutableArrayTest.m | 52 +-- .../JFFUtilsTest/MethodObserverTest.h | 4 +- .../JFFUtilsTest/MethodObserverTest.m | 331 +++++++++--------- .../JFFUtilsTest/NSArray+ExpandArrayTest.h | 4 +- .../JFFUtilsTest/NSArray+ExpandArrayTest.m | 2 +- .../NSDictionary+BlocksAdditionsTest.h | 4 +- .../NSDictionary+BlocksAdditionsTest.m | 90 ++--- .../JFFUtilsTest/NSObject+OwnershipsTest.h | 4 +- .../JFFUtilsTest/NSObject+OwnershipsTest.m | 4 +- .../JFFUtilsTest/NSObjectInstancesCountTest.h | 4 +- .../JFFUtilsTest/NSObjectInstancesCountTest.m | 18 +- .../NSObjectRuntimeExtensionsTest.h | 4 +- .../NSObjectRuntimeExtensionsTest.m | 75 ++-- .../NSObject_IsEqualTwoObjectsTest.h | 4 +- .../NSObject_IsEqualTwoObjectsTest.m | 24 +- .../NumberOfCharacterFromStringTest.h | 4 +- .../NumberOfCharacterFromStringTest.m | 24 +- .../JFFUtilsTest/ObjcDynamicCastTest.h | 4 +- .../JFFUtilsTest/ObjcDynamicCastTest.mm | 20 +- .../JFFUtilsTest/StringFromTemplateString.h | 6 +- .../JFFUtilsTest/StringFromTemplateString.m | 12 +- lib/JFFUtils/JFFUtilsTest/TypeSignatureTest.h | 6 +- lib/JFFUtils/JFFUtilsTest/TypeSignatureTest.m | 14 +- lib/JFFUtils/JGCDAdditions.h | 14 +- lib/JFFUtils/JGCDAdditions.mm | 32 ++ lib/JFFUtils/JSignedRange.h | 12 + lib/JFFUtils/Logger/JFFLogger.h | 4 +- lib/JFFUtils/Logger/JFFLogger.m | 21 +- lib/JFFUtils/NSDate/NSDate+DateDifference.m | 23 +- .../JFFDelegateProxyClassMethods.m | 4 +- .../NSObject/NSObject+DelegateProxy.m | 4 +- scripts/simulator/CleanTestReports.sh | 2 +- scripts/simulator/CopyTestReports.sh | 2 +- .../JFFStoreKitTest.xcodeproj/project.pbxproj | 19 + 152 files changed, 1549 insertions(+), 1105 deletions(-) create mode 100644 README.md create mode 100644 lib/JFFAsyncOperations/Categories/NSObject+AutoCancelAsyncOperation.h create mode 100644 lib/JFFAsyncOperations/Categories/NSObject+AutoCancelAsyncOperation.m diff --git a/README.md b/README.md new file mode 100644 index 0000000..4e6837f --- /dev/null +++ b/README.md @@ -0,0 +1,180 @@ + +# iAsync - a better dispatch_async() +iAsync is ***a set of IOS libraries*** that aims to make asychronous programming easy for for **Objective-C** developers. +It uses **functional programming** ideas to solve **Callback Hell** problem. + +It has been designed as a more convenient dispatch_async() with task dependencies and functional programming values in mind. + + +``` +License : BSD +Supports iOS versions 4.0 and higher. Builds using IOS SDK ver. 5.0 +``` +# Contacts + +* google group : +* skype chat (mostly, russian speaking) : + + +## Callback Hell Problem +You are suffering from the callback hell if you have a lot of nested asynchronous calls in your project. For example : +![Callback Hell](https://github.com/EmbeddedSources/iAsync/raw/master/readme/1-Callback-Hell.png) + + +This makes your code hard error prone. It is hard to debug and maintain such codebase. +There is a nice [blogpost](http://tirania.org/blog/archive/2013/Aug-15.html) and a [webinar](http://blog.xamarin.com/csharp-async-on-ios-and-android/) by [Miguel de Icaza](https://github.com/migueldeicaza) . + +Let's compare iAsync and the traditional approach + + +## Weather application core task +This library aims to provide a more convenient task scheduler. Its main advantage is more elegant processing of operations with dependencies. + +Let's consider an example weather application core. In order to get the weather by address we should perform the following actions : + +1. Query location from the geocoding service +2. Parse latitude and longitude data +3. Query weather using latitude and longitude data +4. Parse weather info +5. Update UI + + +### Traditional approach with dispatch_async() and AFNetworking +```objective-c + +NSString* geolocationUrl = [ NSString stringWithFormat: @"http://maps.googleapis.com/maps/api/geocode/json?sensor=true&address=%@", @"Kiev"]; + +AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; +[manager GET:geolocationUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id jsonLocation) { + dispatch_async( myBackgroundQueue, ^{ + NSError* parseError; + + id parser = [ AWParserFactory jsonCoordinatesParser ]; + AWCoordinates* coordinates = [ parser parseData: jsonLocation + error: &parseError ]; + if ( !coordinates ) + { + [ self handleError: parseError ]; + } + + NSString* weatherUrl = [ NSString stringWithFormat: @"http://api.openweathermap.org/data/2.5/weather?lat=%1.2f&lon=%1.2f", coordinates.latitude, coordinates.longitude ]; + + + [manager GET:weatherUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id jsonWeather) { + dispatch_async( myBackgroundQueue, ^{ + NSError* parseError; + id parser = [ AWParserFactory jsonWeatherParser ]; + AWWeatherInfo* weather = [ parser parseData: weatherJson + error: &parseError ]; + if ( !weather ) + { + [ self handleError: parseError ]; + } + + dispatch_async( dispatch_get_main_queue(), ^{ + [ self updateGuiWithWeatherInfo: weather ]; + }); + }); + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + [ self handleError: error ]; + }]; + }); +} failure:^(AFHTTPRequestOperation *operation, NSError *error) { + [ self handleError: error ]; +}]; +``` + +As you can see, this code has 4 levels of nested callbacks and is hard to maitain. Let's see how iAsync will help you dealing with this complexity. + + + +### iAsync approach +Using **iAsync** you can rewrite the code above in functional programming manner. In our example we use a waterfall flow that ensures execution order and passes results of the previous asynchronous function to the one being executed. + +![Waterfall flow](https://github.com/EmbeddedSources/iAsync/raw/master/readme/2-Waterfall.png) + + +So, the code above can be rewritten in a declarative manner : + +```objective-c ++(JFFAsyncOperation)asyncWeatherForAddress:( NSString* )userInput +{ + return bindSequenceOfAsyncOperationsArray + ( + [ self asyncLocationForAddress: userInput ], + @[ + [ self parseRawAddressBinder ], + [ self getWeatherBinder ], + [ self parseWeatherBinder ] + ] + ); +} +``` + +And it is as easy to use as built-in dispatch_async() routines : + +```objective-c +-(IBAction)getWeatherButtonTapped:(id)sender +{ + [ self.txtAddress resignFirstResponder ]; + + NSString* address = self.txtAddress.text; + if ( ![ self validateAddress: address ] ) + { + // Handle validation error and show alert + return; + } + + + JFFAsyncOperation loader = [ AWOperationsFactory asyncWeatherForAddress: address ]; + + + __weak ESViewController* weakSelf = self; + JFFCancelAsyncOperationHandler onCancel = ^void(BOOL isOperationKeepGoing) + { + [ weakSelf onWeatherInfoRequestCancelled ]; + }; + JFFDidFinishAsyncOperationHandler onLoaded = ^void(id result, NSError *error) + { + [ weakSelf onWeatherInfoLoaded: result + withError: error ]; + }; + JFFCancelAsyncOperation cancelLoad = loader( nil, onCancel, onLoaded ); + self->_cancelLoad = cancelLoad; + + self.activityIndicator.hidden = NO; + [ self.activityIndicator startAnimating ]; +} + +-(IBAction)cancelButtonTapped:(id)sender +{ + if ( nil != self->_cancelLoad ) + { + self->_cancelLoad( YES ); + } + + [ self.activityIndicator stopAnimating ]; + self.activityIndicator.hidden = YES; + self.resultView.hidden = YES; +} + +``` + + +Of course, we should implement download and parsing routines. Full source code of the [sample](https://github.com/dodikk/weather-iasync/blob/master/lib/iAsyncWeatherOperations/iAsyncWeatherOperations/AWOperationsFactory.mm) can be found at the repository below : + + +## iAsync flow control operators +iAsync has the following flow control for operations for your asynchronous blocks : + +* **sequence** - operations are executed one after another. +* **sequence of attempts** - operations are executed one after another until one of them succeeds +* **group** - operations are executed in parallel. A single callback is triggered when all of them are finished. +* **waterfall** - operations are executed one after another. Results of the previous operation are passed to the one under execution as input. + + +The library has many more features to explore. See the readme in the "lib" directory for details. + + +[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/EmbeddedSources/iasync/trend.png)](https://bitdeli.com/free "Bitdeli Badge") + diff --git a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBAppLinkData.h b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBAppLinkData.h index 9680634..dfdcd2e 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBAppLinkData.h +++ b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBAppLinkData.h @@ -31,7 +31,13 @@ @property (readonly) NSArray *actionIDs; /*! @abstract Reference breadcrumb provided during creation of story */ -@property (readonly) NSArray *ref; +@property (readonly) NSString *ref; + +/*! @abstract User Agent string set by the referer */ +@property (readonly) NSString *userAgent; + +/*! @abstract Referer data is a JSON object set by the referer with referer-specific content */ +@property (readonly) NSDictionary *refererData; /*! @abstract Full set of query parameters for this app link */ @property (readonly) NSDictionary *originalQueryParameters; diff --git a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBDialogs.h b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBDialogs.h index d002e94..1d84796 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBDialogs.h +++ b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBDialogs.h @@ -201,7 +201,7 @@ NSError *error); /*! @abstract - Determines whether a call to presentFBShareDialogWithTarget: will successfully + Determines whether a call to presentShareDialogWithTarget: will successfully present a dialog in the Facebook application. This is useful for applications that need to modify the available UI controls depending on whether the dialog is available on the current platform. @@ -211,7 +211,7 @@ NSError *error); @return YES if the dialog would be presented, and NO if not @discussion A return value of YES here indicates that the corresponding - presentFBShareDialogWithParams method will return a non-nil FBAppCall for the same + presentShareDialogWithParams method will return a non-nil FBAppCall for the same params. And vice versa. */ + (BOOL)canPresentShareDialogWithParams:(FBShareDialogParams *)params; @@ -244,7 +244,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresetFBShareDialogWithParams method is also returning YES for the same params. + canPresentShareDialogWithParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithParams:(FBShareDialogParams *)params clientState:(NSDictionary *)clientState @@ -274,7 +274,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresetFBShareDialogWithParams method is also returning YES for the same params. + canPresentShareDialogWithParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithLink:(NSURL *)link handler:(FBDialogAppCallCompletionHandler)handler; @@ -305,7 +305,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresetFBShareDialogWithParams method is also returning YES for the same params. + canPresentShareDialogWithParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithLink:(NSURL *)link name:(NSString *)name @@ -347,7 +347,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresetFBShareDialogWithParams method is also returning YES for the same params. + canPresentShareDialogWithParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithLink:(NSURL *)link name:(NSString *)name @@ -359,7 +359,7 @@ NSError *error); /*! @abstract - Determines whether a call to presentFBShareDialogWithOpenGraphActionParams:clientState:handler: + Determines whether a call to presentShareDialogWithOpenGraphActionParams:clientState:handler: will successfully present a dialog in the Facebook application. This is useful for applications that need to modify the available UI controls depending on whether the dialog is available on the current platform. @@ -369,7 +369,7 @@ NSError *error); @return YES if the dialog would be presented, and NO if not @discussion A return value of YES here indicates that the corresponding - presentFBShareDialogWithOpenGraphActionParams method will return a non-nil FBAppCall for + presentShareDialogWithOpenGraphActionParams method will return a non-nil FBAppCall for the same params. And vice versa. */ + (BOOL)canPresentShareDialogWithOpenGraphActionParams:(FBOpenGraphActionShareDialogParams *)params; @@ -402,7 +402,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresentFBShareDialogWithOpenGraphActionParams method is also returning YES for the same params. + canPresentShareDialogWithOpenGraphActionParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithOpenGraphActionParams:(FBOpenGraphActionShareDialogParams *)params clientState:(NSDictionary *)clientState @@ -439,7 +439,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresentFBShareDialogWithOpenGraphActionParams method is also returning YES for the same params. + canPresentShareDialogWithOpenGraphActionParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithOpenGraphAction:(id)action actionType:(NSString *)actionType @@ -481,7 +481,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresentFBShareDialogWithOpenGraphActionParams method is also returning YES for the same params. + canPresentShareDialogWithOpenGraphActionParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithOpenGraphAction:(id)action actionType:(NSString *)actionType diff --git a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBError.h b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBError.h index c351428..70ef2a4 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBError.h +++ b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBError.h @@ -118,6 +118,11 @@ typedef enum FBErrorCode { The operation failed because the session is currently busy reconnecting. */ FBErrorSessionReconnectInProgess, + + /*! + Reserved for future use. + */ + FBErrorOperationDisallowedForRestrictedTreament, } FBErrorCode; /*! diff --git a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBFriendPickerViewController.h b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBFriendPickerViewController.h index c696353..6c8af5b 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBFriendPickerViewController.h +++ b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBFriendPickerViewController.h @@ -125,8 +125,13 @@ typedef enum { @abstract The list of friends that are currently selected in the veiw. The items in the array are objects. + + @discussion + You can set this this array to pre-select items in the picker. The objects in the array + must be complete id objects (i.e., fetched from a Graph query or from a + previous picker's selection, with id and appropriate name fields). */ -@property (nonatomic, retain, readonly) NSArray *selection; +@property (nonatomic, copy) NSArray *selection; /*! @abstract diff --git a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBLoginDialog.h b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBLoginDialog.h index cda7369..5f8f5b5 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBLoginDialog.h +++ b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBLoginDialog.h @@ -39,7 +39,7 @@ @protocol FBLoginDialogDelegate -- (void)fbDialogLogin:(NSString*)token expirationDate:(NSDate*)expirationDate; +- (void)fbDialogLogin:(NSString*)token expirationDate:(NSDate*)expirationDate params:(NSDictionary *)params; - (void)fbDialogNotLogin:(BOOL)cancelled; diff --git a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBLoginView.h b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBLoginView.h index 5a1c424..4f75e3a 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBLoginView.h +++ b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBLoginView.h @@ -69,6 +69,15 @@ */ @property (nonatomic, assign) FBSessionDefaultAudience defaultAudience; +/*! + @abstract + The login behavior for the active session if the user logs in via this view + + @discussion + The default value is FBSessionLoginBehaviorUseSystemAccountIfPresent. + */ +@property (nonatomic) FBSessionLoginBehavior loginBehavior; + /*! @abstract diff --git a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBRequest.h b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBRequest.h index a6ec08d..187bd7a 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBRequest.h +++ b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBRequest.h @@ -526,6 +526,9 @@ typedef NSUInteger FBRequestState __attribute__((deprecated)); @param graphPath The Graph API endpoint to use for the request, for example "me". @param graphObject An object or open graph action to post. + + @discussion This method is typically used for posting an open graph action. If you are only + posting an open graph object (without an action), consider using `requestForPostOpenGraphObject:` */ + (FBRequest *)requestForPostWithGraphPath:(NSString*)graphPath graphObject:(id)graphObject; diff --git a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBRequestConnection.h b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBRequestConnection.h index a8c2c9a..140267f 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBRequestConnection.h +++ b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBRequestConnection.h @@ -490,7 +490,10 @@ typedef void (^FBRequestHandler)(FBRequestConnection *connection, @param graphObject An object or open graph action to post. @param handler The handler block to call when the request completes with a success, error, or cancel action. - */ + + @discussion This method is typically used for posting an open graph action. If you are only + posting an open graph object (without an action), consider using `startForPostOpenGraphObject:completionHandler:` +*/ + (FBRequestConnection*)startForPostWithGraphPath:(NSString*)graphPath graphObject:(id)graphObject completionHandler:(FBRequestHandler)handler; diff --git a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBSettings.h b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBSettings.h index b38a3aa..a9fc57b 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBSettings.h +++ b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FBSettings.h @@ -63,13 +63,25 @@ typedef void (^FBInstallResponseDataHandler)(FBGraphObject *response, NSError *e in release builds. */ typedef enum : NSUInteger { - FBBetaFeaturesNone = 0, + FBBetaFeaturesNone = 0, #if defined(DEBUG) || defined(FB_BUILD_ONLY) - FBBetaFeaturesShareDialog = 1 << 0, - FBBetaFeaturesOpenGraphShareDialog = 1 << 1, + FBBetaFeaturesShareDialog = 1 << 0, + FBBetaFeaturesOpenGraphShareDialog = 1 << 1, #endif } FBBetaFeatures; +/*! + @typedef + @abstract Indicates if this app should be restricted + */ +typedef NS_ENUM(NSUInteger, FBRestrictedTreatment) { + /*! The default treatment indicating the app is not restricted. */ + FBRestrictedTreatmentNO = 0, + + /*! Indicates the app is restricted. */ + FBRestrictedTreatmentYES = 1 +}; + @interface FBSettings : NSObject /*! @@ -296,7 +308,7 @@ typedef enum : NSUInteger { /*! @method - + @abstract Gets whether data such as that generated through FBAppEvents and sent to Facebook should be restricted from being used for other than analytics and conversions. Defaults to NO. This value is stored on the device and persists across app launches. */ @@ -304,10 +316,10 @@ typedef enum : NSUInteger { /*! @method - + @abstract Sets whether data such as that generated through FBAppEvents and sent to Facebook should be restricted from being used for other than analytics and conversions. Defaults to NO. This value is stored on the device and persists across app launches. - + @param limitEventAndDataUsage The desired value. */ + (void)setLimitEventAndDataUsage:(BOOL)limitEventAndDataUsage; diff --git a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FacebookSDK.h b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FacebookSDK.h index 3fb4b5f..68425e9 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FacebookSDK.h +++ b/frameworks/FacebookSDK.framework/Versions/A/DeprecatedHeaders/FacebookSDK.h @@ -135,5 +135,5 @@ */ -#define FB_IOS_SDK_VERSION_STRING @"3.9.0" +#define FB_IOS_SDK_VERSION_STRING @"3.11.0" diff --git a/frameworks/FacebookSDK.framework/Versions/A/FacebookSDK b/frameworks/FacebookSDK.framework/Versions/A/FacebookSDK index ca2cc853696bb0c76546dbde21e2d9d41e5ec624..38ff422194dec1fbec42bea55388617fe7bdcdfc 100644 GIT binary patch delta 1899993 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

_og|Nn|QOOJRW_V-W(^n5TrNK!n%_EI& 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 z zc$-ojS5{D~@JqjvzB4&DQ#tSPdewiO0^PpCmS|J6v;U^}RZ(v3M#Jx^)pGO;eP)qTweo7*6c?g8Z7<`iUExM&y`VciJ@X7t* z_W{$LBo_B>lkjLA@{)D4ncVi^hPPF>F#X0TaL{ zv3O0j9G8Jv)GU3R+KW@XIHp!(n`0tCHnwyYt?DPay1MOjCQsNhG3VFwxlC{dJ=eTy z-$$V>d}cuW0TdOxV?N)$n+Jf!O4$e_~(xFgN5ZeYU zTTnk(@-p|uI(=`Zhrmbk(g$wTMoyL#q}oz3$rV~qTT;;bB0;7W94{%zzeo^E!9la2 zigjyhN+)2`%thYjm{>GjLa}!-pG+PHjfSmd!W@cHt87YVvD z%Q2^m53cxN-gvXHlg{C5*iaGI1$l3ELQFRSPN`;TUrN_~$NW*Qc^Hnl@G-)JTsFTv zpn4xY>xULl=XCQg21-dGHu7vN3?Ip%^FIMCKIE`xcwm3H*LSZLoGvMC!$h`8WCnX| z>5s@;dQ084R6WRSR_biJUXYD`fo*GTo7V9>Qm6* znxAbJ>MEE1!YYrcSHJtbNiBXj`(Hx?obI$u#_`b z;Z91Md^Hzpu=+x9ss{I52wtVZ{TG6L0cu~(D}n2&-qWfhsHVBTO}ZLf7u3r4I$;c! zqWLTmo9?ly zo1Fp=fMQ_QgJ+*S#l2ITT;?|kQ$N^DG0SVTofTq75)HN)5~%A%cK*7^PMEe++-PT< z_K^7t-PJ0Q7^2sLS=LmbAl&NEy_Yi(3iJl$MI|s)QWi%Ud!Rf5d=j$adbR(zfM|8q zz25Mg04!E5;aqJv$&dJ_OFSH#2y}T(m1ADCS(HK<&wFBSa3{6#UThF8KZQBj>!`377=crqH13~|MT34QiTfClVA6|ra zS-Sqm+jmkIPdcHCX%o-!FvuS~ST_kUTCAgZwOZB^Ce}0rO+w z_qyVb;(8DTuVVRXnz(V>*hFvXfwJ8+vr<)UnaA71?1BXx9GXf@`d}2}Nh?k@c?q1X z3O>}yKeQ#k2gyzI6E$sxH`zA^%o}-6IpHe2;(9D6&4Nuj!6+u+vvD~rU38+)ftIYj zF$S`x`KQhU87Ex624|Y_sEHY5uKfgdipP`}58GXw_nKMIhA?Wk*WCFzb13+V|9$3H zwvxSxK5Uxb*pLH2zL;3`OL#;c{#{ql-N033xF;aR-19xu>Yn28VQJqB+K(m{9<;WwW?jA||jjl-pHCYNdFq3o<=5>U7vzAw@vLbJEes2xWA7U2l z(Qq@C&6X@yXRDK}-DAs~-NtriJga^x@+SEXpg+Tn9-b!!r~B8TvW`h+bv_qx`q_Ob zAF6L>pD*J#Q>~&stPy^JwM5lL0=M;2CtLJPNOeeRlWSr`iht{=XlsYxKv zoj0Awil(H9*X_EPTqmC`_K)%=el_^I*_a{1hzOz<=q$)dV`l-OyvF;LS&^ z9cyVXO;k&Yz45+0(fAP!X;!bKrK08j!fXG8_B!8{w(6iXX3?*#Wky{Kmg4{|=ft8- zGHc9Dt94;mq~b9rSG+l|zghG>l~J?PaKwp2#R(6oUE$0w@8b6Ga2a`UtnnA zz$knnS>4gLS#-j!SeTf_uX4HO@12bo9_y1;O-EN0XZ7(^!e@ONmFi~F;=Z*+IF!+Z z+8Q^l_#%H9=M0Lvv zIRVYT!!nodKQZfK-vse^({$UQQGiS{!iEgih%U=oFSE0a%J!7`%h^=I2!JepY=Szz z%A4%^Hc>4*85E`7|1F@oiZAiD_AP;Vv+TdPrYb*#4q=vkWX;nf25LWwu=>UXJa4zp$O4~Dd9rrD4m zG?HmUKH-H7DmVCl7GkgJSnBO?V<9D_Z`jflAkFfc`E%eMXBOV4#c$cfQ)v>uuUBZv zdytf@TNez>HcREOAf+E@S=%smBCT1xI^Ouy)2?fIz_Rl34KM@Z6>NYb~-gdJTd&Q$G z_+jO+Pd!bsHdnBc0)|NS7`c3>(DlwPp&!&X$w zEWBSA+TJTtboRTwlv|)z{62d7|0qS?FFaY66ga`cicha%%)G-q#yn*H0Xdm?98+danlcL?IlTQ=%~uZ$$$ie{!<}nXX(gr)tgiKs{IlRaHvRzkNj5$ia}s)p z{!zaRc+4}6d|&YBrj2|acs3?~)E{EWk-r8;Uu0kk_;9W6mvie0JHHIPy?|@M!>;}@ zgGa#I3%C`0bDR7b(P#d;051TrXYdAidj`iY;(r9MXMRb~bELh74d4T98PZGMUO+mf zqQ!Lnx&ZM2>?Q64-fnOJczX>NfX}gIuphiV!`H#v?HvK%(x%Vt3HUiK{bQ5;bWwu8 zz}t^uK+=UCo~^)R%F;ikZ!LUMG9Dcv*ngO)b#snDlXiez{al2Y`fGzXq-8C}M+64z zixjEkZ$cx3M_`sJM|d$&b$!$u9n4KnMqtb*CRGoA)SKf}pYMzhRS^kM!7cBYGh^C} z+o#MNF=ft_+f+9rx3y}P?2Av~Kp4z%&{xJmE`~wh3$*8|is?b^RM%lQM5sxZc5k6J zC;N;DttVrJv^rws##fIhnbfs~kI$-7v2yQ%&=28qgy9Ga5mqB?M%a&V5aC^f4-rly zG;fa&`XXc@+<-6#;W>m45a{OL0mH8wLJk7&6g`OW2m)VOcm`oF!l4d0ULS%ufl!a& z>WE{E5P=YjzL>@zafC<*R*%mg%hl|u$&u>t%yhSpJ&sQt`D3qY1^P13?2YX~uL8|p z!@`s`M`3Wknfm-zIXg*j&`-MkorbhG$lq};0evTEcAz1kt3b2YG3`SbZS38sl+W=V z81^6v42)(TXx26jG`gk6Zv!2MjEOI&j^Kwtv&$3b9yRRJw9^hJ6?PipeL=GU0ulIF zwl(aGfDUdx;1*Cm7=XzDCp3b1A_^=O*fbl)oq2eJet`{}0BkU@;tVx#WXtHQuS`O( zMVN|k3&On!B?wgrdl708>Jj)uuh8G~AUzp&W@eIt>xOj1Lx^j-s*P7h4pupDN2IA) z+r3GFqu*(0xJ)IRPWX_PHV+6~qIu6sIIM01IR=kr-LW_xjxXMAXqchaY!1|1hxZ#A zZc$U{X}b%;S@7BY+|M2b+xdfrh9_0#H*UD(f}HJ_z$wqs9KO7_sN}brwF(>o@&@f1 z8#Ee{`@#0b=4Zc9fEYDW@n!b(MjJ1 z*AE{?i;4*fz(M)$7(IVaT-`DzCvu<^o9|h0z9u){5nnbmv}P{&-YXoLgKA-W7@U0*71}N`=seiR!TzJBywxlwC;`KF z={F4xZTy9%&+n0w4Glfi>=(kl_{g5)M{v37>{sxePWzVR>;uu>KnSLPtIkX_VyLrK z3(nR@dAT9XcjVC4j=^E><*rLw^6<|`-^8E}%x~@3%&vrAMIJCb8fxS_gO3-zpAsCK z*$t`pBl`P?HvTa9{Rp&oKX7(o>XiZWEwBOe0ZbLeUclM^shAB6*FBAVJoq5dJKhRk zmlM5DF<@UuU`AVQcqOnh!52$B!yo$sdkfG;;sA-?!O53~UX+*@&E)4voFs8G)n5^SKXrxxWBDZE%?gZi8Tzt;ACW9}7I)hF?wIR)AE|b4kn>J(m%e619a{Gu42qcRhTECoEoXzUzRm?(xu0-r23A%3Oc-GK8mKvw!R z!NY(@*fMg0KWEeX3s;;h;7`72M=VxU9r=lV^gj zwPoBHymg3CL7$_oB#ee&r7eR9@Hw`Y2o$}4qngG$Tj+c6<+d7s3I1gq2CHQbg15#y z^D?!KcLARzdUTe&L+~4cTcd~gM8QYm z_*agVrlsIY5ez~CYg7>L1OB|tFgJ&14StElsF3tau+%+`K>SnSGew{H5y4*vZWV<1 zer^cG1Un(H3PQotlAr>(RS@EjfVT=lev0S~1Wwl#9)b~AfcF%G1^^dxkwluam^^@NJa8&JAHBMbH9*dO4O5IGh(MI{pF1 z5}%g1)`J$10#ctF$5Q?t@FW`!SL4bgIRw;uM)V#AKH3`pYXCj~z&f_%xybr1zNU%>nMP>CFts@n;iX2LWF^vuZR#66641ZNqzk_u2~DRrFc` zKQDcU6^ar(5cpDC`i8Kk1qt>32*df`I*k%IgTMlP4aIXdgU1CwBr!bpD`(jZKL@_b zroUbE%7Oo8!}&Gvu)`& zfu~D5e!9iWsE7Om3n0j_Dc&OnW&=;R;kS~v9g3U4r`q^&;BU3Hz?I-rZ1PLNPqWE; zARix_q&);xwwfe@Pqk$nCj|-uUf!jt2F<`*qlYbU7J>HO4?)JZ^xQFu_{+epshRrK zAvphAb2EX*p|Diea^yFFUli7q;R^6RTMZVAVSIbJ@!Y|5w}7`MH1haVabt2@vjB{u(`w6csGiIcSWFg zG?9W3-!1s|=6E03R*-V;WMb3929lM#M9w`!MuE46DfwKnlMOsVw;=YIpr9*&DqF%- zQN)+tD;?6*)H4Kc2*iXV*NDV_4)oXb8{pe*cD@k&UEsAg{nrHFjtxO8D{Tq3fVZYp z8h%t1v877oVVi-w1iudWHe32p;O#Ze6TL3L?fG;B&wTXxpBcr9q8ox5TSg6#@fiLb zfEKdhKY(9u%lJ#tdmFfQj-cJw!P_geMfBDJU*AQ}|6`lsX1EBJNPHy}Hb@4P=Ly~u zxV6F|-c|56z{{n8#G?cc1ispapNEVUI*oVOmnO6R81GELJzgj{48dw!#%~E;4Sbf( z&<^lc3ot#t>d<&sj6AnCpuN?=C)@1ZC-|Mfms;bW3HY@LCYS=jVq1do;H_gyz5b$? z1{_VOEAX=u&o%_-mM^sP3pP%9z$QQK^5b6sw_4E0gdd6EbqK7Q6W=fRcHmaciF50h z02y}V%SCS$@X5(d1u6v3ubkpnK|Oxop9Px+e5D`vX~7f`42NKZ%|IS_tBGk~5O{|z zf;jh%nI{>M-ynLcfafFwKnoCG4E`=#x;wF@Y2(~Yg<0UwNkPa@1OJnD00fls&TC4;vXvDEWI5V8e+#uG`aX_?>$!M^}L z!KVKSczXf%h~9SKV{Lkmfw#^bu;+6Wh~j7nMvLM|U;_jXv*B2gIr4D~(ZK_95I>1? zPjBJ*ZG7_l&H?2~!t*-^t?zq;cJB7Eqs;m+k`I{e!cLkgonQc%*Lv$j1S( z=no)9_jcTmm{q7mJQVRmh*_1*h;tFIL!5&c<07;_;!TKIwbh8T5tkv(K>P^ebi^AF zv#OJ+c_%gLRxI z@l1)QBZg7{_c>>$;j7n-hf3@ppK9ED-Yg%-UQ5Wlh_Q0gV~|%_e40y~W03fH^hDzI zh>4#@OuSC;_pgw@I1l`>aPNK ztCp)kK7p_u;b}Gh18+Ycy*#+h5MNWKm&akD=_v87&~%jGHbc~*ql6bcX*x=D7n+U| zc|y}sVw}+Q7Fj7Yy+yb!CezYe1cw)&gaAW#kt<-BG%usKkPgHpQagNwhcqVm>v1-E zOLREl*9uLqslSA#t4RVfryaVQTq!hNO%@1EPZJi9I>}y4Yq%2C3|&pm3C-s+=_nx! z!Dlv?lSTqQf?FbZE%1i~r;pZiLep34J)!wL7nkbVP7U-ENy82uxVV*B7Sfz+5ae{Y@Scn(ih~3r%;E8lmZK@`=!NH~Cp;x|@VxB+x$HO;UuWyNPeG zF!VRMUTFH8_((VNJ3kf*O~=Pl(l|utvd|XR)JZxEUei`*BBXgu4oJc$6NPRC`i#)6 zL7yXyLspI{ISw)D+)O;ILhK_$x1EV1pz995{6(DZJLRM?WcZsnX z95nA}Q~x|@+(y@Q0?rBhgzgXeOQ9!ZWBmUi%wh-(%=t{b0d!}f_ktcK^l{KP2z?Ip zBB5h@VEPj}8}wLEkC#D$pNk+K0&y44>Ih=@95Hm@G)wfu1O|yC=>y zLZ^a0Aap+H?}VNXx;4@>L4S=|GaQrBymk)9+d|I*{WodMf;Ct$=O=|JKI(^1fpME+$%vF8$H{KOaS9kanembcKc60Z1 zhKqJqZ~xZsSy}3UFCo5JR`(3bvsK1(>8+F}e?}}-mOa=ap7HFr2gNw?O%0XUs##X= z9@S+x<_>kL&Oe0*xq4))oPJU9_+X>+CTs-$Mdu*5s$Llx8EkEl-lvzUxwB1z+P7qU zusT+i>{VM&CbsP8-@rYyr?sbgCOrH6SXP#`se4xUo+|n9fY#WoampvRMydCvGOi-cZb1tm`Vzfio?7#Ge7`6> z+;fyeV|0{WMmcu1#{xi&9O&+5oP#J8qTe8*k#P~sOT?~~O*S?jS zwIwSq00S;X4W7_-P*6U{9#ZA1ksG7hu6_3LxS(qQtpId2p?*=dVAsRIaoE8;>Db-@ zXJP$08P5WY4Yt5MxC}9i4eG#2PyE{bTjE@cy$`;Z)OOuSXHwvDXvHb#by<;XSG}7a z#4~+8v^S_V^F!LD?e2sZ+K`sl)kksSMhiJcAnrW@&0%#7AY5qs$+%$P}q<=~sKiF-WF0`d(<4cV+2f|M&bbZMk=R262 zg4CGZo`uZ+EeEXb@$$_$mXG<&Kds+=^M3}TSX&6DP3*9~_7*DH-Y~mGi+QflN%>9> z3NjjKNdYHkqTF047XrKi)Gx9-n?hSbQ`o-Y(N-HWE;1Af6rbA1XCLtX|5MRHzQS+- z_~1^_eOL|9s(f(gD7tU)8!P?@U;Z2_W9rZCU>^X#lK<5jWd8)T%%b~=+P(^~R-^00 zAc~15!UTvWTBs!tH%Z1diY95%#wJmtBu`5=LxPX==mRd5PuGGiTF|sd5Q;^|f?{>x zSY({a`Q6pRSHf0cCD))+*edxshJnA5Rklh#=vQj2WEHf`BCZwfm4p)k&_~(JE-ckD zEvV1}f2qbwd8ca$o^&BelD#5VX~7d(kYX3~)B-L|<$yOfN&+OhiZOhL_F)bd`GChu z7;q@4ej(~x^cb^{Ya`nSJPvDc^M&9Z4Q{y*+@irJF9g?U5D$UHW=EaVVxao79(d}j z+q!Tc%hA-KCaYyTT14{gQ};E6%|wPWvwL?#;+;->&FNCJu!V?-#{dV~#Vic5q4ZGz z8eaVD%wxcHFvdS#W$7P2#W}inFH_J8vxoAGwpammrs`qg;;N8}8Vsg~( z3|F^DN44{D8(6cbt4QQqB>kBnAf=AmOqyj`6v`)MN{VjqA2xqKO2Dhf)Y%kG9UdP2 z!IAUmnRr`sFcJCs#1DYXvYu3vH~Kyy;w$Ux&l;Z~nPaz%{$5RmO?>8Nv$NT6T5qBu zrpvVHCOh|DWakcTr_F_S#`*2|?1nDC$k6>48S1DF#b0QMbJ0bgGHGBhvQ=#JMRvZT zyl5colth+2M}R2Y zu9G2tGYdqq+|T1<`xhzRDvHfSv7_+swb12p{-Q<(L`OT9sN~;0v1-Kb=7HEEfRJm5 zXe{(=1lcrt_%)6;Z>qS{;m0;K_m_NckiUS_n(KU`iqNKdqXEv#{@=L>74}v76g6R7 zwp&eKof{T=;mb>Xr_7l)|2DkfG*``jqFJ)KG$HDWxG{}yJvrvyH1BHv8-V&Prij|~ zgZj;=%m07gjOy!{deht+=ggQjZ^j+BI~r41?-Xi_BNLY9}o6q(0BslI1hX-=oMI;@_?=a zy%;NA9>lev`(dfuA5F%yc`7FO*}zGEgtG`cM+N9$G!Z)i@!_D^fruA?M#u1J!9g(W zT@;)Ly+#t`VBy0$5T6e^Uov|UGMB>vxUoZGmpxHZ#*MjE#5f&&V z7#G~^$`o9O&H(Q!EqD|(yE5?)K(oD(&Osl>RnU0~G1vE8>!*TNz;@ZNbkLO-VHv=l z1-9R&*PnhwyDkEAfb9qNwoNe`^g9<}y@7oT%wCvWU|js$)1rZN;dyTS6(Iz@I0m6R z!o&gicP+wrgjooS5FSLRKzIe=GlUjcGejbELFk3RpRT!|bg(-mVAaT9F4oBUhbB9x zrfiH!R7wAOQv-8OH8iYJ&dkVGf!j|vH2kG9FAHfExZ%KYd|kkx*4CCI}>Tj2}tI&}>Yk2E-l=tBm`B6SD zTkA)8=YEeL<<0%0esnp=^M14(WRyCw*A)}E7vunSWE-+L2J#xBk-nDbdT8Ik+F-|K z9y$CfzCd?-6M^_sHhdef2Lzu6oJXJfQ-O^TJj;f61J+9LGeM5c>_OB&g?{`A0_^(& zU$hBc0JzyN2%Ha`-H-|90J~oB92-6WSeoGH-Hy%uMW1)SzeQjL;EdFWzXq&I@B-i& zbmC(MO99Rl!Ei0`<5vRfC3rA!4l3%m0QM_p31;w7izfU7VEY7L1Dpes`lY}Y2|mGw zU*`kJhXgbf3js$r6TnZ$;S~HExXM^~E#|d@2-L5JhfAG*EL8Nw+_wY#JPaYhOS)%8oqA7|CB%T3<5jI0N3QnJ#LpDQ0Y=&s(QqjwhI2m$&hubPpE5Sp6 z@AljA>5@7xGV~9Ov4(XLe;SA<(KbUL3jQkaZMFiv2;Qn03$#=8wgR7NOJ5;)X&{b2 zGg=CTp*Dp@qHqiF^|lNqfS+#DyGHbeOFRhjsWy2Z@F^H!RttDVkFGkCsfYY4YB-UJ z;5WFuM2G?6XAoGx&w)>{;U5Y9CUCb6e-(U^WXSZJM2|i@RtpXRRxG&h9tf;sM8RAU zOapH90pjBY9}3)RDdOD(PXeAV1)-Zv4EQAJ%;dvFuc2AfyaC+j_zObT@J9%&34#eu z3jPsrp11I;ApXAKHNdUmNc<(ip8{?TJK~QE{t#Sla%}}HfnJI={;7DoD2{_-jwr6h zL^)dU!NB|5@P2})0`G0Z+X{~F^i;z4TNj*mf&~8qo-G*`?t_3g-q-@Q5TsiIV4n&8 z7VuOXzDw}Ofv4E;4dAUNXNL6Iq1~y#tqMJiGYUToNc>9RKC4C)z-LDbG9j>PM7*=$ zF~F@F5%&oGFC0*;8WH~!ff;-c+^P`q6M`QBE*0`sP_Rb?+aa)OMEo)ER*lFn5xv`q zOU)Tg7kmux1u|TTUnO{d;45u-Pr*Al;Y6HZGn6C(_*-0Hs0H{~n;u+lbPZ2ojWyk7 z_;X~+nm-5JYt!E@csX!ucvJka8j>Cr5+7<)T`sD#p*l7~-JTv5-Pao7RJ#^C5GOi=-=5swDCQuw99^Nu;?vxJ{6{AA(B3Xhz0`h4MYgzqhUhVZGvC;9mf+82Tu zM2Lc06cA~HDTqT=@|={Ipi!W>S{|iJMua40js#0BR?dnaK+gpj0Jk?CbHzk{DdJ%D z*Si6ue7PW*VUEQ8CGIV8w!~bGQ7>KMREfD@Lo;i~35@)JQ1Do)XvYcSbetg0H6C#~ zP7tT#1n`~#Cq+Qd2@2>r!32i|r{@H5E***QC9YOk!5v&@Yis z-T8wvqo!AZZv)fBd7bxvNc$4#sEV}h+nt3ZgzTNA38Aw90RklKn~*diBC>=OCB^PcZ#@$;U~7bW6^i$e5YTr}x^J|l<{Kc5e@ z5I>&{w5A{JI2X-7$0Z6rBp5D!J|Gw?em)$SD1JT|cuM?ycm16B`8;4Q{fP85Mvl$m zzXt!`#LwHVOXBCPR}5;B_AcJC_9Q@`ErZ`F{@w6DF8-77|4IDU;s1~LWAWlF235?k z+)cKN_{YLOM*M~Fzaain_}7VlC;Yqgi8KgY4e*sHF2a99`~i4#7K=l|1XAGVLsj}S z;U6jfaqv$Qe*ycf?--|8emjgTGGvHPJZ!2{?v~)EBQQ`TYp}4*2;!3H^QH zUnBmp@K=a`Cj9TAF@>TwuEP%Fu+|b0^LnR^_<4=fA2#H9u=24b(p*;b8cupgUT0OMJxzo?-awp!0_RikiQ|9utSF36J_k zFH?W@-OA9IR@^?!jLGfgf5prHcGcBxwpfe5@d#~gcwg*K*xeT9%SFl5>VD}lRkyp_ zc36J5f>Y+eyaW|CFwdUsdGz)_ui#WQ|5n=LmOziCn%K)`3w*$Q2&z77OpCnhIUV&) zM|wRLg~bniGaugErrsacBSOs`lozZn-A-$wW>v(5tANSb%`H9D#EoN{tCBvpYro6w zroOgBJ-4kqdHA1m`&@5j>1VT5ebCqToOh-{#s+yZZ5Z8^YZx>SWVPvQQ|XbYD@}?5 zRAz5mnA-kRbbt!#XA4!QbMs#J-i)TJy8LcvtWTHpbk(cBZB$Tfd-MnlK(X!Bro71R z5wF_~jDb%Zn~qhHtonX0ep|r@s1avIw^ZqwHiwOC7-qtzwx#iqDl;341}RHYYI*=P zyV0!E)sM}aCMnmRw)Utbv~n2NplPEuXa`~3Pk-a?SC)+VRqD_;kF-?BmL?}gr64dY z3fiJiL005odWQbSJ+20-R8XnyB*lB>(W**pw53J0!Vm;)F0?p9XeH1_snw%GIt5lh zg>Hwft3G=%+<4i(7t~%*H%Rrd&1{YAqDAjSWiWr~gZO}kd$*|E%rsx#*=T3e4Bhqn zxOq#^RulyTjaHMU`juOI2UP$wceQEy&Mko_frkLcsu2SMBJp-&{s>E(z!aEVLkg2r zMoUX_+o^+%om&^>YMKK>3(ne}x9}t2r(=Fbsmi{AEqyhZtE&ak`dj$W2QupQ{X0H@ zfrbTj-CI!c?zJ0|aPP-=+FXwm%O#c|BUmrn~CbafwrEmlc*ppmA>$Bs=1%}{ENJNsA1Z8yBWdoi@(K=1;%pd zOWwlV1b6Y9iJ;{b8P_j!znHS{y5;%Y^l!MI0`LFaOF|g*|6T(%6Lqeyf!Z1k#Dzsr zm%n&t1=MJU!8^U4i1XYgM)N?Fd&v$x&3Bk4*W~sp9=BOvzW5@thm^6h=F<$K?|l-F z6+#(+6^4wubt6Xo3tGtX_fI3p!WZLRTIeFSU-x1X?xI~r5WElMDv&k%V9RK~gh}Xw z2SeKqJOa1dwBAeW#b*(6<;p^CJI-ZTvBtW*C^I7YI6EZ_=K-zeSthLSH?f2%VnK9N z;o=&mYouOr0P$sfL(NLky#i)7m5g*kSU1*d_bt^6#N~WF1&W1kK(GJI_*jj2Fgnt5 zR$a}pML+Q~Iu%oUe)Yl^9Vlfp%YQ4SgQeUHQ3iqK=I78=EK0ONwh`_yg9E1J0BKktjA|6sdKH?MY zVvX}nq?pLm4Ov{I`{W10ZYBSTK<`=H(q;P$tbINN3qH?3%ucPZyj@cO z3oK@e<>RCDUj7i5FE5C4&&N_KntSzl%zt$+Kfp)>^_G11^2ey{VB98S%PUyujZvRt z;*03D+hc+Q7aoop|L9*sTNbIzve4GnuM>@>cK0OeOYM$)#Qk0~M(wX}#e*eHFcx5Q z91Bi1%dztN!f@S#y%N4d9dO7w>t6UXybJMpc4+p(ABDZ>Uid!3y4{E3)o1tF9P!yy zU>3%MSdsT{c+Z83mFoL4Q8gQk5w964Xt1rD@5c^|wXU_{X=>H>CVtjs4r596X%1sa z^+8bISr)blOWMt$!V`UB+UwJLin(GIM-=v)1Q@4(f(a36?xA7Wj0Ts`?)9x_ z>_@2dZ+L*VfBC>` zD+iv|t87UJhC#(Yh8Vey`C-TSM^uS_SoDbb1DWjVEOxNvo1y-Hx8CNkK$P5C04+KI zX=;!d4)j*cMyzr}!V;V44Pb8zy%D=!LDyJ#IKVtpF1$F`Eb}F3mJh68gRONhS&8x9 zUHoY*{`EbajAQT@%k{Y}F!0w64tW_|Lzi$D|BVc$%((}aLxeH3d*D_XODxEg zSrs*hb$hHph74^qQ*ph^j)jH8D~))t`xjvU zH6va$sBL;d&1!TH=sq@Z*7p5f8fT5q+)bmBmjY6U&DlTUk7jL5EgzTHeqT?qWam#+45o^bE#&y9-|4 zhylnmHES4yJipV;-ow)sE_rq?JUrJpS0&lih~YLzw*@#g={1HKS3b;&dkGmiPFFeB zpyMrk$;<59I8`ISb-i_g++syLbR9$&7daEcNl- zj&aLf{G6966{JTKFxJS|Gbv$LBdojlUK(N%dGw&yal>IAdN#4? zG&sRre#%?@qnkrYNJH9Wa?^ zCS0y9?Zkz!^h1ejAuL{}_rQAgz`5*!OZha^{Tk=F=qFb6o1MJCTeZ|HOIvj2UNU#O z%Sy(Dn*I~%J7Xw!M8>60Yt-c8PeK>*fu0L$ZZgHoG4temdqnWLn;2i+OPeDDX41VG zCwAP^tLjdi$$I*ujD#>fmD7U|r)PBaq5e+JuCehV7S7pW$Imhw0mh(H(7Bg#CXc5N zqXGO?XWQu2`W$uAAO1{!)e})__!yfl?m_9at6DOBPp4hAP`x z-7NwWmh_{D+;U!-+Z|0t@;RTD?6+8%%40S){P*XEpm3w}o~dqt6#oPt5th&4lq;K&*iI{agdVyVA(m?eClO05e!=k7l!&>zs#ZW(q6j4 z(=S`GUve^)d+9y8=B|nP{7S~XGz*V4$J$z2FNLaAk6Yqg3x8#!ce{}6%C)btCV1ny zc9r4tT%Z1#&BDz|d}elEVby=6Z-E!OXehgdM75MgxJ>tojnmT*uP3%g_1N4nWHUEt zWSyM_{csT{7LO<#?u89{{?>Y>>|n|tXVhb_lY#DqiW;8qa9Z)#BbeF2z3`7- zY%Sh*xZSUL#qd2C+;oI4{?|Zsr{#@C)>pdq^7B!RThB4NfY%1LcFci|m#XSaBBK;z93wg$t=!#pJX!V-t%HLe-uUW)g`6Cbg~^qCJ9I|E~U ziFdE!OJ_YvW6K)eH=yDs-n0KlOktKehyP*AD=mS(&!nJC(h(#WOeoV5QmyRr>Lze%WvUZ_1)3z z2Q6(MpE&LD$y2im3I;+z@38o4_veZlQQ6X!DYhb!aWSg|3D8cl&u!VQzk*TW;5ajF7m zj-1p(=~OO;!XmgkRALdXRrnfAr_dj7rXV7(-&|FBuO-qox{bkcqVt=G5M4n35$^!@ z_riyOkz0?RJ25hQ{L%ii-`QXIo&8l{nCU;-|CX#JYq)gt5aGz9cY@qk(59&a$sO(u zd_1FbW_oW_p?YnK?FD}Jt>M(8{mFp?(Mpd&U+$m&HvrkfK7;=^`1>TH|G~cmX+A0b zf5FdI^KbC~LXUX~yw)0@+M}-biOob*G8+K-cj4!Qt8n-+`PZdck_-iN!Pe6fit+Hb z1JA@Bz%gbkVPJkr`!M*v@PCG5!q$`ve*y~6=Fdoff}btu3HWc|Lf3+zICts}LgO0| zzVk4C>Xl-@5LNVcIzGI3BRq0#^`CsLH7P1&dT3|vV34lLiv8kM+2y7VzkUC_eftd+ zo)FXAFAEF)k5-lUG>P$_1@8!7HU4v-=)gk6`4(3ApP)V)XpIb92RIN*`s1SsN0`2) z!CT+ozMW?%tD(FMi0$aH!+~Ed;Bj?mUPxs4LLZ}1hau;kPT#)$gi4$fsBb&)DbOE` zZ3j5NAq5Ni&oDMHmQ(+RfeyfC=REOpmPmiV$ws{602g7}v1DQ{U4fH$J|nBiL(c9_TyMX8sfDKH;Hnugb~G`+7R za1|{K+kbf$ge2aBmc{~SFjGIkYXNa}*^#~Keuak^1 zq2|H|fG_?lNlTnhiX z7hVW_(93=f@I^2E^ODeT@LeUNj5iawIt6DTRtbq7AUJu(#17zC>Ce>LC87}UDP9o; z0H5^AfK}}3ut0pUm)%92idZwJzz2AEr2m;HJ`}kF1_jc3nebL%UrzvhNFa7=!Q<@j z$*@~^tlwXL%qv5DX266q!H@N_?@6BhzbzDIBV>Yn_Qn8s8suq&Qum%lNd7h! zia+9&AeX#n_|xD|dmZynh2IPQrtmICfF}o@)=9it3>SMvz-8_EjDQj2TXfIjz~m4;H(&;73b|pT>m+p9e5}82DU+cWtI3NE8iN;C+Z!fUD3k!1v$>dGRNO{~P#h zFa87Jw}a30;>(4{!XloUX1Z%4Q2$JTOWT|Mor)p}FcZAl-^ot{{#Hs#{D9a+f$u8` zHU$>~Z1#8J23*-Po%gYzylJ-`+`ITl%40~PR19Z`OcogfyL3t5G;YSYP7@=vf;Yzn z@;Bkg*JAy4b6g;QSokgAzm@K}9~Xo!e1+f{7)Y!U!vgTt(n!c-B>~U4Ks*8192bbk z0Gs0i@larMTp%6@Y>o@WT%jHrb@|0XVGayb1OZnVSNfZY@l|*E=P<@k$LFztyE!gU ze-^Q@#3#X<;{y55fz5G&_?X!318aMdIskPg`KX^}^%Hnx~tQpD+A0 z@aBL*ev0r9gEzZ1`O(5>gU^%kWj`1D?+wBnU})G?3{%0I0}OeG@ZsRiMoAtYy?F*4 z;_GlQ^}C3L-_8C{{*>?^ap8Eg|5I@ggxOk&Ull`41NB7k47dftV`X|z|0iDnZ1#WR zv0~R*2iGeh5D{dKbub47s@-1w1-BT$&Fn2HZ2z%KA+D<;o{ooN3Dk)xnD+YUbp z%LeA|hiogveSk}0YvL4Ov+Yoyz*VUjVUR@Fh~>-8Mnr?_z-A*N<}z8d|CGFRBl3R* zHczj_`^D~$;LTn{9-pIndJ*vo-UTwkA}Acvzp0oFY*r~TzCSI`l}1CHFX6_4kM|0P zFFVUKz3c{y9X}CeI-Q}9^|E*2o6_>FGNLi!7%{|4mhvbsLqFkvYl`cAFCL$mmY?tn ze;&Bn3*)0$&p5#NzXHB_r{?f11NZC9*n^;dKqjIgH_;by!a);b47Wx|1%-3C~uzsi8=F| z3Fm+}`#JecV6&SO8UCzUI8|%iWtkFdrD3`AJ{B8@$wo6HHHKl*+MEzjsw|eo} zz!i2i5B4r^zNOAHpT^gFec>slR`2=J-WIkjXI-xNszcD)uuu60(~+ht`b^shPp4D_ACfr$fqD7w5gC)D-uF$Eq)b%{wnd0 zZDUmIGvQ(CU_0Lc3zncEvFx*`Fy+X?w**Cw&~#oQ`8r@e7onN_97rbr93+#cWb(9Q zGPGmrv}5Wsbd^4D-nSGO4c@l|@(Pe zQw2K&#|jP;93U7%&rmGd0M5d`*MM1|T7Fg#r1q!VVz3Uezpon7Gb~u`{>(qPs-(!a z$P$JKd}qS=c{t`?75uell$x{vpJVhqW(`x{eij{!NrV)|DlIn{1`7WgeB4b#-OBpAA z-kfs1WyVv1c#a6qH(Ec6pKrEqiGMQ}M(K!)Mn=SUFO$U2cP}4`pYL8cUyC+;_c9cX zfqp(Adz*eFR?WnO=ex2W#m{$Ux5UqPHTtr;2+MahTztjFi1@Om9)Nzntl?M4{JL%~ zs)*lWhv1m}m1yt=aS9#~U*ja$p$o zZP{}1^GzAQHDo6EmT0H=`FigJ{irp5$if%r^!J4yo4@J)aqzDZetu}5C3|51dID#$L)cj|1VpM)Xc(6*F)hSrj zEOrDpyT>ccPE~o-7Go{+RgM0(Xti&tEm)QEujhe#g4Ng=QL!1n`Z6!f4e9_xgXwSK z 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

?S(z~O|DY_aU^~$rx`oI33a3cI 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%0AG)TpseNUzmRrg{ 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≀i@h@I^fwS`@Y%R7r($ST&8WV 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

~D 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

;hVTj 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%0Aclzb{ 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

6pnNz_UJhxrf`JgeRFzWr{cqe zIOoj|$~o*T_r<=Q3X!9KinB?RH!STPQ~01$@cW*9jsN{vgBN^#F1!aH+F$qk@;I+k zm3?oj^TD9JLMK@Hm6X(x`JQ>t4*Tw+g(C~2fsxMJ-_OfTExO+d9x8|i9&|pR`SpHI zYFuW|iBWCA{SR1m!N@4F;K31AR#-4H8oEE4QsMnYQQ3%g*@y=mZ|>rr&iTl^c<1JQ zd0o0h^Fs~1kk|mNY8xvXa8THo)YPana^z^<7fKQSeyaBDbAOzDTsUy zr)WOhQ$tV{5H^xC5nCbl)46r|jBI(<(N^M}5C7Qn;ht$Uy?O}D@N+F@@O#90C&oKG zRGH@pHZUiyv|H>YdxdQJI@k-bMGBEJvI-O_ zzBQmdK^B_4#od;*Agr_w5pT7WUoR*Tdz#qca}~sI-?3!U^{kRk|Ib!tJt<5uQ$_KG zcP~&TmxNgL?O|`7baLsf31V&p)qVI^zVMogY-P#wht{O3%D^956KgqYuineTbL}tZ z3qM~`X!P!4^jj@y$Yxhey-n5~*^~-XA0}&x8;h*OZb4BQaHc#m_HO4teZ#tkBFB=H zo-f>Yfw{z71A2N+3)Joz7g&$JGij)`&Y%fr2!4cY(;c!C$X4AUdl%V~J7fot&Am;Q zbgN}I!XkHbgz%K{ov~_I4(XFfOt0kRH z5PadyCZ;dE%I>1Eghl%9elOjdxF^_Q(X|{$Ott)&rjvHZthQ@ZMu(h4*sshNo^0(s zxv(cJ?OeMql{Q9lB-LvP!)5%`DFMh0o6Pnth^{ z1hga60(ZfFH@huZ531$BOeZ70f3MKA_7(fS@TS`$J!Mzrj1uP(;MoL%igy|?Dc;{jI$BjCUq>`-w%7tb_8xlFHZV@ zGkV2r8{iASe_Omi5%2Df`xyAb+nxUL{diXq^?}Ql(zx}=EzBPZ*cb)m;drojZ>i@#KU1xpkyWdt8J#H&*5AG1|Bitq2 zRoo3+8;&^*o>W{K?mk=|?ta`@91|}zS;Mo4tbJ?Iv)@}d&og`GvkOzcHQSS`(2Q>? zW6#c+^EU- zj?<1ef_XD;$IMW=Z6||$V9d1ZkKCdE0L=eU{b0|TI|$6Vx^3r!n_#cgklwe4llbi7 zcqeU5N@Buh-Zu1B6YDJadAHt9?R!09or)*M_H}lR%I@Z*@5;E#Ir+7`2c4ED#wO>u zA0JeR3MxzQEf4XABCKy0a{ALNPPOy-kCW{xYgM?o;_1R=5uO9k#Ti4m53e%1AY%#t zjymsd;Ww=OdxX`>B!7vp3J>(?b?+dYZy?tz znptJtitrf1+3iAiX6uJ{$n#1ft}t;4MS8r~^+ph?Bv| z@KpNk@TMUvg(oa~!eel_eq`?gJYB|KaV%y-cCIs@>)mg5o;nFQJ;fM&&k~u{(m*af zM===X2_L}8ASFGhSm;bc$zTOUHAt$p z;dx~9APUQ%@N}FEPO&^LQ^QnbOz~*v2?ubpmk&>^{s26tb9i#$3Co^vs4xG>AX7CA z@hrq%$Pzmcg*~_;coD|`4`ARByqmPVX2$=8Wl;Dk`YIYT6CfIHfE&>ZOD}v0Cp%~1 zZSTtc{~m_UBRmZefguW?gs_x|wHP`BK7n4CzdGUfa5BV{4de42@}Q<Rg+FSi`Zr(n+C6%>Dq=UL77cBjaFO^p4=f};R!gEIAHxE__Ii85d6`| zM!*;5uTD7M@&?1JB%LQoI69?6SiDelPKTLDz?o$7IrJA$9^OxM{4kG~s)QEGWi*)U!EPIylu^I@+wdjCtH=@~MpDH@ts-j}k6E(~Ow;hRGE6TlJHj`3%?pXB zDH!8WOo7;hkU^&%!XgS^z=`(}ya4jqx=oQW2(?34JYfw+iT5r%AM)qny@!lJsU5=N z32Sglye(dq>yJjU2I5YHn;{B|D7+p=BYCb0gIs@|^472t*;07I;t5xxSDOfSVLA?Y z5&CEw5uS=uf~D|A5Rb{t4U>_LXS&7?31mou5=$IoeP&A>EW>abhDRgI$FQ*Y!nu~m z42pyK*ok9__h4kqpx7ZSo^YDwCBZ8qeg^hZk#%9Z#tsQYlpxL$+jvnOhn)2x4Y9~t z`S30*o^Ue(mFOJ2ToPigdBY`SAHfsmuTJ{SU zlQ=ZSqnrW5?)h_wtKcCR2wa>v6xCW`YMYnEv~RQXmPp4WfqrOJkDaD#gxm~ zBU?(Z#EhdW0~wZ(W(i3a$6JhNGB^kyo#9ilW}3hQPS5oI{hdKqdM9}coQZSudfZD_ zXK4MbpKARid_L5FJiLdKF*Lc{S@eyuvyvIRjh)85!SAWqGW>4N3)yi!ItNT}!1S@b zz1{ZDn3wl=Z)ky{Gx({$pV@E_+8=FLlU*VrKO3ur&=i4@% zL0GQ_lJi#X`4=1JB}j8uC1;H~;7?Y;OO2<^hK~~N!Sz+-(}Z(vxRvlf*>EClX}Jya z!^!hY8x9aYYQu{N|BnsR?mT)k@6PpEf%EdC#{hi;>4IS?^!=lU4R0jO)NUi!caQrN z=3-TM=U29s>-)z98`igvui3D^dz9Po8NzdHxRLNe8@?F={6IiPX~wlStj`_CZ1@=A zt2V43vixK-eEpa`!llv>xp$gd@3rx9+!cJ>@?moF|3e4IHb` zy)@8<^(589ObMLB^>9Af6yMuvEE<^Tz3Hso*`s%#DKrTf=C7JSG@R^Q8{EJ5{-OnW z8@$eUPNpU8|AlYHqh9C2(Lk)bo8q45diLAje?H@sPXEA+BhI|<=XLKF9s4VYj`S6@ zj|&z$$vu0fIkn?vBsjajpLdtjO6%L(`N#M3{>2%7#+%kY zF0aS~*MaMe> zp1b?uo+IetnqeL%e^jfd73OGXZF6jXDs!{5kQ~TxHD>}eS7+_E;lmTgqpC)A!TJ2! zpoe>&2G#0$UPY9!sG5}pv9IMHdlnAfYbbotJV@N+%1qhn%h zBXOJsw}zxT6%}KrF4nQ&}V*sc-%l|_p-cqQ&=C8e!{GnB}% z>)w&m$2R>}=U0<59^5(Pbx(~rgRVRERe7mt^NcNJNJmVhko2RZQ0j5cRpkv1-DDtW zG#i2E8`c0)j0-Bgr#O&gfK5^HK5fd_SU`$dCdKnj@t=F+YsX$QY4+cFH))D>3TvL+ z3v6S*?J-%P6l|dUJ2M>Wk6cV~&%oj=kP5TYv*#Y?g%|QtL$58KlejK^XSWUAsa%z4 zJ0op-7kCE|pKX_yRj4-nkt@;tp(C|+q(?dRM_Rp0G-kv$&5Hwfnagw6&bXK3UiYlO z)v}!ZuE#C#XaK|O-N4BWb}M#|ImAE*a-;+qWUYWU%#LV!Id189t)412Q{Q;2WoA<> z)$r)6)x}<_-q(IM#gwM#X#+p5_eW;m-&vz=o&1qyW;Bk|De{%+L^j;tT;OKUAL){4 zik;{WubX2IH>rY?;46q6ncqvtm~^iUaJoQ}FLKljt9Wwb-%byDIO^nYf%}7Pfw;9_ z1at~YqSwiMF>lb&IQAL8I)Hf8(S&chduRV3&?VR>_|J1vf;w;{zr-`}R!i9V&Wm|N zLg%m5zj^z<)3;hq+kLB}=P#V-u-EjhmiO3eI(q)X+h*LyAFeI^j!Me*;pd;m=RhwV z=9R{|CJc~XbB8Fa;6`hQlWQ0)OfAtV8tp@ko382bAkIBF8QquO7ujrvX`;8Pj$zWq z;qywB*p~-?EM>FqX&r_S7hS8e=LuDyDe0gIa*UHdJkrG1ZtWrOz~6CpliR?iLeA_! zo@8_Gjwoq#&MiS6XMDX(@8FNTmZXgIEU65{1ht+1ai3cYm;Csgu$B^B97tKGNeA&k zO(4iJ+mi1#ES=_%6)K5cZ%z;)>CGmRdo)cdB^bc&=D9@bj&4NK^TrRl;3fPSo)xsz1EF*xWENcXPZ&0=HPVb+=kd z(dQbyFOq5QWB2Tzn#agirzFm;(a}HM$;4=wdj}-GuI&0E7tK>f++;XO!A_itayO@< zWWmZ<$mQw^FBIbsuNmNW1v(DM8}I9I98fCMeHqZWv3A||(7M$UcQy7^otky4#dB3B z3UvE?ka||^#eWx{69sApxLefgY{7m(E|tk}+O<9yiLr677nZ1F z(19?WetxUv%x8N_I@7@s!PN-$eXPrv^yEU;Ui}qevqH|NmJ??q?i8-nH zcX5Er%m2ZUINc2g2mJ?Ue}yZO+>S=klSpC(Cr0UHuxRI^TXPkiOGy%)3-z{%Thq< zJz{ZAf_vMIp|n@Mva>kg&g>cana+>6Xd3sV_KakI=8JqlFQ=55*Pz1(Gl|+{qiRY; z-_JBXqSt4-`L>(rnI^iPf{Adq85zA}j56?L@5u2{;g~7N;(Xy>86D@Z7`w|jtg3pT z`!pCCjNPCEK6I8=h?{7`?^@I9?^+kn**%AX3G1>;c+S;(Uw(|lKEmJMO4D_JF7+GitmY-YYYPIOzUbCecf!8Wr+9NvU2 zlac7vpX(I-U~G>eUpB0-ABr}tDTg$X;71(JG{Hpig%h2xuFf0Uujoo=dnB8bT`K4n zFPMCWkI!+|tq{2rVQRH50$AjJe=|#of$3IP>yyRfjRH zJjievCr3Tp;K^Nd@>BYli6x%Q`p4&A@P*S#{kDR1Lj^9^mc$ab)ikVV+)>2!MJ~CG zEfiT}uaB;dT3q&JO&ZHG*Wf)v`ts4$kIe1!efj7rg_(kEuWKy4)7%;@^ z6FJ;yl}D%A5S{zbz3qMBB-5eu0I{#S9q+>r^2NRPw)?QjJiTJgeb_1VawmHu#&RR> zCW(=zr=VAf9!wPI%I({impJ#~@c;AmHsDoM=Nk6x5Mqb{Lr6jh0g@0gAU|RAV?@Lx zgh&xEBGN!94VcpCL5!3`ks=!@rIaEkB4tuakx-;yDPhT~|L`rQ$ zjC7ZVlw$nuXXf1@?RR}&u50C;=Xsy?t~G0B*8J?5wRADJp`onw=KqhQ@)fVh=n=QP zfgNbD*4IBHFJ>Mo&fl$?(Q5K}4gY_g|HJ#E$LNgxI!3?4VYp~8hhdGvvd!IRYXA<)=B`D*S*= zM_aF{xD4H_dCDlv3-j%g2dL^c@4e9xo?6?k9B!jG>D5>3R~+CiQ>)m~WK|@(hqqi^ z#r#grtu5igP*Xx{X07`YFLQD|FX$$b#p{X0&!bHmI>UH7M9bAjKMUl2>G#7}%go>d z-dg&ViyPvdRhS&gpQeffuQiS;H}SKw*PN^p-ifU#yPbUPwMI+aU#=a{Eo)JkUn1R2 zXGg6c7*hHq*XA9noZ6PFd7rt5mygK|jBwvyKBj9ZE2+loGI*)cJ3h5;J(w*^(|$2u zI2DWa!Z9sTXRjxx;>D#-Ri~DKfs@(2w-7D=!xR;+BP`U59xigms+{cDbP1rZS zdgeFUx$i&swO;#P`sU2on2;V2{f?B`g$K)|DWvJ7?~$G*{fKmk)JW3kcAH>-AO%3x04tp*%?EckjgIt53-;k^PeT1Cw)S? zLei7_BvK}6BI(PdFzF!ae@K5K<#uIG2-0ZM*GWrB`nu((q!&rAl8%r*CS4(Q<{^*` z!J$Utj|XzQ-M{wk)1}?Yo(?Z+J)P0;Y>$w> z*4>+grh{IgdY`n!ed5`~t{sY~`vj5?I}PT6{oSM`1mWGcH8o@Ib-yyAYe)Cfnlax9 z!SPhqdq*yxM$)4>J!gH=mY-o+dr3F=U$cA!ehACorTB;~hgt5zcQBf!<_X$G-^WPv zXR4%)D84=IGaH_v!<>hx+bYvP^h1F5fay5iW%(t`tWS!xrIqto}a~d4qKkN{ePBWVZwz~fN%xL+mtGZIQ(J~X2@`7k_xhl21sXfk^S zBQ=J{K^7tuRzTqb1eM@S{3YNZeqs5A^GFJmg)WH#xa$q)!ZAGf4q@qp(@n>hUI!B4 zo6sf0B`|pU4iOTH(6Oh04EgO1oRYu~q1V`(BMccG9XLg}fh65~=ytL#j|LbF3+^;J zVZ{@E8-FbE_2c(BFe8BP5SCx~hz8GApjQ!I&tMxPJcNT`z;_5sD9mu+o^Crjwa`{t zgdxG5t>~gHCcGZMTIeYL4d5F5(H0Y4jlY?=6_m3MyfTD9gbEU|h%}7~%|mzvo*^T{ z3*hFW6P8Z+QPa(`3N=t*6&xdZw^m4aGX4@O#CWIPsNfUv3oDLB1rPDf>4EJu*|Zq; z0f<5b!V(CN#DAHB85A=-7F>W|SbpIw(ljcZgzggjDRgOYjO@KbSUO=w0rzy*8G^b2 z{sKBDiQ}Jo)3f(z)zF7_HW7?DGgryTc zX1c@Z7Q^o)9;3KAj0C=8aR%F8LJ|8-xEtYq1t8#FxSa?+j81sF={BOjZ& z&K<)#yU5&tEArW(%n z5AT6sNbemYRG=`!e|rTog7<;tv_vB*bGm3LK9h`tbSb>D& z@Sn!+;w;t&8-rh1e&H4d#m=Q-bg|wr8WONeXll-D-HgaSk)IxHo*buyn#lOt&B1O8BGb4#Dju zp0IS_kh9B#j4SR1-b99>G|d{CY71N~8HANVcpd)b1h_!JjbP4(JA~yIUPYQl1(%{* z3g3)wIUJuR?+}(wc)q7&@|-ycSJMLNyx3R`IUAv{gu)X&AuqwAJ57MqoPNi`6`~WC zPMGThui$)i>S)l1hr;zoCoG+Cp6RmC?GNE#4Z^vQnFymDjc~dN;}Nc;LJO#1C%9O2 z!U`zt;IAT1IdKxf8s}VCe&GhL8K==Ad|rN_5`GCfF29`9=t3eS6v4HhCuG}u!tDt6 z!|g&C)d_DlT@AXo$v=WkwH}V)$9D)To-o6Yd+`>dtB2=k2``0PfKHgdP@RZ*Cagku z0tch(hv&e}LMY5%o$w6PO-6SNoDjAJ#zd>nlc3QH)QMUpNZowlVamlT5hwz_pwYXnV#4(#RZPQ=>zr|n zIJ@Dtp^KhFgf;y5LGp19@P;4foUlWf_2;_*1dKE81)6Pv5_w^94xEMyj|LKExNtAf zL;^9?xHHWHDUNU%X%ZDG#p+~~Ck?hI`E>GGMZO%k4Dx|hK10Amq?j-f;ZB6L2$SIA z5eiEu%z54mcuiwm!*4^^!dn$h8spk@!e>a+DEKHkoqSX&ZyCks+kF zQt&n^qR-VX;ulsy!XJ?o=nT5m@Y~UygL?;^uyn%praNx-4fN`18@c`uABE(Fvex5M z_*E0`L8z|wBo*X#O0#aYcD=&eO}9}x0&>$4-U7!9ZLMcHVTKF$D!LM#`io2GR>Ljl z#kAHAM8r}PEu}=Hv*2_zp@}9eM5wb~G52Pra3cvAJqrpK;8(|^KqcUz_=Q!Va281g@*1gk?%?J! zoB_wHey!&YVO}})be9-Xx>CnKceUZmkRLIoG=vvW_#9~x0pG!@BiWBt0lUbkj^rBo z_Q1VJK4JdqgtwZGeah=c;%ULnaJA^7{fO{7PsjOx6+(3!JX8p;fn0%5SOJA+lOCer z@m>acH1wO<6pwP4F|f9ii(XiI;SBsbT55=w1?E%3)}u!_3BNAQ;u#||T^~2{nr-Xh zp^qcu5iG<`;qdB-b?^(T0O9LAFq=k&B4$5g2x(oy?bMwT+U{!;1`x(c=}EB|0-xA!dL=tr=W5iV-X5VC|rVnBN-Wd zDLfurh+kNK;gKZ8$ybHoXP_Gn*IyMfop2x0SI{M!K7o%_53ED5j0~M1sT|++us&@W->)7BK4O3GiY3!pbjvkTi`o+k;MB?tBH|+9g&=WWtFE)dL2(ftUg}7G1PQ6fQ8`Ky>Q31`;p` z*AHE^BNNUwT{=4T{Y<*rIxP8OUH@whG7%-2@ERXRE`*!$@K2gfH`8c^Yfd zfNnnga&&re`2sp&>4eXjPOo)Ke*%3q{*CDC;f|pXiBJX+dJ|egK4LpC2YwgASK;;` z6qZhSr|D|Z>FlUmvCVM2?b~{G6t2NvMZROi(L3j>@e3=C@KV0UJ&?yvw25&=S3oRA zAS{9KG$krDi9l+)9Jc)wINk$qJ!=Y&GhG2XwbXEQqu_?3i?*EbK-2X>r4bZlFvV;l8PrnK37iBMk3QOR!m*}n=6gl8)Esoz`7PiI-z!F2PPmaYjTJhN zPA#`F#4Q#dtU7#u+S+u&XAr2VG}Yrr;CJvxn@;#RNr4Wd)6T}k%i$w%ucC|Ye8O8y zw+@{yjm_a&yjyi~_^m^&l};`RpF7M5Rl3x1u94&i?T%vThxC!;sovHrCPCQ~z} z_73ZF&NT>x6+n0u{jRArsU_RY!eM%+FSDFW|(=xO1Ybfv;_=Qyg;WCn%Uf+tS#q!Ws zumS@)O%H_Qi_9Iu(hK)AT_<#*D+GFvz$uXN2!$mS=8H^k8;&JVBA5XgTeqQbGw+S7 z!1H__s7=yL3pK#Khc3E_g!N^nHo<1@jLv~i; zO|pcFoB|)jAKgU4`|)d=^LRFV47>+_bRQ7jMN&mqpqoydqr_PYx0J6jcZkp$i&(5c zocGVuA#DIJP$0Vw5T2)su;wSYG+Peli_IOv$}jvVeqGybWBQ>*;92;Eue??|Q*j}Ije zl)%qH_ck0KO70MrPWTnmg*MxQ20T+m7Lai~!V_fVqeo{R8HJTmc(&>J#>uOQW^U#q zM~CkhTPq^WcZ^;|_+HVgND?iY50}@bBH)mdWx_Osg%p&7Fau6QJPWH};T9IAQNfFR zyQZFO1=s%(xR3aDO_;wr;q&;_ag8O;W$;=2(T+^`6n-6^0hUv=CEu^A7xw_`k-WiW>VF-f1 zIuTTKuw2*1Ht?a;eXrd1Zon<8=^x*r9G60W+5PZjZr8vq?wgO?+%kI@jk<<%@7vgN}pYk(4I)Fahs znTAvErE6~SC2WC1wp_*X|Jm|#mUTxW&2E;tyYZH*xjyrT(~(1Wp!ISPRJXgjaTH$< zA4Afz2CL~|%NMZs*>Wr!kK1fdqX$KQ)G~1n6X);77xG-MBRa(y&vKr(%>D6Xz*KXr zV>voP?rD}kHGU_-`Vm-}Pq4humh}_KX)VK@qp-gjpHJ)apwZKhWLZxsmA8cD@7VHE zmM`jSc{%#C#j^>b<VD>K`c^`6Y*wybw#7TU7jk9pdb^==H0 z%)PvNFXlO0);lpjvE{Gpg_xfi(7P~UTh@CpuW6Y|=&Lav?t9C;!sC3Gec={bCRc%M zxq#)PF*m*({Ck__EO%zF9$mZ5Ww&7m_5RkhS>EmTSbtO3DO}ODy7SsB-`{5Wu{O)k zv{~NXX8CZNcb_I-KP$Z>Ho@G1NsKs%fI?sH}~?u zl63cj|4!ZM)(bT?n<6X*7M{oBbgg9mHy+U_xf8PoRQ%%EHS$JD;=^M6SF(;d-~WTOj1qhres zj}A9GJnAZlE(|7IMSX`JZqe|2ySp_f$J`VB9&}&JdjqE48AZ>oNp~m4mkxAy{v$nc z-|n=5U)*xT)pg&SeFknwjuP&S-}g-4x8lx$kKEQuZJM3dbzjGs10%g#sk4X6y6x-r z-GNyTwNjm4?vlQ5#+iXdqgp8qM7!@$`k?Iot<;_49j2xjTQ~Gk;&^&U+i%?<+n$ z=<{1|`2h@0scvN{HwubTB{?E$X_S9cFMFPPQ0=E8@~PK@P= z$%KG&yV|^GrG24ZcnD`IOzuWkC&0aOz&g^~Y zceC1q%xdH|;kBHH3O);XZx70TrnuN7jVGrCJ>!#o*z9-B?l$`evl{(fI-Y!a_ARr2 zHGjGJe`tKO;bgNKRbKh;G#kpKE3bb(M#H^$_Absf!WuSS_8zlun$@{T{5nnvwSSCp zW`Sj&GON+xgo5VGc z_`A(MYE~nLdwR3)dNvf}{LP5LoX#cC#OSgW*khl?=(P*a@_vYC^=eI4=XOr1S-tHd z{Ac{KOSoE=y~FGQvp?i4FaCA2shsJvLJ)s3Vv`AfV}Z6vfS=!aJ$sw^UE}XEt5@!% zyUXHao9-*d^CO7ozu9TzK)oX^TNdRle{IMdkC+`{wyW8xR)IaXMqi=3zPu>T`7>8svM-zc1f6h_`G=c* z%Iu3~Pnc~m8~P6maFf{~W*_9TFX@Fi=X+e(%Kp}Dt?~2CW*gtv@IMSsFdNL`O8iWm z^V4kKR&fa_e2;HKPB$YO2_VNA!%tg=Itvij%lG#)+s*ucH~)jiR~XN%k6ye#SlpM) z&NBVCJbft6dEPP}H+wCLO&GQctu~w6oBn}cnhsHb?BE>V{=@9g%zoEwd$Xs_zGwNS z3Wo@ASpolalkXxIWye4dcgUv(K8X zHoE{_NP@L2$lhv>_GV9*eaZZ1%)XJwS&dU#Y+v6#WwzgKKJI9Clj&YCe-rVP?_=Yq z_vQE(@jDX)&5pAGPnmtu>}j*@EkJ?UaHS%ze@ zE6q+de**<8;3C64%syzkdg5*8UVo+8>^ppX&G2r|atr>15kDHiRV(-Bm0DBr$Hc_9%`8S$FgZYKQrZeREn!@o4V#O!@$ z)6JeIpyFj%oC#+4TmDcX*N&?boi~eo`->uue-RzbvBDhF%?>x)-s}a_{eghWS7!KD zvoD$b(DW^%c{tL!qjQhh9cHtNeLit?$X_^V#E;D$H{s)EziRvy0xRIs5}u}y>F9i| z)VHI|#+v=#F+Tsg>AIQy%)SlDUo!hmv+K>iV)kRRw~Y1kg+|)KY_luPhRy!LY`_X0Wp;+yklA0DJ!bZg<7g=+ z&{=e!Z^xRw$@qtT9CE&GM9>6N4cD4oW&GWSFH?X5#~Z)X>~GEXG~H`vJC5g~^E;iK z!2P~`W1??YdN$O_nP9{%X8(7BFW6+Z+UyXs%@**0+3%ShYxX=9QGwei@Lbw0&i!T| zDD&}cW}C%_5Y(Gsk=cB+FPLzl*<-Q~-{O2^HthjkFYIc>`17nf-^^ zjB-EYP-}@g+a&iIKhLadcAwcln7wSa<5WM+aI;@C8~Uy-{M>B4*{fz#ruiAmt>9sX zFPc4K_7`TSntj6TIbO$&hRXsMEeWQTyv~5JIU;~&0qaBdcu1jgAKn};ro}Eoox12 zvmctBIg1YJZ=IdBAe|s0_nlSb@!y_K0=i@`_ zLtxqYkNCF1aHipLX5TRTW3!jcZmbIV8B;9a8~;HKYq~fUVA(pu*>ik6$MAH+MP|~HXI z?wH~{XZ8uR;~w|gLe5e{CzkiCe#_aReoMi4yagxnmg%>_%_5-uK%|30q8D>YA zWzaUK@TC;zR%6uMfm8Ux2G`q^|R?mh~d0ERBq?x_`O&@@SSD{ z8-K6a53o!56uaGjVnZxE!oumgRHw}B?Pfn&z;l7UsZNgBf4~d>&g`gf`M8VOgQlBo zc8BTK7+zs`CHk!QQk_}YkQUZ2gkU&;)F*vgZ?>dRsPK^0~ zZuXq2<7^h2KV^_|T= zWHxh&&;QkQZ!YHeSHTez{Lbt~v)?lNmKAW7HIRNLfet^H<`kR#CARrjtbo~!K(K3$n<}~Lqvm4Fc zX|@HO{I44hoirlw9exAq(bXw4+sEu*u;+$$b<&pm_DRDPhIbjh!|?R)a?v@ntMezY z?6=JhF+SPsFMPhzc?-f>+|_9@`z^D*R`~o_vvtP*4xGQftJCd!zJ1tmv)N+f*BP$( zp7Y!T$5Py+_s1rkHp1Uk6Y&FMF}Z@te?#pizht()D7 z=Je#3?#~>X;=Z=EXTthU({6JMU+9_aW{r!xeP7u()6d1Yzxv6XUhWrlJ#TeGrEw$N zfn)J}u^>Hr&`bH1w|9B&jwwX`M&C~E>-Tl;v~Tl)^zrT7ijMbpbO)vN>$tDS>*-gz zxc~L=m?Zbizz0=mm-hRX{yzN&DbHQ`X&3v6Z?HS}?{Vq-M!lP#eS?~KpgMiul1uqd zx1spe@8uqYBhjDu{NDlh4d_0&_y%>htXulNHNysfsZ(oosEPafmkj=A$5x6TI=k*0 zGimUPgIlS_U&iwb>GHw<*|S~#;QW0FPXvD6ZeRYk!FPP4RkGx^`ROsie0OQyxJ-9z z$6!Iii8$_p+ViScoO^OYV0h>9c0P__tLnF-m)rr@((~O<(;v9W-FxQVBzNRr(g(DG z`FR8SyO+`*i1)qMulGKf9?eB)?rwr-5l%isRV~t+ycK%1# z4EO#>pj!vtuXMg1;B^Z3*AI5hdG7fW-BK^19gBQ#f*(aM4<@_6jsylJ@QSY&={f`T zzWE<18oxHq-Mnp3R(oCscJ6iuZ|vK}&F_`kKXoCvkRW=|L{&-Y!rAM&>=y>5?#B}k zv(!A3@x-{t<9;nADI*C=tGbjHRk7FI!CCo35)MME%;kyhz!4cE5{?*No#^fg^~>p`m#Vts zFH7a(KE@r9mC@6!{O3)XfmnCu>YKZ|6|-+oxSd%52iKNrWFDs`jj?&+86WP5H!PNh ziSlQYY|spvkv;COvogBmE|@8?oE@sF$_g1JkP&5>4s!C$*SrCK3L^)L-P2uyxuIAx zO)k`!J2j;m$*2&eHyLN7&|{f7Z}dV9+1D#Olg_eS~*R|8K8{4UNon#M*HbhUvw#{dtsz;u!b`As@dFl_~r*M<=@Wu zv7g<<$Yk|xhMAhp5KV=VL;0#?VWhek+d8BYW1D@pY)r7eF!G}3*D7e3vGEMfdmHS2 z%T;3oI<=?eR@*4DX^b-(s+iiLDoBQ*-T+MP>no-XF4Z7nUtI0aI!@0IH4T&kbuWDmrwO_V-83nzX zrRw!yW7d?$F$Ay%MLf!!m0KD0%3=JkL>s6qk&!yHHI(OmFK{OsYn7K(>#BkAb~fJM z)UD{PrZ1jYSv;ZM5443qXLGXE0u15E$Yx&N1oBS&m%M8lXXg!pUGDg;#o&mWZ>LHQ zE0^b0#CF_i6ts|_DPH!%$dzPoXN%ExYUsR3J6<4#R+!e@-sw=4gL;-%WczwC*^Fez z9>Bz*G1wHb7Ry2eVvq)$l^(mzN{PUPH1(ilWjN&i98>+#>LJg-|JcpGEu(u!^=LGa_m}Vf^+MqOK)L%s&$KR~@dWC| z`=!k6JfU!--pa-<=k>Q{){J+`cL?)WCwz{iiob)d zKlvsS=M3B_bi&dJ>s4^+-axk<{wzAZ6L%2ZcD-jJp@{t^+-i1%1ztslO>pbm1QuRx zx@G8U3Cx;>SHdkuC#<-_3-RZHi5p%Do{wKx{-wO<;8c@T!wQ7CI9^3K8*Vy6VF`uD znr^7sKIpY+E}`!amxVsMsf07|YtztL;ao7Aq;*pXGrPrskhTrmFq{sNh#Fr=Uwl*TN3Rw%;MFiV0sNd7Hv?!_n!T^!heBVctjgHwC&R@|Q9(SL@6@A{3Be zeHc5{FK{}6_JWzDr?o)gZ5C*q*%j!u=Bv@KhFgk0+7iNx@TcSF;BK9`N0|F8Ug1Yj zjX-P8Q6F9io**@lcEVim?pW$RF=9YhH+O7SQr{G|2Fc-~(0kkd7OpK5!Dzj=?Ynwgi?@H> z2gW3Hafg=lt#KC*%t$Os!;y!OlTU0GR#*iH>jWemZy4iYRjf0-aFYA`ff+ybzE{8>+eZyb+*gyI@le2B`2CVW?&Fo|yw2P18)X3Ik4bN7b>~`)OyvyC)m=)Vuo&M%g{vFAc6|{|iH&uHl%|?(T zg*Wb|p38qBEA<49G91l?ex8v(;3VQ^e=uNBhfMZxdTD2@o82#XSL%toST|sEv9Ej& zWv=_{n82XqOCx#Ho*?NZzU%sGcjCK&A)W8`?~n?O9{-HnGd4fiLBCn&A}?_V-yXcH z!$@EcTCYkl$9-#COt;hus#C~jUVX1OjHNUA8T9TGXFCi^-aLlA0d!)#U)bayx^ws4 z6ijV~*N&UZHlPulbw9+qAAY%aerL8=EKGm%Z2h6T>&}c|LK1uy{KyIJvsY((Q>5JF z=1=Ju@7C|>+N}d##hX6CzmY2d>kzG+;GXu`T`*}yL~U42^P=*Wh_ZcH#ZDv;(D1%snIoJ>OG zjE;12p9uzgyAxzUkhN$$BJ!OWOl zNp8!KU`|X;lAAL$I5aTU{qoS@T@PP({CZCG##?T?Qim>$j$91j_3jikPeKf3U9p-q zFao`N4tELdMsPRWFRMKM^yo;uw}OjGUT>)3M(oE2M@Qn^zYh&&Cv3EWPUX2-!-73y zmO5_XuwdHVk2;fD@9Z?Ft|mDc9hqY4vX~nUkn9aCtVs?uymY7f(UG3+bHjr7#TGXm ze8N3HESSU6v1&Jdc(8wBans^zf6ex!yM@DpnfNNI-3pchL*1u_2ZwdPG&8z#&otya zF*RkS?bd&Bb@wO5O)>79!-Iojs><9J^x3;B{79$TR7P84(I+?66gRD_=;l5iH=;*; z)hF@51vA}>JAysCPx7J{H;tdAHRxVj+*JH9OYN}kkM0PL>5}2C;#BYU?2D^CKVi$d zf4w8vB@pMfF9;4BzPrpX^=-R13vlOn6Z5%Tyja|{@&SB-;-*dW6kPK*bg1f5H9GQY zvRhpcOi7sS9RW)m(7DsofTZxzSfF2?EG5sz0WJyQL z8yy+peqIpFzWHoXj%!C0}vT>fSBEK5Yn-a$rhctmPLCQzi1#A+4-bl) z3Lo~mf_4G#N!1run;T+Eoqo>cUo9wvM7jQ8bxdvrA_kF71jV zE%T)LHb?S?(u&EQnUARD>S=~MFOFQSRulR=M9bBapA|>WR0p*8v~ov2E50joygIoJ z+3wj+jO@K1@hjEs+VCwrWh}O7!Mrt&R6pUqH!7GrXn%WeXKnvfN#Cl9vf{|>Cn&<( zn_765IG}29X>v}*)E1@;n>DpKGTt3@PcXIDh}OClHyv-?X63Q$hU!Y>DI{v<_TLP*h|I({6(mdSWf8&}yEsoUw8+QqA>A!L3 z;mZGwI}KOpbDd}ub=~aYkOl6u#lbGOtah|c&N_cj&2(QX4i4*hK3{V_$uT-I)ct#L z@XIlC3*CvMgZ;U1`}XMI9RY-+gZF1tdbyRiy?U|8Vy{Oij+`iPGfRT$x4oFHHTK)& z3X?z;M>b|DtWJ-5?%Hy-fh!Tm{Ypvj&MuSMh>u)~MI3a0RucSH%m#YrNf~Jw%d#AA z>Y4YMphjhWrI{ft>x&~RlH9T}!Tve@11il~|71yk+3mCi$6qRr^vRm$ZDS7VfV*i- zFfX>KsiE3EJ|;Mhr4J;NPW8qDlg-g@ZilyinNXUo-hJ}Khr zB2*eo?J&@D>p=ZUX|P93Q-yo5G+3FntHNKyK$V|k@h2QXj^CXWHSK!BExb3FM#&qh z-D&p*3rCOi+K}1yp71aC+H<+rp-TP02+At-`UveaTAzHF%T_C=m53!G$!^WqU`C%g|DxEBV*1Q@b#k^bcU>%w98Y%ZiJmpS%wOT?Cat~5#9B@Mq-w>H zEnVEWFLBmi+a*Sup2$ete(yx{lHPw5ET~X5+uiWBDb(beg{8L^BCb!ev z53?>Zds5Ru&rdUYdVhwdLT^(~y2xxyO|@QKiX+8#j$k@$uCZ9lzE_LAYAx{uf!^vL zG=0SIi{C$2)O5Y9pSO<`HO+azJ@KVrpS07SuBd6`B(EAVam=Z=yU2|n7aX2Ymai2q zYT7c%9Xl@AbNYLQego*&j~3?Q=}$zzQHq+j7x`ON7x5jm$FdI{`&d7CbYObE^1n4(PD`*H{X3@TrjtXn?3+#fmaz-bw2>n8-$X81oH1+vwG*^`~idp=j`_cI6O498!K-P*a^ z^y$?^nCSH<{yJ1Ov?~bY4L@DfRGy_AigauFV{D6AN$&g!!MocN&EiAI8+Ar*!cYWgD32J(gc&6J~@&rC>FsHS!=tWnwu(gg`GLc*0EcZJTgF|9= zI`0079N24^sdHkmfZsti%Hn z?U_&1YR?bo$JY*3pI${FSJ9%#d*6Ig zx2NqAI6UusWOG?MbIP6nrZ@2oleJ`*b*pNwnl)Lu<0)@f>*`gMWtG~l6xnLAwtAOl zPcp+0)8keBrkpAE+zDmD9-&DKV^zI)CO&(h*}EIo4a}2F%+jGMtu(9r^Q$MBmGh!a zhov9lbP#@i^$pky4`{{w)q0haKRJ_%B6Iz15P8+RRa{sytL)n)-RNUJXF^eS(}>># zG0osi4qW%+vf!Yjmq7 z@v(I$)bEr```?b8zERh%TeTC0l`7~j-Tire@_tx0bnCDWNX_CSV+bZ5B zPqAH1opO6T7#x)P3RF{mDhG=%Os7(Z+?fvsQ@^qKQyoKD^|2dbvfI@rmB&9D_|fNA z*MHje9CHm8GcjrwS-2!mt_rM;=Y0G*vvn%RP2`AelS8w0R<+ineO7!;Y;DX2TJKXQ zyC_ocX3xw>y=B&?KVfX9KwiiCn`nmVZeTJ8|9H38++B^(fOeUTZC?owtJRSix5>X$5Dw&(2~6cV23{f?M6kA7Ta9yU#on9MpTs zr5h`_@KSUI=Uob9@3R%0<9_f^aM+!3No`kX9OVw}4a3}gDQVFaDr(w0>&6O=9vfhV z&bt$)1P7J$Y+aS~=&IBPepFZEyQ1yKu)0d=gd0kWEVCyR=bC% z1XFH_eA0GpF1pztWp;1(`PKK_z?XxA`W|8K#pnh*^htDm_J49?efE5!5nwiY8?2ZO z#^z$Oub;cecE8lhGiTfa zEN9zT?`)fm>JalC#(0-+OmOGjnfMQ@QhB-J^Q*fqY8Ktj?3f+u^Q)xac2RxumWu&q z%5<_Wzy8IKYxn(OcE;Qe?!51f`;z^_b(o%94LL|R4qG3f=; zZqhN*Wm1R!%pFe}Mw&o+l=N-V)1?0*y-GSp`V;BzBxe9WD3SV-?jSu#`cKmLNIxRI zJb<6me#^qUq(75-4&+xU(g@N7(w9k9q;HXGNE=8yNqb28lJdVvZ<0PBeL}ir5HU!7 zN%}DHA=0CyMWpYMo+JH;w4Zd0^wuDLPCL)SHB$S0enlb;B8?!Gk*1QqMRG}Xq?bv* zBAq4uiS#$pKS`YjGa(e|cG56X5$Q{$nWTB75b67*TGI2RUy$~b4$AQx(%YnuNX?|w zAZtOon^aD!Agv;8B)vd7LHb|PbyEBger_P;lKPTLNRN`1lKzWSM|zp`JJMBBEWewi zlk!NzNPR}|uaq>E^f+lD=~>ct(r-x*-oaYj;U?S_vtr-ns^I=WNWY}e*504q4!IA^ zwrj;tg88wd6^Fq3p-q3%KmBk1?}77tx98st?%4*v^{+VOG(x1e5!}RYIr@D`)T{PkRNgW z{V%1M_a8>?8}($yq;?@~(Kjs9jA3k9TYi}3KiIPN_vrFm_%p_TljRR>c_GUYTmC-F z*KPR)mOJqKnf^|&+|8DC{A7*teoJT9!vXOA{>*Z;LfYR)8LxvSTCfh#vBvAbi}L>< zZ*&FP55K`D5?R~7a~n=&oVfd5f6cUZ3Zk{qTB!D_wQ8%1DfJ_%GSaDVSrt~sa+&*7 zb+BvkdG=QQ`li2B>hhnq+^@}YAJ@M9csKm*UR~UzCxWqF zCpnXnv>H0xH?sUXK!^OBEPs{VPeNMNm!;#0bj>cPA9>$M$I$8&@{B^EW z)IDhVLzdN{YFWQk>j)jr^6ywy*8v}Lo?-u_xAa7sDNY@vGJMRkj#?EklZI9wCjOC* zJSe2SN3;AC%j!bZ9=~Q;eV3Z=7q|HRm-OH5LQM2!EZ3#@9kTe}rNR#lSx{agP@m%! z%yP8BZ_Qx)SR=p8%L36x9?-+@_MarspIKJduS$H_(?11hIo!+d-L=L~XVHIAiRCQ+ zXSUxzsjLp69KZ9@mb;VX6^P_`mu2-+8(6+I*Y7ZY#`14(^?P1v2H)nNR4 zcq3fDHr!sgf5P>L)1P+YV{nP|>}|Q7a6RA#7TzdhGu)6nLc9*qhTIN0_TMtIvwCa) zO}fIxBz?R7Gm`$;Le5NYiGG{b8(GYeK$=|QlNHuY4#B6tibBsgj zhTI($;5pc4IjU{;IJc$Wj5N1kS;j~=|9szDL+^j_#pVFp>AnkJd_hKS#{$yG55D+< zx2T-h`)}}N@U`du-+UGPr4Rp=-_JhrbKaiWV|KIIwfz_qofd0mWZzo2(3*Y>iVneF zorqNkHc|s7OA4ENU` z{`7wAO!57kElIcg84~-_#ZY3-;iZ&ph@C{KASW{1JX_N+x3qUk0DUABt{U5$_>T(;cIL z3*gfTqD?9MHc4xG9NioOF(X^}B-~MS!YW93W1h36nN}3uOwU#erxsm}Rf{geszn#% zaWdJ?LMeorG!LsL&A_Ul1PW3UHd0VBTr34en^d@k;L=^X&2Q3mjBk4xuHm*DEh>D$ zbSKQdfmMsHzm2)fmb1o;85Q0Hxt5H=s=4qA0;>u4GVtwc@KXHICKXT{DbE8Q`tTN#ugo~;9HEO;D zZUH)BwT$pQ(@is5hE13L(Iypcxz%sdZ4?j(zIN-4CKYbtbnERC=+uIY@*BPk*MKhCqQVDnb+#PQ z@voXK=6t;$Qcb!Ot0vuoRgYrUCL zfP&{za7%C2q&HIv*cu97#IK8qcknlYKf*7pIKt;iit{4&7ue0cIsW%k!z40nh1@^} zVPz0rL%@v$h+~}lwcwTbh2zW0xhu| zZZW#(PA0t2baT*E5dR|O&4ZhbuHsHR{zc3(VHrXlzuUEq;Km`09?!z1__q>h5*3>W zF2paaiU|ivs#qU%)8YH0>kpTMPFOnO6#PeY{BK2&36X^0hzW!f5$H-t{&a9WeqjX= zZpvo1Ch#u&*RnbPXER%q`Gp%vs>oS%IttFCI}djnUG%63i8zix$M1Ux>cK}4M2~0T z!}wJ&Q=x~Cfe+%3Rz!F|Nd>)#PAibi`1ZTtwxNrzknk4Mtw*O#bTW+(7eU9o=NO@!8B} zAVNYBBTSfs)nS%ShU?rooMBk_o^Z(o7M5PP6aKN}AIKV~ffMix%P;JZ)H01(OjQ71 zj_yhpJ7E@66-dYaS0~~yNy1kUj>oYE;j3`F5eoBHC%lQIimgSbf_9>-gfw}(M3BZ;m~CMJ&iCAtH3?UppIlMfpg%}$q?;WgcI@WcwWhX`$^z< z{L$lExTTk0a8obNb`-4XCp7e6q!(v9>k)+;eO>6W^9WB6@EidfAkQKc=C4lp4E}{= zTtlFb!0+G}mS6Y;DZoRF!|3*s?;>%I!W~2>ES>Ncl3Jt&om${B@oIa8SQCWNCaFcV zoTL^h$Ermpl0hvni@=lM#-fk5i10}KYJqb0kwS0*{%DH`4TCxp=!5l+Cb7MMYxG;kdLXp0DIo)fhQGsAc-@+xtf;4byN z(IUd{kV2~28wht3@FM~qg*=2%*lRlQt0d_dxZOLMtR^5=#LkQ8O00>6x0!AYy3OQI zpvBh0twJZPc*4s}Hq#WAAcirS%*hK4kv>MWf1Of!W@Jn;ghLgAGn_AgryTs zH(e4sZQDvJngW-IPFOnOc+*|$;cwcb#EXGz3iY_LZAC;7Xj?8IP)iSLh(Ee*h0l?+ z#wXAvQjy^VIt6zWov;cN-fy~H=nCMMq1yxZB06E|ghQK6xB=mNBk2Kqabp0t4xzAw z!ZoH_Y<8XnW=#F?0=T(t0t;7~ZW_81#Hk`~1>9tG!iozHIb{g0aCp@cs2ss~1i}&s zb2sa)@d$K7srhAeg>b{s2}>uOXS#HB+LTF5CzA=6f-bsgg_BGdhpzvfA+{;P1jrbK z{VkyI^-RCu_cHy9Q|$xi;ZA4XxHuJl8-E`8N{FNR5>DV3R>g!5<3A?MZTS)KLHr)Z zepZG3M-KC8vN-5T1G)@!K?5K%P+iwqH3?^LVp7P7Pf!54`e18L@0xBIs)zWWwb;tnE4A^j{@O1k_wJ=_wD)a^b@qy zZYt0K_g;7U32QmwckpKse(UOmvH=tS3xdCC_+NvMJ8llIB;+z zw_4naEr6>+CoG+CCH{Ew)e>h8xB|bh{KC^nDsViySa|w_@Fcjg=!Dt-dCUe;f*^^@ z>w`S$pxK>51j6zQk02>fKDwP$pqdJ4evCYH!qN%n;!h;s8R85CXW6P8YRv*~KlT_-;$tMEp+wdjPU+o-t=*O+iQ!e$(E5Uzw8^ES?lbsvod3fP$vg6=eY8M@_g z3(*NnCp;g&R%m31$6$*gsu4ujP!u?E_fvz5Y z7rLHsDd>cy6Hdav{Z8+GA)F2lagDY^gajhuNGkAJx_?cmZQhd3;g){mnou}GlI{%l zQS4@{ntDC?*0Bk=zzlDIt0AAT;tQ`JDc=HgCki?9+X&*4Sj zNAU~uS0_B1q(IZqZG|sJ#}%S=?c;5B9zPea0%QH|)}AH66QP9mvd++ZA7if#qErmo)2=?-DV5!N93 zk5c|)+`oHG$9=xnblmlXx5I7fdZX!t*O3%>rP+n(rx(!E(SqD&IrGp9s{mo1oE+Fp z#d#1BUI4DbFD$=sCCR(~pMp?#K>Z0c9g-&-t#?GijFaV6uphep6tIGp83>n)PFMkj zldZsI6qo@{Y*V1{wKTs%Jn9L@fUj`>-&!LP4Qc)wzF~GRb_Z*`&hSzK9K3@^EL30x z91p8@2&)3Z3rsf`-7zXQiGt?AJ&I0PI^o%-D@Y4*|iVT8i{O_)W% zBLvt;z+AXYbixWKoMyUC=nlibh%Ol}0iCdP!aPUxHsKY<=hFqx37-Fjucy-Sq~5p! z6262$S3o@R2seWp@JH_hgx|wImWo$W@pItQ_=Q!F@J^EUm38P2QURVDhBv~kL?P|YA9Sw+DV|*=yt zr4wF)Kjm(EwmiCA@FM)e@(V8@sX}wm?PLXbd>^h(;rN@4P=tilh-R6v9H9=ELWIme z>`X!zJ$!^Gnyv($uJOvzjfES9PFV4TN0=@j-G2C`=!U}eL$_bg|0ERA$Ap;(buOqy zm<5-HFnVqfPBvXUx+CcJqSFWmG3bO9Pq>BGD73~`y7-Upj-YFXYwU94@m)y7MH8My z7;8<;qj={GLSY3IW2@XOg0^>9bf2}>t@7{B(3dI~%SeieUo9}#|qq>Alg zqLc$W$=F1oJ&@ZG3M-KCRuk3|uz`T3eYi7%TZc|qI^i1pr#V^*h_eyA8o#jo!qxb- z>GH@wA3O)YzbU!?7g0r0jVcgsrvlpMm2lG$3M-Isx#`N#>71~bfRo|Ip^Kg)giB2~ z(rnOd9{IKsZ$9yvVBN_Hkx_&S5RqoWP6)41z*!1NhD$&vES+!+{>|j$$Ek1}xFwl2 zvN*z*ll>Jso6M$w-;J&T?hHC%#Ssp@gP;~-4}$X$rw|BBAbcFZcD{>L#flgRD;c2Fugf4aj$N!7eWD4X>1l; z;X(u}$vBEYrQnhHg%wD6I7t;8h;BLjM07#8e&~dy6V5SR61v6kv(Tl%C8Ap#GNFig z1WUnH2vWeY2!s_#_M6BxO1I3N0?q%b1tfaC(+G^--PZI+;Mcm ziW?H~stNZXtj6&Q!dKvSArzKScnf~@V2p|q-VWY~Us!(OT9OK^K{tndZxe@~QfF3s;d;;7D|p@R@AN61W0% z!qN!`P1g_Ibt=pY4B>%reL9D@7qc}G(Gx)h8AlK(2b@75VFeOSBdNf6bkpI-qf3N~ zMJFtsa7&V}i_7`(K@i_YiEPBKxV?Iq*9OgcVTu6iEdiGP@Uj ze+uLUgYbU1-ROm-7v7G)nfzn>@}L5|6~D0j!kbBo7g~>SG8tbX&<4mFgu)UEuQnks zog65GKaOr0+(LB1(h1Ku-J|Hn!=FJn7p@YWuyn!|rkjFptginrBAf;}2_b|h6drHF zkqArRdDkOc3|D|on7=yVq4?D^?q*F3!2|I}drILx_;rJ`2!B6t4*uv3ProGEKOMnd z1ia4^&P0%cKv)F`$Klucd@cS?U(OOHawZvElt+B>hi}-TTSc}$rt+57;NsKkd>$P5+Yb+Y;wboke z-)lhu$y|Rk6p{SDYo9$ZddugtIQv=a*=xU^z4v*Uv%yCpgjO(u4`UzA(rLj6ZqtK5 zz%E!aDwy|r)HP!jM`_#T!Y9FfB)A&g65;Eb6I_nnCo3ObliDvkw=RSbS_uiBi-@C1 z`dFlo`9z$?4TpF#D%-`4A)a8#h~N>}ui|$Hen)|GunQKu;K7J2>mwiH{6ED!ExkS# zB^&(yMz9bCxA$h53_glI2FzP)zY#2U!Ogv`41Nkvt^=;YyMXQlywG)lVD_pC;~vn2UZDMA@gV28V)$CwPnIRl>_gUkz^qx;5|w3s3M$ z&07rbA~i61C^e045j?^4e`YTf3n0k(y9Y;0!Sf-6&S$|h5owANc$x4{!JCF|GCaYO zpx_Cbmk+On1a^{O5xOz(1Pf2_DC`-;^IgJ`2gL{oq7Z`MY(x^wfOwgR`*1V_odcd= z;R#N~?jYVB{A7ZYunQKu;8;Zb@IK*3N1TWIO`S9XMXA8Uq zK9pXFqL30S08i7z2@s>vAAmRs-8guHg(ujfc_ZP;<2qi!+&>y!F1*m=JHgqSHyB*yUCX?}P4-2ivg=7C(YJVy!B^6Kma? z*$uB1U2|;Ltr@{LV`+bB3pQd__hybjyo%u>#Lxpn!F7o6j>9`o=Zj|GIfd>hJi(H% z;KSIrl96-xkqtBtVizoS!Mm`_*x#1L;uE|hmh(R}8Hi#7A_=X67)i}6px3WOw;V@; z#gX8p*kumj_eA?wf)`^C%?W}RA>zji&mi7f{LDu;3!Y%{BY3h;6URVo#NiGZQqhfq zC|HPsM__NIB)rSN-wn>eE?De>hhc9Ae}Fw7JOsO7u?rrINQP43$(7F%(s7{kB|@|= zg^cZ@h}Xm@h<9*s1BWr_?C=DOL%|(AEr)k{GSHyE1FscbOHT$G%@ce{^UlB<&G}!- z4U3EDPQe3P=f5aUXyRdgJV1mjB9sx~5W2lY5G)xGyi@bG=;Lbmsn}P*mo3j%z!xlh z!4=pW$yh0EzY1KAy)ktEPZSH0cc`LS5bLR;az?6o=t?097Ds~F*;QR^&cl%xT!KAx zu_<^A@(zBo;Yo?@-1!)RZU{WV;z#gcNk^Xle}JQ5C>)ZIt~$Y~$U8WS*T+aANDU0a zVGO#Cn64TT+!n)ab>d&apB;P$yI@IBa7&Ek?}k3I$@@n>siILhyn^x^5kgfa_!NZ8 zIFQq=4txT;U~wq;81}2+IP9mvhp-D4yI}eB_&XF}Cp@Xak&m+&MOOn)*Qjs1D7He7 zD$K&sZg4e(P?ZW^g~;9T1suiUZ1~r4xDbc)(6L+ZZv;!if~R9YkH6XYn+u+bU9i{% zPe#N~Q4IJ0VyS_{)W8IkZis?~D0n1}WaYArgvNk#v4>VNg0r#9f@Kv6jRt374=rE> zXCji&Ab9fL5I?NjpMfq3o_dc+=6_KnK&Zn}Esj#baS#McMg&J8;;6ZYb-b>RS9;K^ zaU7My@2N$jBl2=*Q4pEy1QQRekzh)2;KgczFV1@F_m zZ5)3Ce*yesWH6tzWHGw=@C8f4g6CpCq3uh-v#|>nyWmpn)D-vsaZrw88iY{Q2`+&k zYrRR>7l9{Z7c340k3%Hmqu?DuzX)DFx?FgIg(rBJ<|V*8gnk1&2fE(y4u#HtQABHE zd$hGyJ4a2}(ebe$YpsSu!FRA9#8EAd3~&o}!IGfhi`Zqs;eFEBe>s}73VUb)BKQCz z8Q%r3R?dGroof%u9T01^Bf;A=aSg-@^o=A~iEb4 zK@^1$MX?J)H3{(X#Ql50HP{7IqjInpyI^r7I1iBo`J%1rJ4JNX zTy$CRLVZVY6e4}5y_?l%D&ZMXjK6_yU7f~&biJG9@FK)Y650px3c7Rf1WUq#&uHEu zcx%v~f_DtvL3o0NCwPapU%|cyye-VW$A@AyvWuKmK&+KYKd1(A%eg;z(0M$-8~tABbB(!qU(VynQcrx5{-cE?Hc`1Nk-qWN%zB2UB95y$x;d`mn8)!a9A!!LbB=Q9vVmhR$8{XDIj-QC#nI%L$+3!K z2FH~g9URwiOy&4fj!7KXa^&fh@iUIx9y8u#6pH1FLN;bl-_zd2k@`0_a^zrCa!lfd z)}GvFjpO)B;c0AW+zL+DogUXOpx!j3% zaNLPMsq$ZOlz5vtN|jf0l=#AvsuiC2=^;d^@=YJU_8-aLi;i*YljRkUx%z0%5FgL0 z_-KJ$el*3=W?UOgX9DxHG=-;-TfzMDPvPT_TA1HfD(uDgkCC^L8e|9Zdr}U45B-02 z_z2C}k2RF&r_o`bu);n$4`hX?3!=bu~X~i=ZYU{em4E&ybk9QzN5n<3CDADPyEO)Mjw$d zes*TE2Ge?eo9i>4*9LyQYs}SQe(7ucSckI-Z_?pB!oQU;wIrVhIjF<(X^@X~_;tc3 zbyz+L@<$zBM);x*%cns8uEMmxd9BnMgZtx3Kag;q4nInGoDRz;KPKz2eC}hqPXqbXhgXMZ5MCf*5-ZJPS)s%7 zJM}XmJ>h^3%g@ul!pSdu`FVPY4$IHd-_l|E9sD~wET0DXREK@?Bl#u`+ zW{UI~U%{{&@VqwcCHykyzC<`hn7vh0SZ>1o!)}FZ2oKj`nL}k_7ydEAqjmTMVfikG z=noS9QiqQa-lXGh{rXc}8R(qK&;NhjovQ3xW3*EGn>yT1c(sJ%YYh2}{z)A^P56}$ zpE;ZCve_1!zc`oN-#m6Mc{g8bpYwV0H+peNB~zICd)(ard2)aI%4qXw|Ne>Q)z6bN z>~BY#9c_;%nx{Tbj{We|$(+H_=5tGW#+$X*OU9UWvyfAr^^A0)^&cjjvYyf1v1{gHiz?Zdj;Ip2FE zv=M_jXy()XKYY2LGd`hHwe)}O{XhKKqs~!jovLlK6Z=Pw82Pmk=8T^vCYwL4@%Aud zpLULnS;Mq{kTS2TGPjkajEFBQu`u;%jNZba+sB;HKIritsO2xC)ZEsX@r^L3c5Y~I z%t#B<^}aVKoYJiKZE(bhcg8Mp)3tGf>|htO1j~=8)a+98kNZ4)iwVVkkd9KOr`c)ylc8F^@do!@0n#1zSvF<&?T{TGps$JBqD3%_J8dA?`4 z`d(e^BmFX$Ge%RW%Wqk(PCsfh{%WpkiF~}@);GBT#6|JXEYm@Dp@~tO<(ylR_30~OYF10a#upkIWjhsXe-xQhCesj7lExq?@!HC`6frRD++T`NqpXip^+i6eIH2q9vVUJmx3O?H_bYiJV0gbL{Jh z?44Pf5@Szrn5m^Hj?vBPBXdRm73y<@p)X~A8N9;xx{Lf5mDS^4(^q{_QGFI&KCph~ zc9H*BoLP>C%w3(Isguu@A5`(S70XA|J#ZfYb)|^QJ*U;FxSm<^^Kc}sol0rKD1}^_;=dP=E=^asQ$tr-{?no+A!D7NJ+Kt9Bb~Kk&^6NWC)`-AFizA+woF}R9MS9zdZV7FyZ#@ z_lo?J6|cyDAqRd~#v);lu!S;qC|kT0_|q5Y&*$3Z^SQF0T}yM3KiRfc<+31f4!ij2 zVgA3#&VKeg+2*vFDM^uq0X_?w`Mfi8^!d(R8T)x;SH{A?LH*sj-fCAy+0|fIbEL<} znpjsDs4OdLOnOO@F7mgfnU`m#B+s2P+!&08+Vbdq`FfC%(&8e&J6nB`UA04+ds&n5 z(<1*t^{Lmv#gdk6I55AtC}3A976yjs4~_QVL!&X?0er`QI)yQYTi)B#&A2Jf!S2Gq zg&F-+``F)=Z+=>PE{-CP=l2%|&Xh{-kS~Bzg3t$BdFJ??&oC(+eEpgV%@vg)qZ*SiY?mnWLjUT~(`4^K1~zu?S?pYI}55ru)} z6QvkM{xf#-=nKyD#F_duu<>=*FN5Bu2ns);*bKbj%(SN$n`N)2B-(oynl;eZ8>jG)-tK3``yyrJ93=DH9(B{=6Ks zw#1nbJ96w_bU!rm&AJk2>Y%~e&(;V0Txl!}j2dgkyy#3Fd`k6g>x-*w{D>uC>=2cL z)rd#X)MuMpXLDB74_Du3wHXgvww*^R-;bn}7nBbhJ2gmIz6@3qXM^fU7OxUKGdr^L ztQF2mbUW`$dnuaPVX+p0dC=7r%Y5S7DG$ZY%1%(dqA;*&=BBC6gi*!A(>wEPZQe4T zd=&Q{q%gDuuxX#*nAuxLUzp9>0T=;Em zYU^3)LN=;EoTREMXg5Nc?oc0=4bOBeG1(rYV@^tP{88h-TN5g~e-Yi=D)fMznp zYt!2dOr!48B%@&;pvvjaem;M~eWs|JKgN4Wsa2O3;yH#*n1Kcv2zJCNtN*gfwtPoE ziqFBzTyUd-;n06l#V+tS>(9T-SL9`|yx36a-#f#l>b}5#bdpS?X2vVdxDkFe$Xew) zMjGM6>M`=e*>F z3d^8XOdbZaHH_hyx}VxAHY-Y<>BI8wvqv}lj?J5ToGtVl_vzc~rCu`g%(_yiBin8b zx&9Ro47r!<=_SLh1x2BMcA4bF9jHq;9W$H>zT?C5{QuP#ovpxsB!?qABmJzthq0Iq zlO>sJH9!J&H(T$*Qs^Hy zR?Wrcdo!E^5{G0_rlcX4-xvL}C!BVl%pP{VQJkb%nqxMivCrfen>FaNw%Ir@?f9jAN z75cY6;OpY;LjRSteAQjPGeZ6hY|={Ri^R)^9ln z`|cQ4CYO)pXe)QuwHh_D-kRw7tTnEtBbbM;^ERv?Mcx$^|4}FTbm@SN?fZ_l#dl>d(wK6-MHI5aCj}-+&#;gHF=aa zOGYw16R|foAMqyrjv=*7Ego^3*vDFg75eu$?R+?$L?UD%nB;W_+P@#Kw)T0$ZET`m zn+yGSY-Z-G&h#l$x!q%BSt_L?c%XSXna)vdSLn}Eg|trkVvm*K9kK-UZ&5kANc9>I zf7Y5>A-jfm1UD$#3d5{<)tL}8S8+%y-8}lLGh=>HXO(pXz2sqZ7%pv=%F0qPa#W+q zE)P?hi}|X)>^DRC!r0?jtTJXQwmWcrrYgDJ8hY3bq}dZ_W_X3rJhQ94zY(j6=|=X;$=zTL{^ z4pioMHJemo9633p<3-Y)WbczG6?0doH{rE6TDI0kPaw8)F6juiG%hFQ33*moLLP3w zx|S_EPoP{z)0D6g>>}F;(nFNl9jIW*FvppYGpsW?Pr%v)K`w+l_zb-}(BZVpDXunW zksU&6ala(noIS_sv2Ph`?wjNE(m$G2AMgb7t-;tP8yQqF*Pq24mGF@pRgD6KnS=&IElvjj6qYn;lf6{DE+2cc{19LYO^iH#92;o_1m(&==o zju|*=Wp|evPp;=hqD2yIuHuxmMixu*;;i+SJFquBLJDZl^elD@v-y@MP^rDu#+xm3 zX~C5baLyAiC%st38%{j&$>uF+=iSG=gukP=jJNM{n#^;&EgSIBDnss@3W!_k4wT5C z#FhwbYlW8)+DkUR8T@>~t+x(&JG|AnsZWDwlLW0fV=eT|uta67Tybj`%%cuTE>zrX z^yP44AK=cXxYZ$_Y@fl{882CpOY)9jDb}TFX4E|A5VImJKa!^Ih!eM!3|Vh`LVa!& zw2{h*JFqj}x`EJ(b7f!O#cEi7!!3ha<}IrqXWVl8PcKlHv37T0i>w(UAa9XF#qAMDpB$W6C@?)R1Bh#ZeNY`*CU9Ei)&la$ry z*U?=zq!6+*O`aNWFWs!(pTe?iV4a1}!CBl#^?aM#Us9%u1mD-g`-iJSe7w#R@ZOix z!#9s!^#n$%ta$>XtRBRMXi}N(z|n}VU5ogTzuLE`hOAr3ZDj)@Pav+-U$$oxzSihW zS~annEG_k^VajUx@?DkIy-L+Azwvc)_KS{Qnki-|epC+?M9w_llV($&}HWj?p z@)pQs=_WC)J}?1qE44SDxXaL$luwlTI!e@iQF3p3{0C>?Lai4V4{_m{WY4s+6M5F{ zAE(ZN#coc1<-rq(SKZa^Kg2y9bq+I`TlLiYW;c(=+Nj2-W+3Spky2&;t7W)UIvIA` z8XyLat7=T6gGQ+?)Xb9GcMs+-WS8EDSQo_ABf^#Lm)aAL$uc z1$7>OiK+sRKU;=jds4N>-=U@zk3W63=_qq%rLAn}Up?GY-1kf2kN>DjjpkJIRA_11{c5q=zG<>@FiAO>U_P`orC*7=!T2Op zmTk2*+1-V8*1I$DtJkGkwOMR7x4Y8g zWhofhP@%T#8cK;fip|=kDTDeo*C$f0hbh@m$04u51}xOM`SaJ<(BfjfMZZjGb`*EW zGR^S#m#8WVl_#B|pJ0jZVTTzjqt=@Ca6Otlwf;5S{uO$xH#W(HVIzq>_4aDRJ8<)= zeETPZbVGKq0cBSe{MLN5G`WvCVu7>wyeZnZ;qAeNs>eS?O)DP%9d*u1B|NJtp*w|K zNXny>U8*4p&0I7iJ2lx}b_B=NuieiUCnLn> zVre>p4X`}^g({9~Q)tx7s{gDttHR^Y%@(fIfY`d>QO40!Qnsrmaj~JDblU_pcT`?N zniw=U?$g-oBd5?Wht!D^*QR^Hw%Z>6tT4*GU<;a?`c9PFU(7~pBpu<}B&+Is!E0DI zWUHGCWM_(6vu3kj$OZGa-*=|?PO+}{_^&%8x3-5}8_V4XxNZ@`VJs0<9)E?d?g{CC=A(V$(k0y? z?+7;*E+4ccrSZ21RLVm716pO0x(DL%k4bw&Du`SA3*u6&3lMtp^7tNJYYmdHo}2y= zi@(ZH0WG5MI*)(8juP+fQ~5eqD)CiumC@dZNO+3FO#gv1!xw$~8`Z_F8Ktg`Nt;VZ z*tqT5*pE$%+M8V)b3DBXwQ|i->`AGjYm9Pjd~8<@&Wo3Vz~wU2{zK=eZoQk`?1DY^ht9q)+M6HV9i4VB z*wIuFh${;v?_!6`$Zb|vZE5OB!Cirj=Q5?x5v~n6o|w&2N7sonL0<()44XHa?W5R3 zlTD{M1AgfIs_%G{t2#2%_;bgVzttNpcK#$e_ttyCgK8ftm)h!TUsKfAdGU+~b8pQ_ z%KmZsz2L7uHa@AC^J6kr^KtF__IICYjr`g2TA8$Z$4R+Xc?tqWom)W0FWcwssxz_^lO) zwcTQZM;_70R$G#_mBo_z&`rF1JR7iiY-+!uJ`DZ&>@{uKjY3M3NEF$E@E%u1#|{{5 zKxAVBqONiKceOp%djcLcPJYDs#ZQXq@;1ipQI$rEucCmB8qKoTosRtLjom8?0%yir z=P_q5XYvpx_lR{gRAZFK81_sq~2JwrWFn~lmIbdOby z(O=l2YYWbO9_NVIoU_NMOn;|4`XwqKzdvhSjjqCHo>{ioIjCfo%6Z-JP|jm?&h6xU z3aJ~9EhOh>RE`S*$A_!6wJqLT5ct4l4b`cXV~5&w@eTJ`u8*VezBb>yvDle8F{3f1 zI&w2ZOGR{bJ~>V$4+Vjdsyx;{==Xy0Tpng~yX9W6w<=G+vju_V(icMwMLXF$8SUmP zZ#chVYczdtIQtE}c1!YCd)CJMJ4(&J-_Y~#z2JG%_Et(i-+9%UrRnT6TS1^!%{^RA zsuAgRcN)8>WztabBy-?ayI00E2L;}s$27TL!z6J_^yARyDLomyZ`_xitv1}UGayB8 z{ts_;;nRQTByrHRK7+a&M<7P-I<>hkaid>0y;=&nAdn#x)mdfp*?YkSDw#f%zcDW@ zto*ZKTa1~CVYGZyaft1-ti<~LJ%P-htwnbVZ8)v3S+~TQ^+eLGWZee~IyYW7yxjSybp;aA@o$fQ zTSn!`TirHyqRozmBL=cd*5{`h&s<~YYA9-}hTGhk1TckTsmaM@uDJ9f6_ zDubkI6Ib9=yftM-v5>Ngcb*&ZY@gAxj4U2Cq$mY}njA?oG{dr$B5QC8psX??$|Qd1 zrnFBFA9b)>H@Icki^D_SbX`+3NqlN{c+JW+kd^eNn^7B|_lTQk>k9O)jN(2@&ZwK+ zn1@|>=lA3pDqH?buW{tAbLdf{tlWHZ=a5sNHj(Y!hkJ|-u0XWvXI6#HzPa1e%@bAq zqDLn8>1+@yjrdP*frs(YHqj#|>ExT;s%^P7`B%=yUUdZyaf3igFPHoGf*vw!4DsE0 zcb_ac(^Q8~@9gj+ZnpUJ<-@<#cCSkHL@~i{EtTAMb$@GKbOkE(l~XUOelRnH44{ds z5__F>1s2#HDp_mxjk#&0Nxej``&ylmHH=y)q7RE-SD=KaGK3PSP6$^!q=8R3IZx*j(7 zab0CRR!n0Yo`El_+FGtN-1w({-&|V3(sp%2itei2)o{7IA$l|Y%rRqsx6Lkp`GOKv z45_~pjACfI7xXqrpWUs8%VdVjn0I6tou<xwNdMtEB!~uN+y3ylfLfm=ZW=puawpHz2K;Z$jtF9e?my}gb2^kU3$bPw54}I-yf&Zj6B>IaUh<23ZcIziMBy2vr+&LhA z56aa%wArlldu@`rc)2s#w*h^b-t}10ki4x%*Y$3IXe!WTtBSUkBjxqow?=uMZQ)I% ztg&QeWU-VWl*hTSttr>VjR31&q*iEKwcBqZO%ZABGe@mbs3BUdDcaXlXa_6 z5h{{Hd5YX*WOdtELWWBnR))VPkNea@ggnnvgY)a$`jt)-%_XVaX<{0ze>2~9w)@u6 zR}1{di-)UI(0XiA;%VoZP#XVRcq}9A_F&`fWh~~})o@tg&(iluW#4C)e~D>Z;p`iA z{&s=CE!&*Cj#m^;u+eV!4F&$Ld&-gP3j9f`ZC`4&l}ZV+aa&6QMphbCcT`QK-K(W3 z+JifZU*NA*eBpMlZVzs`9f9tmDx=G9&$oK9wFkCseKy6&R<;8F%|U8`5gO&&gG-dV zDXKjSSW2H=!GqPg7L_)p@y}YLD|(Q}q2zK3Osg6rRsLk7 z>-OL{w5wEwSnbgs%)j0JZ6mYW))>ljL*>O-?~ zw5jWQ`h2Ljt;1D2X3liGJz}b z#qPe94sU#AoHvTHjVrZ=0>c|uS-_mbk|U#_y4z;MyDC5RlT7O1bdy_Mr5lc%O6EYR zUJrv^3>4b9sRvgDa)usO+ZuN}+ow9m6SuiNc%W&))rUB9J-FKZw^h!x!Hb)QR`+EUKQu3?I-L|2G$m}#51gJ^ zp{7>{i<5R<+cKM1Ig>_C<(i5`-{yzmO>XM>g{|l31!q2wXE`{8sWn@JHSDn#VS!q$VXc#cqz~dBvtYtBTmnnb9St z$=v;xGsD(ue)bl(f{OK~+caP~v}n0?)yf@K*`WJTGIOah&AaS9cVI{KGRuJh3VcB`dz#g9p({$o7uhl!&Zp5AJQWneUk?X}%Iy(AK?;(Es&$WvN(;MzyRQL4JvH+fseG(@ zfmIjo`YkJ~SFx|h_tegdYeS$#IBZw@}5I`aKrC#nEhb2tX4k%rhP6~J|ATf zdj20>_Zr@;jbsp*;>%VqjdEJkIu)7Rnrsiwy(KpR*KpVKy8{Q6)tW_Uca^zs(FF3eh99$p4B6}}ZNwDscLzqr zb-lhIeKh^na@_bGl8CTna7wxr!Ns0rH{li+zbd0LhFY16q0UaGN#?Dg+fHUJcKc0k zi*>Q{R9XDIGG&>YG578=E9>=}?m%jqQ!SI_bsr`boI*M zJ_VW)Mw@Ump;9j8*DrVblfLhfnusunRM}769PUQ{?~~&Fk-AaLX``~?4lIs`XOCO| zx_c-K+{HA`0go}5-wdsH2eQ=z(cbIaf!TeO4|CbiIU7#WC9Lbm9`sJ5t2_{IcG{w` zUF<~3+&w+6%gHa*K((DH31mG@lI2i;;%)7Wmk3(jiMoTzztahsA^nFt-E;#TDGg1JhvUES`Gajv4F-{v2yTOaMg#SMchZPO}Ks%4CPx$f&oH?Gm!QEUl zELUeFNBzn|zJJS{eyoyV_uz~-f4;%_xNj*>q2|R|*^_IqyS!yLUEhi@KH+>Cj?I>* zUgx_T{PritC*PctkR6eJH#mcE-kgZEyTNJjtXC03yywDr&vf#Nc=Oh#o&~(cvjDe$ zVfHbf8UXCxXip!K9(miye5lUtFUyt;QL_7H7=uJJZ$EvN2RJIjJQa9L2D>6+rcw-h z=P-Mh-;ppx>I+Qah%Z%ZyH|Z{uG@bxgVZBqyi43^ z-stt;A?Bs#9Qeznvtw?AdNOl2IN)C< z)H^Jp=&*$BoeA9ywl~co(TvVS?}R=5xyuh$tVC}%T~%q`Xp%I2cZ1iON;?z(3r}j? z{wmdspa^YHw2xxl z&Gig(yMg6Jwb+s7-KL@>)YZ%pN_CSf&^7~t?mLxD^d*(8Yr1!>gmJ!1oV)$$>YVRt zxVypfCi6_SGu7wSPsF5AW;TTy$ZC|S_tnp2T|dRDe&i|H-QYLXgR5>HSKxA)my?|Ngt32E9%CYV(m$d(CM$5^AvPN92*@vRWz4 zCDkagDp^V7g1Sygrnz>_NO(fZ^4Mo`&Keu<22V9|OIq=c>npZ=}7qbP}yj8%{7fy*Id=ubvi7g02S}M0y#6(k32fZ z!j>ui-A2Y7GxX6$;>qltnOzXCq zTpY&H#(7*+x&phEJ=DcVs5&!RR#mtHi&X=S4fv)^vLc2azuXO`H`aeNHZWmQ*F%T9 z!KB7&bmQ*R^=>Re=ebW8*?8zZS73@mvgHcgnG{~AyTQOMS71yUI(>>X-*WlxQ`~@X zet6gKr|t$XqlwA0?p7NcPpQj7!(pqmS4uB9b1R~@G!r8)E`M1W*Splcgux>lL0tf#EYuK%oa8?=CRktfp`2Z(Y>MHeCw~emA zG{ao|3+JHjF}I>CDZTmbFP#07+qn>v#qE?jS72|PEGexVowS)(e&Nh`NI(k ztW-vX3pXe7|J+UQe%`MqbVlJ%&982AKI}WBU7b052#0aZz)Q-kTdOYK1--w3-Ky^f zYi_y%^Hn|C)IyJOmaCwtuSq9z1?K82;GXpQKHg++x3`V;5pUB%H|?y(mfwur+{2r; zWgV|%=_h2}K4zf3X`b1}!-jO#OXcK{T+hU9i#j`9fo%O;Eadhs59DM;995U?dHm|m zFHZ3T<5`am`J9W9QmZCza4W^iQvSpDziK`Q? z9v&DDJCpz2;Gmmk#V?%+z30dE`XX9abWw)cv6tUJ+HabNf9V|5GkUOk02$@te#O%@ z&a`fqdE6FlzE<2Es}j^gV|ccjMP$W-Me-Lw%9489!=$!fOmtQ2Dg8oI=@{03;Ipau4)^hE+mY) z%8yf^V7)Vlqs*q!Ok{+-L8RIKWn zWF!+~{pAZ~`Xn4Fi|MicsSB0}!m>%NwRqQc!yE3qJn-UCN7xY1Xg>9B$|L!q*ZZt@ z0$l#Ua3b?Kp-#D%GyWUujK9n4fG+=KWwlm?N9toLUHahxz%Gidj{7O)BI)iFYL8PfR3Bk5J-Gs$#AC)Gq&#=d5?eq^xhaqpK)s zx>@!sPMF3LB1E^k!Esgc z6iVLnotWx2ez+v%djG7;AJut2i~jg+yZPPrjIa3GcvvMfrd$oIs&)By##uLoT>e2} z(^Iu4&f6B;dYjUYRVR*Ztp5TpPE+CtV}sPh5RYv`TW~ekFP=WuZ-~eGca>TX3wwH9 z{&{1qAt2BHgdRTRzMS3s@14APIvdBM<8Y?$tF;BE-;P#m_0XF}lD!I#%YRIjB9W1z>ulrs8waUB8pK;%0(-s`U1(xeozcs^I zD}lD4W|75m=w!e(zONu#`S?L!D+>#p_W)#n;&Q`3$?_8 z94V5u8ctO$agt|4?P=CZV5~pZX|;s3LtF3=zh82N9@M3mOMi@(LA;FzSFZknRj=WU z=8M)(a;0(hrI{7GoWuIAY|alXDU+gD<9-|W6#jjeb09Z7Md|YINR!B2xB1$FGkJcL zA86E(qFCY%C#5Os;n8@?ZA~L%{iDbUan&!Qq+fgZ-BfjwFDSaTSAHUnxDL%!biH8&?4Vy z3vM%)?dE0JHBIV$30{}jUQ1UGj4!t8CNu)yu}Kc{14%PEat=9ooSVl>6n&_Y`Au!S zIT%Gg>^he9`w7~oDL>G=Gw*G|sZGmZ?NzL?{>k(z@y5Ei7jOFV9G;gD+jz0i9QGS$ za`dRC?v?q0#S_iq-#8N<$sz$`*u=X0K;#U)${{7kUwMC(V(!pkp?cDqW&c729<4BMbjRTbW!%WUockmhXr7o0@RDYG~eru+*| z`z@=q)-N8q@>w)PdXtqO$%~^C=S>luVfpMA^DlgU`r%jiI%^}$VX@<%GKbbWlRrEj zJHFgzw(fVnX8Zbw-#OsiZuc3d_*{;BONdW`R3I7XlbQo>}4+z5vFY9CRabf)5fx|QK2{^n-PJ(-c@$0~3K&7uT@TUg|e|x~e z4RB(ZgL~kfVYtUMo+5|go?xqutpdh@!!y($EFU~mf6}HYD8kz`103FlS>W&lhJnL7 zVeSL=5#Z3D`2QL>+}~5e*XgSo7>go2$J4>#Ieryv*B-^87aU&Y^T6Q=EPTLT4i5MK zBd{;LL_QSZco{gngg*ff4a>lL;Pfzj0nCTD)SqN<*2}UNcNbm`c7@@SFH`?t2~*sF z5T3)k;P4FCrt8y&IFdjtIJ{FOg2OxQ!{F2~|9Rl>apn2x)PHyaFF^>$Gr;OR)d^OE z!%w?^1BYjLFE}ME!BgPyCi^dNsL9$($?P*T$RU!2j7G*I(~x<{5@Zds71@g%K~5u= zkohVd9;H_!fOO8*{XA2Ezq5xcqnu(N-!C&u!1N#quF zYnba!_vst+GH{MknP*P-Nt`=}M*20PD52u%6f-%V#WujL?V;+@b{XYnVEb;!Zqo*R zaBv)0U>MIJw_Y}Tf7T~4<`ECy4@AI{{$ra7|4CuU52P>tzgful36ZWM^!oZF-djTE zQNg-Y_nxD3OcvFLn|>A1E9S#r4WILPM9jhkbLM}0%8YqGc=f}y|4wP`X8y28LY$db zJ$mSeFMSyCS(Hz{Mt2wK=B0Nd&m+^3a%3s;GvrsuUy*+x9Z2LHZXhDbhy(dLQh-cE zrX#N+-$j0a>_Gk#`4bX5m+xvJ&mqf@RdYEb))Ux)yo>x7@;4-a#D53J$O>c+as%l= zzB&&F$O7af@(<)2-z8CGA+iK{6L}l?EpiAsf}BC>kvoVnpHmwdF`qM{fWUZU2J!~7 z45>ukM&3crAXgA>LcWDmB3qH|$iE}? z$iUa+);a&affOMn$P8p5vK(25>_C2poIuVYSCHFC5b3_aF!~~oBSpwuWFfKw`8l!| zIgOk{{)T*s^!YwNBS5}^JcIZq^KT|nhAc%^BfmyYA_o_;`v=GW;W+RIybOipA}-`P z_$!_#v+^}Bao+%?;xv?Un0Ll&LB6C$RE;gkkLP+{huK)9a)BKLbf8ikYmX2 zku%8uAYUN8nX|uw@Z!zsZ zaM zK3i$gA0u3@!#RZiTZg3whr&;ye@pB03189SLc+IoxP*b6{ z{E1#Y{0aj={YeK2Wk^nuT&4^VIMEv2$ry@!Oan=u+ zNvC*$3=Z$k2Z(ie4&iqQ&qTkS@Hrj+GvN-xW$62m+7nAT?+HIoxRS8&e@pnJ4*w6~ zMje(fVJGaOj^Qu^)YK`{sZB^54VQlON9H4u!d*hd`wtIRH>C7 zU$+K9@%ic~YxtJdd0)O{%~-8SFBe*4em#-jFS5q{4srUlH4OKDiy?uq4CxZ?Gaj4N z7U9fh(N!oNgTa~K~_QHXc=KyWQhLPgk{ko`u7QsB(muLO!z6nqHiEPj&K%EdzDbtgq?&3 z5-uYwmJa}Lbns$Q}AT4 zlC|YDboD} z4Bb6+?}X{*p?hdKV?vnDjcy>iI&_?w>KfG-O`sR@$LZ__f&>uzD?ArKMj}rlMaXxN zMMyQW4S5H74>^wf35hD@#so43DL`I9%8*sa7UX^8I3j;iTe&Jk`^#XI^fL=NDy?JE zI_r29oBCUA9UApfP?n`qyHrT<9Nglc(hP|F)#&3fjv;QH)>(|uT40QscPAyoH-62R zU)D1KMc)4XmtVs0(k~|1*rch1y^*Q97&dd7j&5=Zdn1GS+b%dy+cU7c!K1_Mg0rzp zA97&N1!rLwEb#?9u+xM-qXFra}-LXAz7N>R7<(%tV#|~+yWo06{9J@5k9*0Q6`S408P;Ypi=Q;n!Koo@#Q5d5%aTvsr=O7$@Jzb77px(*UsAD&SZKsSnPtY zBhq<}bCipvs`_c*@tQaS zqLjFe8W@Ex2VSTK1gGl^4;sThx!}~W3=57$_)7kF?Hr%v*z%l}@ypM#chj5n4L17n zT}OH0IW})XAte=jS`&}!<6$B=sJiKFcXbrqLHL4&FL((?Fx>F%--L1vL{SJ)@JdZw0Obyo)&4 zfx{ehneYS)PjCiy)%oab*?1>Gz{ju)7Q5iX*y~txM)zY}03XCISo;5VQPe_k zS21Kh#WuF!y$}S8UGQ#1GExn16^?I^&^B}%;0YF<;I*2!65iHV>4bfa{cF%wz!NMy z!Ar2Oc$4(oakK)(A_yoHLGS`Z5}XC`D*6R%MK%{*DLldaZ5KQZ`z&g#l^XPdr(hQ> zcELr6oCRYz%2|-bQT!$mFZxZ&f1M0CP{tE6T00gTt%>auX-j(hFt(?&qidZ=Tk75~ z_zw0Z#49I*2DlNsV99{sOA~by!YfB#1MfV#)9}iDnkb5+ns^YRbh;&+Mu*VVLJW06 z!Fx1s8@$uR&mdzv(QSbzSP~Yz3A=Q6W$DNh%g5%KsQ@>VBra#jy;pf=omFR3p^FOV6h9%N5s!ac+$y7%lSVV zWiG@}uNR!HiSZDN#ZIqJ;us50us9SPja_=V>>L;ewqpPa@*y5IpI;gV^ZqD7u3_h@svridqQLdw0@iN5FfqhkCQ%t%yuQ1Ww5SC>@qLF_U_SCgS5;9BgVAzScH?DOCsA^zTHIsdmo5QS6~3S$F=T<|6c zTfmjr1&dwq8ti4@6WDiyS78?{cEKyKj|6YUUJb6mE?De>7a>w}lhx73z@Qbm`Z!D< zGxTwgKE`pB8mOOO&GYoi{Vm*FxIUq4o)>%t`$bN>8`zt{m#_<#3<$n}y_y=@%{b8L zLvap*D1^`mK82{x0#VilB{({U?f|^dIzjMW&8vhrQmPz>ThXnCCs_OmUZHtQ;FY4k z46g!RIXs^zgeZ!Inm8L`9wS`c*Vwii-Assrg(rAAcIlJ>9L)t!#UARUf+t{?l~aJ- z9w&jvVHYg%1!o{qz|;wb@1q(VEun-Clt~Z;3sG=_CdS}U9^q~3%Y_KKD0qT}C)kdC z-m7G!zp=kJxcwRW6jxg<0xrjHfE%$3R`b6o>LJL`d4Ur9pP@}5goaYVSFy`# zHi=Hv0=|qrw7M014*M!fxX;b>3_gQhFn`+xpFpI<2jNX4;jLuk2)cbfh@udpDE2@& zPezhPGWLUaVHYfR!8@>f!3W6b0q|Drg2gVl5|M;fz?+3$3bY#CQh0)eCwMXTTr%jB z94|+)2!betAb0^Hj%GoOrtPk9*KybbaYNL{gMB0!$o)EP32w$NSP~R`n)`r~ z;0N#|!5aJ=L3aS2VBrbgr+A$Il{&#=5UWwH2}@A$DxDzPwC&#jULKa9;8}K?rD!c&< zH0Y|}2^OBn5Af1)qMNhM@t|-KTC>B5%Nhdt)VUK0- zd>jZCyWlB^WMmw?6?C#}92KK;!xJn#!Fkw66R!n7Mc~oc1&dwqNJRV$dz$&bgdC@n z;~bPjAPN?u;NFN#x2@x>2!4IMI*yx8@a7Wl2D(e*xap+h3BG_`5}aDd9S`t1?4b+@ zK7&XGPWXgK@16e*HsVEjOo+NS3qGQW``{ImKs5;-M7JBBV9BW9o!GNTa0vLuS5qX>7$#Y%yQ{Cl&ja1RPhjWgK!wSniZUkU1l{lINYBJj>jIF zh@)tTWi&}CZ5N9!5}sh;2{tsZwa8jn2(P_}A-ag6R`Ue6AmZ;Tyht*V%pH~+ z=q?v={)<8!ih`1^U*2Hq5OMex)JOaI$03b!VXhL{BLJSE6OHv*zyNluX6s6gLnnyIfy6} zQSfO^JOMEk{RDWQqB{ytFn`+xAJV+N@M6(Vfp-AiE_i~4CwK>Txfoqc6YK$R!=AZ9 ztv|SVjG_vWwps;oBqQ5ynqUpO6%YlBBf(2GZy~&kZ!*Sn`)x70`S1h_Pp}ueTy7u5 z&jRo)?4iqV!6nETpL7laa%aNLQ8JK2#4MVk1;-=N4I`ppaV&TU_RExH$CJkX5#Yht z1&dv9IwF3O;T4gg!T1@3E)kw!;R%jM)chX}(TyPoVsDgoh=PSExXokTLTT2=8~S)f zAL}?u0gmb8L4Dk9?t(z$waXbf|R6$jPSW2qs-G)GQsl@ zaa0N~jtuUCHyhnlc!DLvf{QiJ4KEY@C3xe|<-rpyJi)mh+Fx!C4FO0A96DleozsLo zZWg19A!61_E27{iozasxjtASrGAg*Ez{=>I0_*a;f=(y9@U|3mU7ibW^l9QXh@;=+ zUNBX21Kkyff+eSdFCkL$Gw?>DFNJp=-KX#b3s3L~M0iKw$#k4R29KdT1TQo_3qGiM zzTFUIUeBj9?L)Z}VrZThyiF4~!IOdGI3?MFt_oggAQ8M)^D5w-c#}J&)Z9vROW+BX z3<@sCE<^fd{H!S8{9gzmG{&Pa<|5K0)AezRJ{ED5CK{=aS^C(UqmRacjxk&IG?3Y95zbIPVmZKXGv)`n%P=ZEu*B}a(5(vJcc^BYGm9|mE zm(ZPq7ph{xXEg7aK7If{3qSMmdl=mT$zbUIpD6Zf;#P>#1mkhM6J0gLP?HE=t9i@e zW#Vuv4p*UD3Qw?PRB#z0H94E3)ZA2#Qd7mmYg|DS63;gU<#-~BLLv(GAQEwuKIZ7- z5PeM7#{`bzI8q;5T^4TC$E*7IDM#^l^#5n;eZZ=`&UEh=M1q7ELWm&-4Jt8&5`zjz ziM50v>{x1uHI`axiDB%nhgw1z53$xw40RmKIMiAwdVR=f=laxB!0=J#dCOuoS!qzpxHWIFF<_sTOCf zAiyOOWXfHEgp&~@Qm~&uY2YOM!U`muNK&9^bn)NO-g$th-*ovSo78 z;LaOxR|{CSV2+=MLJ(IF#1UvZM>YVygg}^2tMCPqDm;rW20ja2FWeb)!qN$MneGTW zJ)~Ywg~#DK(0LE7h1>B*Q7+&k&@qTM1R@kjcppg>He23A0nP4wj&vtnBYJPP3vV^u zCUlytRZOl1xDDvM$tzrAx=M7T4IKY=8n70!0wILk0AU*DHXsjSG7Zz1=fmZo6Xw$@ zoPocTYr^DGZl}R%_=V*cj>f;7e38ReO&*C~SpEdYUt{-f?;3WtRIY4r+{N6KS;Q^9*st=t*!qFQ1_yDNv2&E6`Wd(1a(P&XsV>&wX!7r=^ z2oFEwyxR{Rz<>K0t`nYd-V~N!xF5fJZsB3oAov>oJLeiO&kNse3sB$;0j@w?K+t9Z zgn5ePeiOuf%zp(tmJMafm zAnFk8huDrlSOVc~2yPLO2b7&H;LZ4jzD9^6s{1RumTF_nQk7sGAiOJ zM`sS)9CX6c38$NG`ZED$ISw9$bk2mFicnZW;VCAJQ^g!P512dS;bK&=^@MPw>2BwR zAIq&H-WV^r59f_PmJ<$`5p^An3On44qDmxe7T6A87dmo*! zbi!xxSJL2ZRCob=2EVZU!uv?7a5uVc;?Jh%_QLH#C(QikBmuF*gj*46nfPc}BU}SQ zZ`lafnXU@mX#y-IU=7?Fbi#@!yv%g@Y9M?vx!2nsBob zde7~J`HIFpk|fLH(5Is3J>kxHIKC~r^LSo3%5=B+BLww8=*!_}zGrC2Fx-tV>yfXH zpB9T4FyR%1daRyD;Hz+#5PFZ);PK27RC)gL7;hGS7vsZYF>3B-+ZqawLJ?=!Dh4fQVHHwD+GO&|2_H1m3wocqvI;n2#=vBjX#a&LX%xbixWGoFhLy zcb%SF1fC~9Sbkx?@pR)%MOQ~TzRnADPKQiHC_+NvTe)H3faOVxWsgY=(HRg=?NcPK00rC3NJJrU$eUn$w1#uoI2w2ZK*RGy|Cg62WFZu(efAy zv?1687O?)0 zQc#2{fY6%_Zp#l?zJ~(k_>WPb1+E#ru=K(^OxIv}HTq`!ykO9|9CnrprU;XilJ81eb$OSUTZM)6GVw zi`1SBzSf6JK{pzJkWfT20(Uvl@>FmV0&jT<$B{I-BGGA`&!I=6;l^^t*S+v9UJ{jV zFo(Iq+41U9h6t`7op&)Sd<}m<>pY)8LlAukymc>piKIa9Bh=27gzh}tS#-i`xbOkf z?X-L=`gpp$o&#xwYd|k7z3?W})#h;jfB9vu*T2LC0^~Y`!V(Ivwj-!|ftO3btMGeA zAiNU)P6DTMgloXd@C&QF@Dh>^AQ#;rJ;D27o%wKC=!A9tYZZ}+poxN|1X>7AM84nL64D!B@GDSP~Zgz!1j9Y?3LT?=u$;EtdZR$So&0TXVryvp+B zmisK9WBF_Xx|3)QlL#(_fZm;t@Kn>qk}pw%v%(F&VEGBlk6Iq+Fyla0`1`-*Jh^Cx z+m|)|{h#n|(`~c7-tzU7(~$74XXggE8p?S?BwR^SLyFKfGiP`gtaAxm0XndI{%sY( z>$UHu(lrB&Q4TmAfv~ztcqV?WhB5rJ!O8f&)ghdKzk$i@$DahAj9*ygg=6t2Q$CW% zcvHa9_>;Z!zldA&!(DZ8K0*rS5~vUE+yT1ge54N8qi0;T0q;pQQ*jb_M8`!THb$t3u%d z(=D_-$MQLp(*f+J0rTL}DCZrJaO!-doHc|}6IBoe-appk<6 z2*jK2&ISC!3MAZ1QiIN*)0pq0XU@W%Lg&o^;ghC2j80>I0NqhIUegcH0p@?Jh=V5F zgD{GQlz)Rc0LN>zcfN)fZZh3gbY%qWCSW6613FX z6P8Z6%XCN4wGn@S`i{f#*Dr6jZFct`r&UC|3HKqaC%^>)9)R0}P*?$lx8dIizK(wf zcnf}E`Gq%-G&icz={jI5bEp=s3Y~XdAncb;-~X>f*o&}=fEAD{5DF`x@G=R}@w)uG zmn*sA;kDZ$xLkC?(g|nbKSsG);^c!f@C(Z?oJLZdBy?%;(dYuxArlaakWhFsf@&t= z3LZ{P0mtGOmR~rEq(HYa!>84O<=pLN@|9|)cUpB?g@^EG5;v2IM!|#lg%wBmN~WIw za|DsR|9c&R_5Y@@1j6SDpd+|QfXm=s{N51>pCzdwUFhl>7*i(OX}A;UgcV2lsOj3# z)xz^fOPz<|+A;$?y*8nUy(Vlzc!Y|R5H`a#5>QwHg*W40PLG_Whqiz>;TM))cs)rC zt3X#t{M*D?1Gf^Luyn%wCp%%G4`ELwdpSK(0#|@gSVG}E{M8i9psVx2S@?zJ7tX}5 zHzh}3=A99627d3&N#WTfH7MEgDV7IfDR`cBd5R;M3>ig1VFecE&uZL)H!Q#Qba>;@ zWbKFRdwP815x#6X{shzAcq-7HhwDM-Z9Kv!!n(i@+7VW9B!@XN{;tzGfKXTs5N-|& zf3OXmAO1YLCb$N4!qN%Xm~Iui6P2u*Y`Pq-44tra!pre%2>AQI&hn>O|4R{gV^WTw z&;l()*hs-50u{jVSFmpiE0FL!{G|j+AW$B74t`mE0&~b0q_L9HFo(7CwrHKL1Tr)ah>4bOU*Et~ln>>U9H_hSwAMd0fq7i|Qz-?5t2fT#snIri~nh1GE33X*Qk3QeD3d4lC}l-IJY zTflQdxM<3I%Q*fij{jChxaIxix>Gro5x&t_Nl%=GJDD+lqal0@zpsI<8hjX?ex3SWFcGQ^$Hx-?*biz|i7mKb6p65!Pfq2L$gd!vq=9eShUEaX*Vhm%z zx4*>M4J^NK|Cho?(Dx-aBFgbZtMfYCC3M2l3HO@r6uJ`ldUV}zC(sG=3ABnhhCo|q zBNcXmk09{2QsFiQ;Ow?%4L7IY{R&{$g2GKC&4C(nb?sX88C1aYzRqg6O7y~fT7_4b zF8@o6zY5GVBAtQ@5$bO^GT~-ZP*??pTbHe6s{1VumTC^<4>cZmua~V zyb!;z{KA z$QXp)*a}CQFq9VVk@pFBJBA}$%p=e+_&R=XY=tk7bRga62I<+U-{BSw z?ld}KK7m#dT?pdofqc5Y2Ydp7FrQZ8!z2Z2LstmD6J0ypessdp2{)T=tKzXgZ2Ugg zif|2zXZwY4J^p;kb$pxq|3-+72t+85a5VyLFy{$S3$DWNZ8*X!NZN4n$knh^%cCs6 z{Y01#J;8f~48hb@^bp+O6TC-gLn3@NV8V-*zfXa91i2JA4|kRV!fKfCY117c*JNx$ zugSHYA=(AE4ZSzngg4>WknE$!wu3j|_l8I~P>Wz80ge)2GsHRs!m3c%k6&}+6ai|$ ztMPktMR=9`=ru>yfLF?I<%LU0>Y;pen!NmQaiM}r)P&J?HE0H7Ordd_@os+Zn}fyOZWldA8eq2x@;e_b2H?6 z3V2;8T!UX-c8~_~!ilpEzt@Gre*Ef@BlzpVmH53L60X3%6Mq8nH-XFX3+sS31t6A@ z)I|jd)kW&cC2$K7dh1;{$8=NCsYgZ$mK_@JoaO~q;{~vpUBVn>khKNQWEP?Q7YB*3Rl@`ix`$?+sGP+E7emku58r%hR!qN%%;@8eMncMVB;GO^i+X`DnoFM7Q50mSN_oq7h zs>{Lw);vZR!#@kZ({vliwGk~NFCZ@=cb6L#HFLeNlmjb*%cCA)HAFbabb)k)<$UFm z`W1es3o;dsKd1%WCucFH9)u>fAbs6S}HyUK7e0Xe&H7U)oa+Gc%AkjcsG7w z`Gt4k*PB)Q)^XDb-htnH(`xT5_Mb*bb=hXims6mf1}x--!Ya5@3J5Epa0&inV7A}R zwO}89Vflp%@t8Uc@%OyKl@UF&IslP_K!gOV!I>mAD9!Q|%M&RW z$FdqCa1vY`<%CsEILdUlW^%{#1_#FS8=c9;>P+r!s%PB_JMlP!<3d~`;*{2;l`j%R0txAqnE*!ys2W{hv` z!iQ(D{xcfb(-9npXh$Hdii8gkK$qS7>BWnRMrH>m=!$_qE* z*R^2{{$1b({NA;qaD4zl4}wKBU>n2+1i}g+ydM8~@G|_Hz%}@V2TJkxZJ<)M`D zkYIUSf$K#m%%@ej zha}x8bhR|7jRtnZokS z9^+L@3S6haFy!E4&YQw~T7~;b3Va3KW%!%uuEAYGCoG-t1=IDQy9ggy$+IN5Zgj%Z z37P4+)cnFhN6~$EpWTg2`iv*lj-Wo^J(ZR^gj0d zt2Jz~aLdsPOD|k%`ohNoT=@{Fo4`I5Mkp+yaGnV>30O@-b7^Q6Tn0K}>4eivHyxe6 z=gUJk6K*OxVd;dYm@XP!6kGSr08cdHAR`fqkWhGRy8HE*vw}de;M>#3za104fnPTy zD}Kc3bvnxnzjuQoe3G=7o@gW2(CtB=!Cc}`a60$H?LsdcP=z9PAlS(m4bv05!Ho!n zY zlp*l$`GiYIsxZs)6msq9Q51}0h{h-v3+GTySPd1vIW1hScUpKyEI@Ywu4mf#jwpP_ z)p7lQ5~0RuH%ER7@;E|o%!H4+Lb?*2zP+CA=js=3KRWN*Y~dFCmBcwhoObXY{K9IO za1(wF(UDqS$p$y#FA3PJ6tSM9F{>cgk*~CTx#a}}h+&SLpaDL(MFbF51;Tmq(-S9| zQ~de0lOwtCnKG6M8K97N!qK80IIYVl?Q>1@`Bt`Tk% zI`8ZzT#a8{d+rZ;=L_t|@2v*m5|ZL9Lg&zcqco@pE;l*Acd}j=L1dXQ9idJp1qkQB z%_g9CauH53T_UmSr zR5#2So%jmq-Al!>zvpJqsa30))-<{pW5k5mw!%tY=fqvsFY*hUIN9S?KHVTMP z#lrg$Bs1Ao7xA4ixCOtk{K9+iYc}Wo7q((>Gk$M&3-6Sl1}&sP?cgT)!74Ajjid(E zPv!itG4Ug8fZT}CTW-Qt1nQyUGP=4NyavCp0tv6iuOr<+`L*D3{N9lZmyuMF&+>)n zQ_x?gC-dQQ0~8RUfFiO?n2t~viH8Y12QC$zchM-EV!9-BjWlR24V(^_fKFKPgeRLW z((>DngfI235O?em*8lJ$;WG~AS}P|QIZ;V$npc|%L#ah zfCu4P&TBct8IA;GOt|U2)*-BiAL9r& z!PTM@Rv_VW(-ooXh2KQHrEmr4gryT+WV#%53twT2r(p{Nkn<3VkZ>V54M7hDn+cQ& zPQ@=QziJ zgEXLudN#sUCvpB4A)$yW6ILMH13wSp8n~4N6qZhSh3QJrU54L+ZW&w=I$`OA3rsgp z6*HMT81r1X40OWo`CmjDg449Pi5)EyoQgnLfrL{??wF(Np#px>t1}rc9-Xjs!f~b> zdpNvhuO(hI-0g?Qw`}3zhr{s#*ASi{Ko0>2A+I15RzTrP_`7JxB?4UqU%)Rczi=-} z4eM4M_(60%aHkc=bi!SxJAy6-ehIqc4|Dt-2t_C$gwt-qeF)ptkgxGF2^>F}_@;}| z2{+?EM!7_ua<_nY;ulsN;q4?fY%{te@M-9_!fiq)EZx?JS^qUAtVGy>qX6MrxK#*+ zB@|wXe>s=iH+Yb^8oUC(u>8UWBs~Gmu{@1jk8qPLcgWSC8&kq}TDz%dI534RcFOpz z)-d>el7we0KWX_v3TAEQBt_R9f!jwpVKqQ_ujzK8+e6Qd(Q~`uwxbi4PI#N?HlqvN zVi~RbA>V93ZbB$5q40VH?exGLmfZ$$4Sr$yh1ZeP(ADTPoB6%JPCr~ZI(K%X6E4G_ zNke;Rcm;Sleqla=RuM}{3RHmbG!3YuK|Z)e2!;8y3g_X^px{*k6@hc`3(GG&kEA%W z(dnjiDP5cnHxr$AlPa8Sy2L4*|I;|4IF2w0G9IC@0t&~OFv{}V5AhNy{sZX89%30i z#7m^67ak(10oTy&hd+j{AFdCbu;L0|Hr=@Z!m8D*`x5@X53&cLu!O?h_%~9pjX=HN z)A)tu7d}Z+g@@2p!yiF+4DKL0Vd;eTn{K!2gFlOIFI-@kDm0;pCKGN!sEg0FjOli` zdUV2kT7_%y>yoRonky&pI{e-xnDAQsEySJ4YS{o@gI`$Xg;(Rhrr-bc6QB-a6#@uX zAiNTR!}8jKe?52weqlbX!plfHavwU4Z3ahF0#}I68*AZw(`BIBN&}YBpm}h!(QVcF zUjaqTG+`XVJqR}=oB|hvP*^(QNYjlbh8qw{3_r_>d6g%ha5oaiALR%SnC=3)MuwK3 zbnUzfcMe@+z{Xm{`v`VY(NQYC1nx#4tcrzClXS!<&{e{>pzDG=hE7;I;UlJNN4Jsq z-Bj2CcL1HRbi#Y^2S(}g6|{UG#7+dl5(qaTs37nuD%uU+hF@5I;Vt+xx$WNj6XpoG z9>1{s!W&3xa5Xxust)4R!d0OY<}b7nWZ*62HCz%GtyX5_s&v@vnr0Z#@`p_l*bn zt03a;rk)Vo06JklfmRXMOnAlea}>~iH9&`6fa{@vFrQZ8Q>HtHu8}}J1U>zFQS0>D`NqKAP8i=Vgop8KLtIP1 zNN@I`0{`@IL(7_vY~=_Yin5eqqHCZYF6+wxb&&&Pw9!NMPUEico}vI}mL$ zVYTIc3RKddn-r*mt3)p>y>Nx;%FvZFXGUM(TRFI8=!B&c_TksAaF7Nr1?S@*^?tWZ z#6kqx7N#)ki@-Suylp~w9)4{Lp#U#RgER1Z+k|i`Nk=#ZogNM4(cr0Y3Fy2>MZ$5W zizIiSTZSG87aVvX{0{q7T6hEQ+5_Y7unS)?-8poAD%eg17vSDUC#)kC?l#>?bmbh- zE)M7v+;Mcm(h0Xez;jDo`nB*Vw*#ULfp;k=ypNmT@1bXJ|jybp-zpz?f1ui71VY%pT z66i1uTLhPdPFOnOOpB9B4=e;{+!aSSEx7vlJq1%lv z7S2H@tO|v1$A{zHh-VJa)vH;?A-L=D%mM3q;j5+#oJY7E$9ja9AbSxCE1>WxlCH*& zTHZ#ktMO*bH<0T9s)$oaxgO%w!mS~Wu;K`>HeDIIeE2KqR>gDOvJ9aJ2_c-NCM-bM zPgm~YS+oys5jtV%g!AwxQtm8)ioiMeh2r56ljNRp@6Uo2=9@Q0y`{ku)LOXK6Ga(w*ij-eCthNl@qSQUjpvM zUkCQ%7nWamHR(wOUWxD)lV}&hRgfzX3QH)wjP$kO1K;Fw!J&K)vP`Jy$b=;mP9jVu zmj|)DYdaI1fL~aC;mP<5ckuM#4K63ZvG|4M7ap1%owu>^h zi#7k1{RyHEfv^GypCdpunE$P~^8&aBzp(tm-6S3F33R%~o{jDl+%a_CHMj5){FxkB z6%FYEci}kcY)i4PFOnO z4f0d&6mhnIYvi{$!s|$?uQGs8e{RsrQ-&(Ya)iPPBwU8Sha*!Dtp+d0FD$=sDSjV; zuTfD2cnN-C`Gt!}swfYg{@S2{IQein=!A8d-zs7rf%Cg#%whn1Lf7VLx0SLSY3I zK5M!zbZPJv=uX3(KqoAn@L|)np-Y9YMb{3uADyst!h2mEUvqA?0#%l;v3w=DzE{m7 zkgiJ(5vTwzhd|zSits%ADFnWZKOZ~?zpyG2o=H;AC7?@&A44}4E)JdhXATmIh&JJc zxNw1;p+ku5Qk#r>M(N)us5DnV^SA$Mi6$-C2-D-3htGO3{i3dk; z<>-W^6E2Hm{l`;bI~7(yEJGkHf$&n2Dl8<>LJHm>&=R;s=!B&c&ch!^xiiEm0O#Nr zmR~rNq&PFt#lT-imj*XIj@tzh5{j6LK+9_%T{Ig!g+ShN6OJb-P!u{{i(Wt%3&;N! zd*|9zc=X=z?FW^Ji0ojI7gen%^XToO7n<$`DNCo1$8iF_rg-i!QGDKv8M$R9*(s!j17O)ePaVBF}Q2!ysx^2`|uA^Zj?BK;7j<0Ro`F$;v7kn z>NG-Ca1CKM+{wEt6h3aceO6)Ck9hzLxA(3Jg?HocC(fcePGaEg_=Q!Wa05y8)u9Wh z!c2r4A#3icP|q6$+0|3RgHZDO}+(bT{D!CXElF z@byWIzgl(?p~h^C3a{WekI)-K;a>cgsbG{qm%(T83+o7lPm>hqs8tw3cO0(ct_p?Q zO}E?XTNv2LLwd+vcU3671HnZq$YF!o3*LrbSQQG_lT=}?RhWgY4sP9D6$-C4UAa}b zf%;a%m05l6`Cr6x1m~%snm`rcr3i#op|FqSj-gdpg)Sd1=dKEc=b0|mDm+Yu>2N7l zq2dWA6cm zr&YL*q&Vl%X|A0|cM!9(P<3( z(DlHbx~oFrlcwvi3TN{i^C(>Vc!jOPZTOEV{*QTFa0Fr>0+*md;XNc(*klzZu`ld| z+jdul!dpyNXBDoZ!cB0scU34{jsFN0YRldTUW;E?*WaxoDoLua%qlEJSPr-Bt_p>h znl9fe+(m^&a0~CMP&gNVI~7zCrw}|3zc8Ox;dGMf3nU|K!_j~+1#${PVF`s3Oc;x< z4t@=~$#Bu=gryUXG~KOezTko1k8U)YWwJf;&KBB|o*=t{NzS0fyN>_Z6Q1{A(* z!t)5L;di3D2-k~Fm`|&4kLkM5wZLCMcLweRI$`OAkC^Ttx;^my=sKe5|NRI>NZ5g> z#e|IrH=3{sZYw%r>4Y0hw-H@4d?FiEJ=}V9!qN%Xn9h$b7rvW{tKcfp<$6DJC}Ncf zmm=JWFpq#M;P^e|H-!~YxWIHd=q|HS?O_rxgqw#>SUTZ3_$w(ln>cykbo|2d3(qFG zj|&qJCa;Dr=gU6GID{@nC>(>ogo3#QiU&vH7giwQv5Da^y*V*_Gn>y{@hIHj#POS1 z;ePzOn!Z4TL*Q!@@A{bo5q$`J1YS->L*PpU5LQLP7f6~sXVK~I^(KLO;m)8FmQMH- z{zA&t5a)gHN&Ld{3m+jV&i;vf&6$s52SR=&+G$aXO(@)G!VLs$f}hL|wh68lov;E5 zuQOc*x<>e!=+?lMqZ5`+*k`&Ni?=j@a1rFZy8;Slm~f^AT#arv-1NHw3MZLvEQ;%e zpK?~K=d}j7+fiIEfK{>ZF#fGHWHWIh!6E#@?)hKD4Fntcs(M{HcQoJu1i}g+d^RfF zWhc=!Q1Cc`&cGc-CoG+C8>xh@-Gi{?^P^i1e+^v~+-h{f(h09J-Ewq(__)oyy%@#uFGVOq z!ZJilOqh?b5Cfsav!qN%PG+h$964NEaC7>$_m{7!I z6GkG`MpMn+9s@TvVSM8ezC9t_GdCuLx8!noucBdt;6D7qYMAh8 zlDqzoBdn#u!vs1Bc@&|rgu)#p4MiI|ZM|LS+Tr%2^R{B)7SruQN2SjD=yt>HKqstt z!rM%@aRT@MSomfn8xyz)|LsUtT>yay1rRZSK$Bzzf)Mx`eqs5A`$%fY zCChuz_tJpdH0T^$H+o^|g-_$J+|0$Mc1rLG{KE1J2M+U(*6V(R6*!I{Y=dh-C@i7y zPW-hrMTAdEIaD+md@Ex7q$GSZB3w~FI-P_r5a$NmHFVxd zNw^Px;bu;5#2Ex%#$V{2|3zFNsm1RjEJL^%;W@ao2!+)k;WMT?hAtO=J-U-{N6-mN zC%gy0dUk&UTQIm8zt_{kJ4x>PuSd9?f;|LkfZTvkSb>Dslhm*(bfxf@(N)8(K_@Jo z@M_a7MK}5~6<6>Bv2Z?g!qN#B;@41(*7KS(lTY7A-5ERKJd!&H5NfQV%J@V4o4(HZ|sD} zobcG?5GWRW+Zn&05DpPhar!O4h(4c+R-wNFcOJbkpH|^6lJp(a|L#H@4G51wwj&hg z(<;1I6*Go=f6ALE;N7Yi%%@d&CrN>}q0`tOAkKC;BzNY5@J7?EMVE!H3tcr_pc0`7 zKCL1uND8&fHL6AYg8wAROO-CRsfp98Gfp|C5&3St2J{3=7$BT#KKJ(5~ap8W>klc$z z^^rdp;ly1u+-tboaF>e%PTVmgI!w@JxW#a@;U>dd4c8m4GhA)hZ@9v6nc-5yKEwIK z0a}=AM5YPS45t`QG8}I>#;{}f7AF=R@esL=xZiM};fscQ4R;&vA`hs*F(W!m&}O*B zaI@hi!&?p48?G~4ZP;(P!f=`4Qo}yO`JDgV7Uvp~X@WGvDTb2_#~Y3@>=?ckX+1#h z_JH9&!xs(r8tyjSrTyRS0V6t0&}NvkpzCio++=vG;d;Y$hN}(x4ObX0GhAxeXE>kp zf4B#X$TXa0IK^<1;dsL_h8@GV*o53UK<@T{;XcC`4fh)EHXP_O;+PQ~hT9Cc7;ZM) zWO%FLdc$>wbskUy{DvzGml-ZK>8E!G$Y`DqrR>Sp%>kL;L_8YD+TxPh`uuqtO zqVkQ%6#>pPoMt%1aFXG8!!d@*oaf$owjud%BHl^el6*5d@H_*M3`-~Ly?6a$1F!yt zbCph@7WPp`Iz^F=&BS30MC+fZjpSM2I`XHY-2Qt~g6mykb0?jz48FC^!L9+yu(pPaLUlS7_M&ZLOTBA-E? zN&W$m_Izk6fET4AZffT}k;i zS`@_s-A^u@z)XEG!U_KNSIN@?Uj=X-4@3&*pKnel;Tv=2)-h7?TgsoGrNPM+;cBOB++?5pE;IKWIQ=6@jJ19WcL1O z?jFoOhJDEFOs48}v;EkQ^X;|DwqU~m&!V<$15(m3?OFU&5*{ztR7Vz1y$Drqia|GDe{Af6*1 z6d;IRYl&i6NYqR4Z=1c9Ag`L;j=jz7ZtQ-uc?ZnV+mxWimnXMmX z`KoLhQB5OwW8Br~*JJ*h>}bZnnss^99Qlts&fl6{iT#n;_1L`m?-m}!=I;|+yF86R zX7Bux)I(f`tTANniCcLXT#A6@|* z1yjR;hTy*=n?SWxe871AQrr0}d!^p?uCEc>?Umf=G85$|6K8p&CVkJKC|<& z^;g0HRZtH22Xpwb|4lYW(@P^JGv?Chf8<Xc>|Gn^JCXy;Bp}W$}PUXm+GdmOeyJk0I*O`4DTYr?VvObRTFU?+#{nuuf zV}EM)5g!{76IJ@eudzg3I}qda0RG+_@gSm z4|c!VL)bC1!a<#Ha@sXJ75jO!v#|B!N@_$Q_8*&Fj@@o{HTDIw>#?I!ZU5g7cq%nq z_z3n&voB)Tnca`Q+iac7`QKpO%9649wJ+Dsz>XzRFYI5LeF1yF+5d?BmuB~2>&Mv?^JDDy z%>ER+TXq1)ZNLZSNc)5|H`~P77gV~eH+2_r^7yBc#jjzB|Fv`373B{bqMz|FPM<*hgjG!+D&_y3GCq z?6YS3vCo@bg?+{BTI_za>#+I7P&dv`ut%{23K{@JKN)tsj;)^<75_)rQ_cPjcBW`7&|fY~o&cbMIbecbFn$3AU#JGOo;cJe)pe>dQwIsOLws%*w)kZ!*(J!}s( zvV_b|`V+_b1G7__IInv=OZ0^7sa&A!;PI&0)!6!S=>AEZ6V`AgEjy0J|CA-la~J0^ zE;RLh$nVVdV}F^sBwo)+R~lb|{U65b+lOAW^-V)wWLRH~{S)K$y#7-wTZP?byuJwF z($b9|Cj~i_xb+82F0*6cCz&Q5``?U@!`AmOI^t3E z@0jhtcbgrB{jDg*U!qjNvlb`?o9|y-eu%<se0?77AJm3@M>G~iu?516n)@+{vr6{o7}<92u?eg{BXpv zVD`b}?@s+VdR)+Smwn-$;Gu)bb0Y2y{?ozarz1m?f|LIuIq&gFvE%X|P?r~5?~Hl& z{C9rv7s=)K1p5vre;7;|h<-R&@k;!ZV9S-&(}FGMr`!{K`bSU31i!i@?!I59EV(CG z|JN0Ja-o_ch`{M>oL*Mm`yyi@mT)S<`;*%)6Mdr*4 zzW9exu=BH32=>Nf4@YJLGTxXvAv-%O*tvDe!$kbFYx<+Xz-UQy@Xs&)IB`ODZf@|! zMPK&?Qy?#{=^dA{S7{{(GiQSdf{m zAP>JY7Wwu6IpLkM*P~`dOqrMMRDE~Ok7{e?&!2zCS`b`%VA*5I=2)=6b1e9>XK{=_ zNc?|-eUE&-CRlMk`K4*|GtHGXKkJU=$%8{vzdnWk>oFWKD|_x8%d0&r+p8oi`;IQ> zj*kET(aPRwOz?%zsvZh_*>mK~&oN2P{9MoC|1t>|%gLJOS=ruU=G+ONljAibhyP;F zN-Ve&FZWKoFMEf!fd6_=y8CNu7G!!&SisDR_|?~D1i$*vQ(}Yf{WK~jIQhe<2ZFr| z-grRpK(M1JDmB>kXvD+!%*&jYlgnJb(p8%D&V|3u`uFhqC;faVK(`{vp=|6d2-R)4t%`1CdWZRQdxhyxB0K{*a_5@c=C)_*cJ< zdOEgj9nVsdc|^88__zQ1-G_od?2UW;p{{M5VmO*w_CAHuA5@(Ue!Bg+%mhwaobH`H zzYKdypNj~-@V_JGJ`}%Q4}~~2nxlnhmXX0vUx;}6p(I?K-<%$Eb>K=3&i$MFo{nw9 z#VwIjzAHF>aB+PPr9{%VOXp52h`ov8Nfd3n!tHzO=sl0ePWw|XCTZUXVe%K>{r%$) z>9(nv{deK+@IdtPG%7aO8H#%Pp_DzmAWDq$|1I3;l$Ro$nBa>)PsvQcqgH3^4|^(J ziU@x4?-6qo>T#&2vdmHaQgFk+Ma{df0X`l+SA6h;*5@A%_WoN`O6*PxGn!+2Ykv(R+DQANk5w+ER@}-JC>fSP|jWGgJ-!2&X&K z;iYZ&yDI*5od07fm7FJs&Ub^YM<+fy@fIOw1!sJ+DRI)t-(tZp@xGJ#ftM?Sjvj zTldKuMaQg6vuUn;K~w%oebMyaK0mxI(|J4`wdR4kLaYei@Zsko{jbTMFvYQmw0pIX}XI~g{Vt%WNY1F;~w@Hzc{2K}@N`1r4 z&&Io+*9xO^ueXg)Xh%Q21KmgHlENh7+^h_D$SW_>;oE(pg2Z{<;1%+P3zF zFLb&ZjibIyar>tN?#Qc(7Vht|8<9n)I(?yi)xrJ+(;j;^wB;`6A`WX)ct(Y)UA~TL z6-q-jhoZjFDytyEpThPj)|*)H$HYAk01K%{<*!r&~?`*PYRyCk0+vk-{pM6=MyM*XTmRFNIq8UPTVP? zVBG|ZNQ?V`!>x#zsfuP5Ilm;};}L!}^H^~1m!~}xNKKK;7pi?ZJdGWu@O}Q2GR?)k zANz)fEHEtcFTlE_ICl7{^*4B zUj5rlh-ZK3?s(zp+BfJ6jc*0N>#rxkg%i@9|D3J|U9T zhfai#WOM!(k7VDVlXhQk_*nK(wC1j&I+mZGa8lG0zEIh-54z2EW`-NyaAN4~32#01 zp>yBn4$a#|ZtUI6^QNNkOs^e0_G#4p^+T@*>Y3`9s=BT)ibXJkE?zU}`%T!Y7>r1p z)%$#CN2xPg8eeF`T-$9!$6xv4Zrk|ao!xfVXCnnPxoj?_Z1Lv}>U@yJ(mHPSMN?nZ zTq>M1c&jt5NLJcl>EcJIFwGq!U#Rg;b>;t8b#v}i_t{7sm95QOW-BFpjFE%kgBbhB zNlT;JrJ2F{uS`n}q!lghdp^|e_K7bv*=?dPH1rLcI-#yGl2gZP?#W}%1Tnv7SJvqy z!Jpp85>H`ozgJxmITKF@b97d?w$mT^LdR0%@ph9FA8Auatq|u6bh`HRm+4tx~Z@wo|ccW>phijQK;~#Ft zG)b#6QomLh@e5~`%EUB%Hd4C43N*bP@z&-Jt+?~?Iv#Id%;%`Le2&S1IrTuWac*`> zAeF;va%bql2OMpIb^s6m)_KpHp|5wmLDcPT3~z>(F%zO0wQsX|*0>&DDD86>0?Sa` z9GF=2eCV9p=f2P~yA06&IoTh{)S4SWbafyKQM)Ue%K~s*7wee9%LgVp=}e4`jtCo`#t-K3fQI>+8$;cq#y#oIWi%fAy`$X899~qKhJT z`uL4bZxAwZuco&C6fwoa$6r;;bmr`3;%2(%&Se~{FEsCSWqg#G9x*e#Z8YU`efK3- zyKvz7(AEcn_4Bi52WAgA8S043n77rJ_`eXM}uP8JcISm=%BNq?velA#^m7Vwap%0x@ zoxP)a?``HA{EVdcB2r`9VrG0cvhTzD+c=wkm{OD+oUv}&L&3~~X;T7QKBVcH@l86v z*MGS2>+VDzkvyoTdb>7SWz9Lnt3Hfiv1)l050}4u_o<}x!{Xu03Uvq5EPP!TxO2T+fHUi5^{~Q(&mXx| zR6Jb!;@v^!eAxAG`6;TPiIZRP@QzXijNs%KzDSw=p)b^TXOtHY`!nUQD}1@kc{1s} zn4+fN4Y?=HpUf9@o;jcH|%wV zN$=_6W}v_2#UUEf@%BSSQALq&{mIRJ<%d-0twkdZb@->G&Nkr6_zVZ#$-wpN6A>;TXzyPl3#( znwsE=oa~w9+xnvz4Eeu)E9y@+qdAlx-tC+i#V;Pt*hn5%S2#-lUB1PW{|}u%{%mAj ze`LpZZbkhpTvoAbC>O^r=}Zon8>$NCEy$k9#8`5t4(aAt{0P&vR|QX^OX0NU>a>YU zH<(Ghu87odv~}O#m76^?@YzTVBJGw#Z~KOOUYhV0?ukDsO!Jriws`pcl(0B;4S953 z;U=1#=^q=p@k#OUt~;lKv61VaXku)32Yx2w8&+LHb zZbb3!$uK+%hw{fpPQF(>oHsYT`o)foy#3ytt$X6@+&#{Gsabo-#KfYX6wdJop7q4>XT~(+hxI`SJIr=y25B~gf20tb5WF2rhdjOix+3{Shw}}5%WnDO9Dvz zcfzJX6?~%2%buedTu%I$ zAxNU%rs5lP;FxzgpF5R}jl|ጴ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¿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 sB)EWM-WJAqjHgssEds;;y3FyCfuA6~$C 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

    Ar6O0 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%0AEMRPsZn4B&NC&6?7Qx(%gFX-93Z8Os=t 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≈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

    WV)^D4 zNCyiMaDuW13E&*i4!(sovoRhB<|5t#J`74n)`7L)L!fkMEw~B1A1nvgfCb=vU_N*U zm0xnR<$&reUD=;ml_;e+%DYHA3{>Ch3lEZ@>!0@!EG+@vlRG;)SwdJ}z(I2I_^9hp94zM1)d(p%^OL3)9$ z^gi^q{(AYA8yS$7XJwj652SnPHu_d^bO7IaGbi)C2CR{t`CnKcOSc8<4kXYAievst zxp$DMSOVBgRoujPbB1)zP)&Ez-=e3{Pl=uAx{U(miwQ!3@c7~&anXH!~HDq}n z?_fQHi-8>aOmQ?=#s-(OfgCpQ1na9<|FSq1*vbW-V0}L8FVYL>T|#t+yhRKQV8BDq z5=Refxq#cn(V;xVWO{)0<*b)C@nj7v=`xy%_!{~-dKKN;1$nu5Y#XQ>>@5Mzu!#jX z(5vY)={599adhYi4mOz-JtJ6qgE(^SpP85URi*tSod4gZWB)fY&<&?cDQKdn&}->= z^m_V2dIS9tadc=OHnmJO^h5N6^hWyU;<)x(E;H~i37`YbY*5}iH#a#polJx1mGlYX zsBd9?3G+?NKgfJ5^UsT8_qB4Dz76+Eppk(uI71s}_+10l-ANxIjs&M+P#*bNCdFSa=3|l(>?U-+dV}ua1yPUiR08_hiS z|A!2;a)xijvB_=RKpXuFx_n2*oIuITcW7ja zqRV$|WEv`tKVFmRBd+p1abNF$|FW4X0o+0ta0|>9?~IE}hHlU+jyv93=I;~70%m|R zZ4<|{q=ETon3r~BdQ%*?bM0Rcd{-P_QLz-W;FJX5i|D`7m(zn{bzT-MQ}0;qPtdQY zzeJxz-%r1jevZBhF7F##E;8^03x22XrALD@eHg13I0lsIn^^6)gEIXQtGyVMscW3} z1+k`D`qRtlH^#~JA03dM$aEVE9*;HEvXK5J{XzOW^rz@2>2J`#qo1JvM*oo>1j^*w z%d2}B!$6N-+6T~w(66Uw(R1mu=tcAj`gZ!G^bhDSh~w|W_V0l1^|DwMrjx9WZ z9e9sHfOj*FQ9i$&>gn3K9b&@9!I~H-k*LWU0ySk4tZCw!3hjh z(F^Gt>6L6?G#hw;`KOtGivB)*KRpN?m+2pL8~tbPUW=W9fWEp%iS$_d1o|*~DLt3I zlzu1u3HoaKGxV+Efp`gqEAXtD$NqnX1r40xApLXt$Mj$5KhuNyp+VdqI1Rmq{lu|J zJ7LXax=|c2M74h#KkF)=F76G+dpkq*409y#KfX*H3uymF{_3lIr#KeqGK2 zeG+{NXK3LJ9_D8-f4?|(VFh>LcJaWAqS`jGCtUi%;P9PM69Z=53Kmu#9dbU}ad zF8I^wChbGS(O@eZm`V>EuJe!4*U%4(V-5eq4xgrXPt)~n;^^>dv%|9gaYB#<)Utu= z=||{gbosi6OwZA6^bf_c1wGs%=fu&0K3w3Rbc{-7PTi7pK0{otKZ6)>u^^K^jXqNx z3wV$VSW17K{wV7guznZw&oTcleINa6)-OlBEZ_2P7VKw%4L6^%z_00j>78%_k?97y zgMJ%*7`==>mi`buoBoVAws^V0>;L;KC}6=^acsi%T%$jjFJ(R)FV#rChWP>F=x_z| zqnWQ~eg^Y$29>Ft`FGRI^~Zu(@CXZ@XTfNuz&^sWd1?syE4C%c?-^vGQG)sPv$>mz9;h+#ATD;pzFi& zVw7ABy_0Zs%G93$3>RrmH_<)x8SOLBm(bVIAEj@j@1}o1e~w^z-xx`Y-etx<3wHnflTL=|jZ5Xwc4p!2$<;41EB7BKj)9CW|jnucl0)kIwc+J3Y7Mx~-IrOJELoyw2a+~#;^vBU5S)(<$ zsK}J-j}CUJwls5%<)c92P4qW9Xm7u^^z*+KfskrTB@5)c9^y`VHN9Dtcs;4=^734# zbzTRxEn$))Za8x2&)-x0RsO3=sl%ws(U0Ia586(24_0Ygr-!TZKs>7c%H^ldeLv1- z{l!;(UAf$0-Q=eh{ZZ~v(cWCA+Vc7go0{s)jSc${EBL?5_}W*k^X6jY{IC3iA1lg^ zSG&BqHWiKfy35|&W~*u&*1NNE&X2RzC9cX{A!Rq}7 zJPj%?9>X~gd~t<;-R=iHA6Qkd&C9M=BdeCg*L}Lqv!IiV${VR>Jno57hu)~@rq;=$ zF)~v4Fd17|#yTFgW@+5U%@`^D?lFtHsoaPq7%n|xiJw|{yaEGp4^tCmWayo5V1(tD zB9?Semk!VAs(viMu+$iAJ3_6_SP-Sooi0pJ|2a_@skZOIAkoPmR>&aXGQzRy@iNA^ z4l#;vQG;K|#i-+3JPy^c#nV|`zr~ZLI&bxasMPB^V*KQ?c^C=Iz&O=Qw|auqu`Qla z7;p997S8}Re5+@;`hKeiLo4sfjWEZURnNbT!KE>#^2D{d;p*~M&$ZU%Au8_rju~q1 zHcvOTN=Ax)@KRY{)ql;>a8-S_Fb-P|d5m(pD;FcVU*B=DdSbh$r_a#3l@H}+`PBLC z@XQY6$d*Ym-m@NR^Wd!VaMk+wlmPYBs7ajy+edm+qjuaCrMmQ6(oW%lPriXs*QX1Y9bdt-|Us=I+$Tb7cVF%P)AAsHi%O zA=$digMoRU$n{qRb<-!PhRwOd)bxx=7#;QB?l4t($BF=zHfP24dQ8O6G8badMj6|* zI%86ln(&XsVKQ%k`e@Dy4s|;J+q^GS`b*gD=Gdl{pDymC3Ko@iRIyLb3Q#%Y7G~&2 ziCc5cAyxfVzCSWhzrAK8gNLmu6Jhr?5wd{P}!>V%X?E%X3dtsQ$ z`MoeeHT;gTx1C)vOrx2Y_EX+8{ixA9dAzzbabZv8*qJ-DE_UFpPx+`--N%Qkpl9&p z{jA)?wg8HtM^pK^-%j$D$~Pid7g^J ziB6{Uo76UY)`*BTaoQ!0bE>5vOTM=Szp6LU0Mm{_zQvq&<PZ=W*%>q;nHe0uhv&*;8!r78H8V3xRf2(=`HCjrohy{N2S}?bxNOTv?x;n zPO&mI;w}fLeT#iAK53bg zHZc6&>Ns-y z-vZU~*gjoV?W-N))Rq@YY#7*ej-ML-?(%rmFwq-c*LuK{5K))@4^MGe-CIq$ojTT? zJd=CGs*FC@2AZSW)gArSlio#TJiOB0`FsQ##Uvjg3{a)-dc%Vwb;J*m_OaT!%b;#C zKHb$o>pX|Grn?I90S|Ro6Q*N$`|=*@qh0f2e4^F#fhCU4InlZSe69}-$S`q%J#}QN z`YYNMfsGyOP%l=^mr>c?!eDJ3Tlu!pGWF)Vh4%J0jmpjHF8DltjGi5zt!(d6L7ZAq zTCsoF}gz~cn&u=%QTI0@EdrUrr`#U!sWGp(3lNkU$_c1jj7-nv=a+TdzWK1 zTfl$9kAP=Te@N4))p_rLEqH*x63LTr>2nr{(w(Y4v58rQ%FQ>8g}qYc(|q!2%g0kXZ|AfHB01n+{&dxW473;qKht!dc7vC=>=9-Kr%jvLVM1EnF0rXg=y zO5I8DIO6iICTPfbdf{++^DhY8v^V3;*S5nj`5+ofD43((95T_2l@JcWh<%$7>oka130A z)&mWBhgW9w19wTAnnqhs^V=YpKRHH`*Po*4Duci=wo2=cX><`8|-kPNvebdu4aJaJ^ej~7vY87BqMkP-9VgSToL zE#P7JIiVK?NAW-!+6M;9f;0^o`A)WgjC?0spd6Irx=eH0a1bZQ0Z#BB7z;Ll;b05u zY?{+rd+2uL-F<226e!C(33}hb0_0-=pmCImLtq2q_4Ha$j>}z|#!m2Uc(tan1(XJ> zz=Mdd)ih+}J85UNrr`l)i@L$L5XXRbUU^_-ARud+u4%-A(x8lVw;ypoO~V4d0>9kd zq;VdUI{5&`8;Cb)8V!ugKz6SoE(6(t=0J9GjO~Jh7_bi8-|RU8@|0hzX{-SyUJlkF zUZ!by7%u|l89!UoC;+d6Pt`Q?K$%|#xO)}xbWLM8C@UZX-GN557Z0Q`9Nde9P16Vl zrKd8&o%HlFdM5|v5m1hSLz>g}gED_DxCiySG>x5%Zvbl%uhKMRAUmmF2EK&2w_HCk z+)QMWG9aB4MuX;24Vp(aPJHH34emw*t(ry)m;fge6U5Wl z>#Eidj1AxmD6G;n%0M|LJer0Zlo@A(_|H|KX-s8250qV!qiMLn+3-wFBOR3aG4P!E z{7*JHQV&2U&;LXOKy%P`2SYO`{oCjY7BM+217bqRd)HE^}cY@NPM4_Bh6YxM56t8Ix@Foq|;9C$6)-(b^+2nqj=D=-I zcQiteA}9m4ZAN?bpu~598&NMGR0NGpj8}m}5nl_=#RFqC6P4g&NXQ2cL31Ft4e&BJ zXt=>g;YFIpZ153yfu@lT%7UHXCd3mpjRc9Sm0e0Bqa+;+m3{?kn&Z9wp!Oi`^MiW7 zOX(OO)Mi>=Tj>Seq1LHb}dcqdm2d@$qSq& zBX~&@GICc5mLwy0f#%3vSj%v(WgGqqa3g(5(`W^;sBm+MOTtT2vEV)7=H5DkU`M$) z$dFgq%@JnJFu?5d|KsXx;Om^v|9_fBo2E~vZQ7)5nw~x&r4Q+oru5cRN<)Ltl%VBw zs*Q?D+R~tU4$3l$p!1Ebh^@2CYQjpht%$9&n6h;1EVi#hG5B_mQg?M8RVPaeKfQxdxAC7L7Uc$WpA=-+u+57*Lwz*z3E*yby&Eq zP8${uxyq~WdG$C5kFG{O87`*kcF(|aG|`g}?vovEih0>pquC z{W$K^en;Q-k^Q&uU~fN`b~uIb{hmP+w0&yRHf*fLqRoPuM4V0Mea8(N5pK(=BRG9+ zS2p%ySGu#26W*dyKjgpR0j`_Yh`p5N;h?z9GiZg+y1OjgozRLt3Y~o=a^Osa3PdJjQf5n(B7dhG8lqv$v#s|8AIvzu7Zrl)YZ8 zg;Xux>>1R^z9~K8zB{sNP>*-qLl;~%#BCp0HG>1{jgi{&O+Ecu?(ht33Mc1UuD_(_ zRvo>}M!f+mTv`fkZF0S?u!)#v?+0zP9lU8U?h{*}jjCCChqPt;vA7zedz{|Jn6&IZ zT#1Wq79|Yg3Y!Suaqr|-T^XJ@%+d=_ac1X*r+5YAsy!+^NA3fIY|QysZEOc4=G{9= zE8K!)PZ#g@40sO5-6KzK?p=1Y71w$On?v{1Zg)A-YA^Q;mW1wQ-R>DkHhgh`XOJJd z@5-w>I{7zd0&=4Z^L1F`ZRi^KcbI~$uo~`zmGF6Jy}b$(@DH#Iz5q+$A7K&P3*+!b zSP1t(>;5HZ-M<23cH?=Og&YhmFbe+yGa&DyxHS62BQ^oo<~rI0+*@EA-V6(&&3Uwm zxHjc6AKnOKkhwHra-fYcioO=wyj+__YOls@_GnicH@vG^=wwgYY*9NeHcQkF9GfL-2hM8P1h0UNklh_l;I&zz_2`wb4z7T;a2d1%D*;pRB3M121)EY_ z3D1Y+unZ>Pd9V!H?9mdq7#6`&7>A2sAw0+RxO-)GvKX0zTnMA^beI88gAup@c5(2X z3T<}ce8`m|auRHZ^B{XaoJPxDj|6CTN|>32&$(ejmL_;S_C`1xHo#f1-oCp#j)gi5 zGhr>94r|~vn1WMbHJkz~;Y3&t^I-xW1tr13*jMH06&5G@MD;avG4&4Iq-cLg^GMZ&S z05}QVEZqo?Mb}H$!eh`W=}I^OoscfE^Z#fJaTy9=9y%r+g~QMh=}r!wA?SA44qIU+ zY?f|>z0md2weSdZO1cu#R(RG}{Sx|*{D-48u7CpgDLN({g`GMJtb$!Q*25Tl0lN+G zbu^8JN!&V!Ux#jo&*E=|=5K~$U;|tZ>)|8#YqMCefE2WV1T1o6j;hK|jzijbP9rV` zEzHJaVR4Sh+n^nrJ7E`xis?4^FY6a>MYq6Buo?axdlP&T-3WKU2KWm0diWD`9sDJ% z?a7w;GmaWLQqYdoYWNcNO89+rIkbCY0=|g74Bmk*flt69_ZTMC~Sp0u(!bN=w^61 zY=Tc@jF7oCED1n2fS;GmZ>s9Yo+Z*u}B75_>27F}edT zgdCrit2w+I+nTkae*{}#0(&#GUBFd5Oq9gt4pYrA=+KTYyvf$VbJ^SB-PkJBV0aLw zU?~k%!w1ln@JLt=&&HmBc1)DP`(X(@6?+l16^O&}un?Y%y#U%k^WhI+49>-#6WX~l zM_Kp*jtn>lM+902U7Q8?LC(xDH;tWj)=)dFgKcm!@pkq(bPK!}Hp64FbG(G@G{P;| z?W{Zodp*1dT?g;BqrH}eqjA*0yU;0E3#;Lg*ejuRTn_E7oq#dyWzg&;(C*4bkas@e zWyb7<=sRHn?1McYnmq;&qH`dRBmR6hM+Sz?5JYzEJnfjO+j=ak8)J&oiEDt(DT`0? z`X%Wi>32hKnlh+Mt!_0lySLHZ zO!PcE@U47hW*Y0B?wXtFbyWW2rE{dqq+{+anpxJQPJbCjYPC+snr3v(YOmNd_2cf+DXd%fRMciwYjoeoJf=jgPwwYyx2X16rm0=#{%W-o z3Tu(M+#OMXIev=Y1Vj51&G(VLdFHN(G zty;yQ1AKcm?n&#tR$({ET<6}x+@szdF|}&+;0Ae58t5D8oZ*g}T9tQpbfzE77TLRJ znr}DFU>jBMMfpn<|E6@M^cT{#?k9BDqsjdqOly?)fheu9s_k0UX4ACZtk(Z2-7?t? zn^u)~POI#v@Fvybx_{KU+_Y^1wQDbAt=$f_`+(xxRR3w|_Q~!R+D)cr`?a0QTVZRr z`?r|(H!MtdsNR*PX}44D-X(vh{Eem=N2kWoBEP*)v+{4%?^69fyoaIv@lY4uu}e$_th#+iXN>`((InZ_TJ|7z3hf*kFFI>mP?ey4Po^ed*R-vF(ADu4GMowYxbm$ZQ0 z3Yd+-29RM-M3ge=sPuZ%#Ls|M!sH8V(&+JCKPG>*{I8p4z%dQjQVd%A-9I86ZGYI% z3^8?Zq5|@zmzt)-bZEtX)?vCt+Wr8d)h|^1Z=~bWe>cqlOEkbwP1_2O^6ecviv4d5 z6sW@KI4mH>dvPn3rtufaf2aI&SQZL$i}44_OM+$None#A8OD@OYP|J5`d)T)E`6<@A+`#F^P8|6=qHv9eIvq?byUn`Xf8Yd}@pQypV zOMfaI=2BolPbmHi)qhiZ2n-Yd%(m@M8TpOD>v5)OV9FB6__G3Tmi~wI{nG!Heo{L9NZ-NBrWrv0sb06qpDq7K(o>|#7+~?qNR}#O znSpC{_Z;cmZ|NDP(|I=mt(+l!w)6_=>!p*X8PEu||2_HZ<^NIWXaDCbV7n?5NIxY# zOS;)K1Nb?#@~ZsZ)7IXUUZnW<6~9aIma@PGbdmf~(@7fKtAGh+K))eSwq@DDM(v7AWz%#1(nlQa{WnVINm~{O zE3-_~!Q1L!p8VaJ2QHBRJ^7a(&HlFz8`Qw{s_=yLy{ZtI<~yjD|Bv$jO8)M7cE6MV z9r^c5e=Yr~;*V2%Umwl>w*ka(SjoxvdXDr|>64^SmtHD;iRs>aBcTSbkbj;0w@BY9 z{h;EnR{YPBGTbV|FIBn~>Ay&4Pw*@7x^#i`7t*Im52c=!2I-fipHO^};$M{ib@~4)|8nn7Mm~_?8dd0hj32;9 zsxU~phutnIBTaLiXq@f!aq@T1EQy$HR=Ub` zCbwyAfz9%#EZfw50K%04Pct-zC876lO6vpeTHcU*gffch3S6$P(kslzoj=R z{y`1se(B$JH}I4y+^h!vq=45{!QNh42e-@LgI6OqfUo2qVH*Dr<)1G9Xm+iYV)=h2 z|E2OLXDVQ$3=5^5^wrY#>dQL(k@O3u>2RkS{FnTHmOso6f&W?gv-nVI^*@z=lIecz z|5gQ@s(?Wg{fIA?o-SSOD@6XG_`Bp^DE}k!zbpUmq(7G4ulS1;|7ob%{}nRW_W-s= zU#Ws6+_4c~Bfov9G=HxX`~c6F9wfa+@!J)DoBZSC-zNVv@;`0b?*A{#@QMQVOMfW+ ziF5|HO&d@@js+`Yq>qt4-gG}MWa`i!MC^l1T>8Rq=?&;}Eg&}6H@MXT25@PW-ex+= zI~(aR9mODCR7&61gGt-H{_m61FqZsVr&hV9(7pz4F+?#37U%yk*xsT$>;evWyk zU-Vj;<2Ijs^#nI1`mcf}YtddGG1 z)27XIAH{AQ-gDZFR8_jAPhFSes^+Z9qr%?O>TEZ0@y5|^=JKi>cl;?=5AQL< zeN?h&w0n9vFYpU&InTBJJ%6YhcxlyGcjGG+quiJOS{X|_j&@6!MH+pnPj7d}rB$Qd zmG-~nAG3P7qT$S3K4SzESO>4DI*wMFdyXw|1LGU>T>bCYk8>}^SB-YRUP1UnZGA?# z%=EEGx>+k(%egHTecV5GugFT9R;XbYGVGOArOby;rjI?^^)0U&MS~x{+^4{u&$1iy z?22r+Z{Dim?vC=R5w5ws>SXuZUCg5X(W`xqaaUeemF+&BylRxqqGcv_P7mf(zS?J; zoAw;j?xwq{XIA97*?+9)>yDjzbvA|`dztxM-E`eDclV$AjB>B9s>*U}zR$$&&Q(=M z?CgJe)dv}_a{k(p?#G{2jB{Tdc|m3`O?7_!AJ-l2?zm)QwtMV{=N;+#U3p}NZQ+Xs z4R_PlF1gy>89gK0U9{+G26}*5y7fhCnJ#;vbhz7-zHp=~DZQGRmo^ib3CH2oRqx)+ z&Nho1v}$pVYmB8>lk3kt#U}Pn`(}2pCiZSxuxP2b-EsEXW97Yi72RYm?B&k*d}Xa` zop*XKw>qnoxzJ|&*^sN4?QBb1USEHTOWk;GZ+H9WOv%R9+r_i4Vxq9w8Z#Hl_UUPh zj`gj4p1Cm7O&)sH30~G;S2fYaPG8hJW2PT*0l%9aG19%iw@y zm^y8SduT(|<%2WM^e1aGC!UpzGhNkm zA0@?&$6AY3*~Hvo_kKA$HmHRUsaC@Ju*N-i<$#ec`lE$?-IOiEN4TqooR^)RUuBb2 zt0pt?`_&$?5wY=Moo^a$SHsm+?iar;Ic`wC{PwMrl@9m#!-Gf@u<7jaqq<)@)oQ&8 zd9`YbDY{tW1|7R$M(&KTQl!=+(!#~vBBEFE6Ee5=l$&M@QiKpGJHg%c(&bq;gErH} zewh&)v`4PH)y8I5^>L4p;S}OQ7tQp>CXFD^jVUGy?YVfFNV zxqIWs3#X52I@MQ?bLF&BeTEO|O7ZT&P2EOF*MiU!iFrht*#F@=-oS=-dmlez`iPt& z@9W+-Z3?Ns!98&HX~zwYeaqj@A#=;6CyvUO-M%!o(xG|{G(E+g{nDn~V{hX16h}tt zVP3M%|Nkc*|Cce_KVEA`1{33+`~J}BJ8!$G>ir{JMB|LZ5ZZzEg4OxtCqKe&+*I z$6lA#bJ_CcZr9(&9<}q?zL}$Yxj$dLF1EAeyNhNXv2*jUt9JEqJ95vA?u_lbaBI5b z|LrdI_oDQjoi9`sAK`XaZOTcD_Hqv_y(};7a4&c7pQ`fQo<~<_xZS5-o8#t`Co_)d zVB|gAUH>7O#jeC<8E*da%W~4T_j4y!tjJ5t=A$N#c~e%8LGFQ%uFvZ~ zXR!B_;-L*2!q!u>GTgS+D{}hhW_f1TV$y93^qgS*yh20N#G{Wa2~8_n+FSnN;r+U<*KSa4-R8-fe}icA zVr>8wM)y%BlOSy>tc4Uq>$Au+m@oUcr@|Is=Y%ev=oyTM+58!3`=Sso&4t{TigP>z z`-0Kh@8VMZ1olIoK_|qXoMc~BHsWaY3~b7*RcM0Su$!8+N? z#WMI9^-Dbin=xzk=Rj+>FeDSp^X14AGZc{S863{>6>SRbS}Gp&45!XogU#qivG4K> zY$~nUx5Mq&8$1J>F>Cfsu$cc+#v~)JmcypdvV)5&JcDw$32jqpVK{}>8nCIew_z{# z4Cce1qiyOe3<{vdWx=0fk9r0f@F(bW&%kELh9}ek78-E0dj|X9&1joC3xhq-8r&r| zLTh-tXV3s`pxZoytS7;d9-$vMk0R}dM_9y7=p20Q+ zZiO~tn@MW}u8@6+IA1J;c7o0D3?{-Kp>3Wk48}w2I0xFWzae*hIe8w@(kj#7r;BPPxK7N!`sm@&mae0jn486`oZ<+ z447mgh_G-KhQmAjJD~+FldK%!P)N_?1Q(WTRnq4&<400eh+)IXRr&}8aH_c zJD|nc{NriZw+)V*X$#>*WOLNw_%4pkp1~$)_7uDY`v%XT5^~-bS9k{H(9ZAWZq%&n zvXl8ptJV+RfH}i6u&Kx?v`s~ZK^O0nEbbuWLQve{8MMp34{pS6bCY4vBKt1Lm8ZDL zGia2(0WPMgVwpog&WW%oJ=Ay1_iRm#4LCY{-|fr z4_=4P@C+hwS{k``4n@NsWEb01=d&5eL1-Pc!)vLq-!rg3X=L_2qWv838vMIFgC^Ox zi(6qe{yNWKi|m^qpPh?SMmA-zL5@nuAyr)A8I;Su1lloJ<{8+Z#j=6Shjy&SJ%d8; zFP`BU6hMm`@BQJlY~q7l+55qyb(p~d3=Z=#XdT)nYQw-LYFh&xa4q%&p22?E_rW#T zTRnq4unOJc8Q9M;t^QWn7kiy&U_aY5`=)^$N>}1YVSvE~Io82U?3JED1w0*Xe-;Y{ zCD0m}53S+2XD~>8k{>YhO-vf;SvIudj?CO1r|ZuWb-|PIkFc( z+hP+vgYmNGLfc|Fo@#2)_5#mfB0LYB?-|6P)z5;q3!|PvhU^h&^$&CEBv}Z$Sg-~Tc?JieHLzc7 zh3Dem;~DIhy$RZ}u){N`mwhu_guTWyNXfnq+9kQtGpOjx_P34_7;^5P-D%Qed@Nf1EYGmI4c_b>X_6#azPl%;r5zHZOzGpDU+mn+DSU3g8M9*Nn zcTCEHc0NZvgMPBx6rdBaAI=CFbU_>7L2*B{P2T1i?2~;rJQ;hlXRs@@bN_E-;UpZ} zJ%eqbgS!^wuqdwc47SK_`7GvP-{cwQv#pX)>7)Mul2FszvmBG2#ON|_V zL5Upmp{-fmGngZLff$2!(BygsIkNYIbFgQ42KI{HI_m1}SKyFm&ij z*>N~ZF~Go*ci0P(BG0As;Y|E-&tML;vtb6Df!&gOz#t#m*)ZNS=;-AK)B^3wy4y3b z?_6x4JB-*Hd$Ijl2)4^n5AF2W>KW9@UIV9M-{cu=fc9#&TK)=HfWO=`ST6e#I1al_ z*MdO_w0gzz$F1Uc0_J!I6BUr}8T5lT;s~5f+~Ffa23^qXoiHE!LC>IF_C0U}_7=}z zx7l6Qd!)LsYFm)U;;!`!HizzqaG!7PVx*m{MV`TYb7P+&=0odsyk}sUO%C(=(lVRC z;842Pot{A(obCo4WS*|=re-7zc0g;k0oqpCCS3=|6Su`Pu*4?jx5Oqe*aWR!HMIA~ z>pX)>*_T6mPn_@!mdIX`&hf_k-{N8n_8z!MjycfY0~dM*Gi1+)_TG2AXAqM;3)<`2 zsB}8y$+0-%8FcmZ{zINYC$s?{=;@AnziMzF-i{aVGnP!CbjWw|o$LWSNDs2>?I3M}w)Wehg*SKxTj6v!kMKbj zz6ojJJeDxvWmW6#3;rAMhDUs^yakMBsZCvlWVQ)&h@5XTRi$lp%h2u6{H>6$p2FG4 zrW?_xq3h+Zg{PoX(v|QebV9nsat6%95SO6ZCglx8O zj{e0kfxZZq!6ojYpBE1q8fVcavll{37-MJKV)yu(_2&&LLfUC$bJSblsjkN-92qAf z?Q{xYJ)Gm-IIA){Oe2v(&ca*`Evri%l&rNp-3n>hi9;O-&f|W1|%i%znfXp}v zXUO-5CFp*z2=;|>X!$G(VINokGhjaK4P&quWH4b~3)&8|$7EQ;J#j=}8tmfG=m9(J z7=az&Yx-`7U%@u`C2WO2rTn-*w;9Y z_7s{uANDl{T3<&)>uWSjKsy_(uOrdc*HO^=;>Zb4yYa9PJscK5jx0Ovl9354#4zN+ z95@o%fJQ+Z& zat1WRm(fk|CD;gg+8Iy}_n_Ha|=l&<@RRpRS*S_Nki3$pOu9 z9|w06EVm>?jV#!u$UbiW1xG!63S9^71gwRBwzC1=fIS865>^fOVy}eHqU}@nXXpfM zg=O#=>?QCVXrH$Kggp)|z7T%O@i(A=g_mJIv=fWfYb`S5oz z2CYI4w7WwT{uX-%wD<_LyG0ili080(LW}Q!@1fgaGi-wv-wMx!E$~_F&CueTGT8o| z7#cA=0~?@KsE2m3u7gj*T4)t&;G-}Fe}lamK7g)-KZoUTC-wxi_%ir2SOR~Ey$D)- z9R3s*+8>a597lm1`S2$=V(=H(b7YUg`>|)hN3ciWDztqpzYp5S@t?N`nK|US~h{Gv%{ui=f4HZCplE{aX zu*aYsj5*MrB%*L4_6%sdAOh`Cz&^fDfcEj-E>IotYqWiQKN_|{i*JSYs9+!CkAlrG zX%(7S7z`WX7#t1I)}S8RBT60QcpG3J@XcNW+tDe=7zR{BJGd&LJx`QFKD-V{z#Z7j zpgmudz#gy&+KR<3AA~(<N+Lo<>cG}u!{P1*zcDg3g+5Q$#hQZF$A_c^uou38L`Or>F`;0z_0Yu<~ z=q?`Gw?g|&elP40+r>7q1zN|=&`#qY#1HT4?8UO1c`>q06Nc(9Y{3 z={Wp8Iv?7=a$qGo1KNs3pq;)QY2M!kZ$-C?$rcvYVQ7Z7PnzI&VWV^dyainkZ-#a7 zMp!G>!0@gJlh~`_^{^6N2g~6#FafRoGI%vC@l1vvL2LkV3~OM40`uW*=%{oC{2scC zBgo=;ehZTp^7Iro+y>v`aA|?I0?p8#ryJ$xxCo!i*_z=B)xr`x|5Gej$JKBXWR&3= zCg4rz66qp13|$CqjSC=k!%qgb<~it%Faz2ah`{ukxXk^dd(7~1-e^zQE)?4Im> zq-l0X4UJeiL;mi`-Fp|CPT+{_H3na17<^n6O`o*b3Ilf39?0QigRh)Jxwj-5}j)ng$Eh;9mI~ z<^NE+NxJ_a-(j=#vC=Klr%5MUWmstjIw({J_RAm}ahv=POSen!mhO;#Q@T?+ZLqK3 zB|S#kzWK2dH*GIUV{~d|wF0{TZtU$oAhJvTmrS!9*8o3My!{ntD+7l34!i%%>?G5~ z7b*TM`D2P-ZQ4?JHjnWQ+@gSd1^h(1K-zvjXIrFD`c3J$bXpdE4ytXO?^cdAO?;93 zr%RVeUuN3AiY}SqE8M1lG6g&$osfRPH1TDMe^35$`7?+54lAW6m}WrRIp3|6%3m%2 zT6EGzn3CacRj{`?R-RLZ8u{DhPspD&%y(ET|8&z_GupL97n)`On-zbf;_DRu&@lGD z1vDz)BL&nez?XS{$10=wZTe$v{vPg+)z_A_}iWXP~kIx4-& zG$T%pQ3ca9IA^fedrUKcN)6xx>1yfdNZ)>r+M8mU_7Z-DlaU1qh$&!&X&Owa0hCW^7T+9d_Wx04po2m+c#3pf+NOh81^X`9 z$_CSHf!ZNnKcV;{#qX6ak?vG{ZkCVF8%2Fqu*O!!lOY z_o{(fZJ{Rl%jN%@bfxrXrWvsP=^!h|=lS-l@mv3q^JPe>LbY^_v@=Zuht8e<_`ke$g~5w9n3eDNOwvNmN!ombO_|Rz{Ea4K_-bNHjw*mC#V6n1V0RyCOkv>K`Oz=beZ0V=uKU><8!q`5xOR$x{$#40$tb8b4CEeRn zoY(+vlwq{=z0$Kx^FUdrO*&WpN98|HdWZCt(%pHrzAOC~`5%=2hjenM4BdIO{v`b$ z1^ipOFGstTuce1dXCLcVAXj>dbb<5&={eFDOBZ>ajI5X8QU%;8T`B!j>GjgjO5Y&; zH|bjG52b%1-Fu=R;4h^|OFtWG_Wvvy{-A)fr2j3wQu?rTQaYQ{$4Z^_IO)fwPmunj z^y$)XN|%|o`_Ew+E>ghINsO3-=00TtrMuH&t&+Z9{+p!j`e9|O zv?T68q<+mTj*?_w9W(}9_n{Tc0TNUZa(hH?$N-vj=+xc(h zdNZ)bH}PO$<+}>FP!;N>Z<79%^aIj=mi~$Kd(w|dr%&+%eolIn^dItl|B>Tl=up5} z(jQ2dn`VID(*W1V|AqXw$!~x4*vj{%>!lx5d@s&_D^1ellQQg;VW#xE(x*!I1yc{rSFoyRQeIq{rFN|H?t?~`Tu_n zzgLCZRpE8h{rO4QOyA+#-_nN_f4|~~(y+y^Q2b=+b~VP1D}{YHt{J8{qTuPf41AfR7bWq=1(d zuuT3h<-b-sjZ3l>8;CXdisHA+-&_9Q%ikgY>+$8abt!(abaamQKOkLTn*Jkint@I9xJG!`G;5I18VqG%=6_ZG$K%UM|< zZMR)33F(WauQ5$~KUI5oOFxOW{v$tEg*#MXw*o#^h1aBQK7p0bOtT4dbj(k0S&NLNa~D&09p_y1frm962^8o*4`jCj5}JX8L^$-h$m_423W|49D(mB< ztAm&s=-?>@%vQi``OlG_Cw;kT)~Ezp`H^Yr?^gZaD85+n`{aL3{`b93Mn00E*IYlM zGgV=06|qkbXdV zkMxhF-rZq~DRAaT4dh1$-pKnF{D1^CK>o&XT@Sdb0FZ=|btJq>H3m zr58)TD}9-C`pHQ@!fRy6W7FAyYNZRMe<*#9^h?qe(yvS3B0Y3WBrNsPxzfLuULd_M zDZ>Rad|;Y=SaXVRAa6c;5SQ8_ua7c4mEkzp(g&^fvkV zRZked!|P<^2Wqfc0sOKn3}}!(PI|j^f7ZY{Y?0=d8=-EL-m5k2vXM}Jo`FAFABk!U z{h_zlHnTIFJ$-@#G8C{{0p0iW_2wT~A8FA2{Z8|vGo+7@zf5|O{N2w7m1%C{mnC_w z_~sjUs0chR_|d9L5w(_?Pe4HraR@q|Uu zod=Izla=O9DbJkbDvnt*${ju6f-x?2)}T@D<@#l-TalLv{bNV(Y@E90mLuH2H`fhyi8t5va>o^}IoY+|dQ+xrf2?ArOP{x9w5#n{ zm+$UBbz`Rc{4XoB-7$Z>@8I zYj3!AsC#yCbst}CTG7Ti?$$k5j&;W@u0G0j{%z$6ZrBNHPE9K)bUh9&n&%!ofxezN zeoc}4Jc|^sCr!91Mv};ii`_G`NkUpOkYukX9a=QO4Lq=Jq}x33n!axHy45-E#I9An z-KwSJaJ^^Fnt5*9hpX~j;e}NvxsO+8j&{+zuj%DtC$1Um;x*T1y5k34Gc;|+4C`== ztN(OSy1Td{v#-l|lO|I&*QUECPF!=g`}mxyVLhkLAP?*6%$Q4buAAO->P)7EnJP$T z7Pz-M*X6ptlh(%4W*+xVTbb^Rk7(wtmr~>0cVeZZU1Ksc>NZ}Hd4_9$?2Xk$-m9uPVm62mgA*39c@)VuSxSQv%$#yUQpmMa^`1p01u3!7g zVXp7VR}bqsZR$+-c&zj|ci)HW!W_Iux%G3`jCA# zkskKq$!piG33IMapEXM?6lZ%Dx`#d*%}5^^o7>N-6;AbbH}#&YMp+Kq>1PdhB`s^G z+g!Z2OLN>~&C92_)GwAL?tS#40@rx%4fnXjIcqAuKd(H?)gHbi&&97iw{nWaIJs6@&gy|b4HG9ee9wlms)#qjw|_K<@K)p!W+m*yy5&D*Su=+5La^f z;@-?ZeEJ`ydtLL_=T38-t5>b)&e;1=eC-O?IPI(zuKm0@~Kx+k5YMWX>IM zMmi&^8t!iHT{_3LrY#)a+i$sP?zwx;8}9Osy(ZUv-CjD(Ro0!e(oI>rYLVOiYGR~I zWL%Z)-s?#^;C-J}WVz)>ln!-gq%S%&%3obH$;HV3o1sl!=*HyVIMOAHPm8+NA*CZ-?NJx>a-HkX9TJAQ#AB6% z{Zh&4Yx}rcvo7lER-V50RBwCjvC3mz`w!3Q#fh6Db+6Tp{%7To(6;l-FUrb#xWvV4 zdb`w=YXL+!wO3?i?X28*ZdMOB`s!6f6tRE(U`u@L z8n34tDh&@+Y{4RBIWGC}Ii+C}ZesMRd{=vO|L0xe5^f@uzZg5+-Fd^g!`yMNtsml2 zOTN?FRSvpJ)jAd|y4q(de&wInDgE)dtWu>vUO(ijT(|bSOLN_`zaWwDl)mib_M$}` z?3Nt)5Bn^=u7?J^mX z*~er^c02l!PC2ygYG*8=?d@-DU$19dgtnai-Ejwok+QkuGIs2sUo0KtUd}E(&7HY; zZOP8EH`b^3*!g5mX<-ld%Xv2qb+PL*N80T*eaLiPzlKNVY)%$GVeZ?@fCGtZtrs9hmZg_O9nr}ho=I`?uHop#1(OKxaofqF@} zF}DxHKPz?Q$PwPv{ZQ2y3+Dqw+GzcrdF@#~!?Gpow6ey7zoL5AgXzk!{Dge=mu{_$ zb<3vFdFsInj_m%(5$83Am5!tR(98G?bd(Y-Px7v~hL+DGw5?suLcT6ng5}9RB<2w* z=Y@!cWE9&5umsDl_PuXqzqXg97L#AB49ofi-@O}aXNDP;N94=itnTYnub|l7QIs5g zEM3^h>JyA+T$oiOQleonL&j#wguiSqfNZU!Eh%+>*Kh1q!*>3C$=Zo&y?Z|LY0tDr zK5;iJxqOH_xT&h2tNhi*ey;JxYBIdPdqYN#xO?bl*JiuQX)DrQ!9UB>UDKvD{ao`n zEb1H3H}MI{3KKFSqg~b1%B&u}-0L5&&P&_T%cphT|MaSi9^>8D zxy3`>Mb~Hb;&VVax5K$TNP+;5BF=t734=Q6Ez*|T=t%sVJOewWO|O%#gw_r@ zj%>Ddak*!Zv>ZofD3hTS@`Lk9maAxXk4Qz1=h7?~V7FXFyfG`z@C+ib5Pdi^WMDrk zx47M6Gvt+DvHe&ThAD}7g;=}|4U@rE1*XIekhh@4HaQZ8sfgy#prst*bxxRa2nKV| z*0D{3gn`Y0T8Cd2Xv)j}`>mbWBIK+L}><1w4mWtawgErY)p{>~-&!7cz z#|<<7z@T1nHE=BUO-a8HX7D*0Lp2%(>lA32d#uAUcohCp&!89{i7xUC=0l4sgm%!) z@CAKIADO z%)tZ096YwEZDO8n>U3!B+e`;L9S?dYgH{&I(E_<=7w`5AnjwQP-sKrILR*9Fo=YpB z)hmHKVT4I^U@%{HOPZ67y}&b=D0>WY!W8F*B#Cs69Nd&59GJ!For2K z2;6fPY;84!);H?b9vzM(h2*>_-ryNjhwd@=X`m%Y_E|BHd&VFRPjqMF9%BO?kFM0Rok4}v)|vtc5~Yf9Wqhzv8a7 z6Gq_~Faxrg!;Nyf{4;E$V4tpyHdPyK8tlY=4RP(zW=6I`#yOx_x)H8N*V{(0fLaV! zVMsyKm2fROAzcEi&~fPkNK80ji;tqOK!dQprRT`Qo)2w`XAGu8OV82I;^B3~cUn%# zQ5ZUSP|Jnwa3pMlBcOf691dF`pZCJ_9NDl5ZIe~&VHT`|LtriBbO_UO42IR{LC~Hs zdEyMya&RbxSvdy65_`nuj0n?m@GIajEk}P?fSpI*FfGR^j5G(`7afJRYwQVgzO6C5 z8+K*-Zq+9nWJZ#IP3@z++)PGU_>}zBFliMkS$G+iiwOmki6zh)Dw2*vYp4)5!vZlM{t6uvbKq0xsC0%H zk-f`uNeq3ht2uonIXrsS`Nzebl!C*V$W z3AFekxC0i#U%&$ROBj>Rflt`^pTWYIF^R-?kHH$OgCD^f=@jfl+as>| z%i)Kx489Lb;6WIN@4`a(4$OxZAA=px9(he?z<e2uozd<7femu~jctLILr zN9G`>5N6HWiD=E+Z3~1)lW{CxY_7iCZTOORdx(qBm1V}h08G)!Zb3o|UInPzY;@~<+@zYOUb`CFxb=KaY?_sjl2s6vhc-ja?< z_oQ*_u!u9*%0kn`lZ?3#DHRHRnKFhA$LQBt4v+X&sbF&yp^Y zUTm7RZ|&5>{dRJzefH+nRXANLahu_Fqp2BKEpH}CK!m7yQJ-5&5FIcwSC^E z_}5gwUiu5^2I=8!DVyw;8sY2npwB%BLqdiH3W!VFJ7^nFqZ+tYx=GqTdRYBt#Xlxp zFa5l{+XIiD(?GsYDCL59gP^uV!;1#$!xCVr6Pw+9`+{OjaDUwWhTTx|+KkC^b!=IF4kMu6-m!%(({z&>o>2IYEOY=Q*&cHX)L#6qh4W9x{tNORROeI|Xk^v}|NqelIn-Z*=(#f=IWDSblvJZXLl zg=wzzDCu?5=Sklp%^_i!9+X}o{VX+h;a02?*6(@wHwNn0sj*kI?}l%yfHD>Eh2nGi zFdCPZ(qp85QT+9aPvuWYRLIZsG5M%5!<9+4ehen^w)arxu1aWTCr zzfb;8&3gm4B@KbLF2bf2sU)j`! zqpPw0`SmBJ`xQ_pyfUd4zI5Rr>o2C} z@xE9Fe&>%bGS_9>fJ$mq);7}WDix48*y{JC+dHcd>}@M7kpD_*ERna>;7!z6B9CZ> z40M!+zskTbB{D-S_Ftw~l;J!1Kao!CZ~Z?io(C)@e$tWoFO|-g-YR{b^fS`)_^n80 zI4(nk0cg-jRj^IEeL#XoR6q~xZcH!Azd-RHNUxIqM)6}5&+B#8$KwgpFn2H;7_O6{ zKmm_S&yxOFdKEPqc(W?FN%~IdU5byv?#1+s^dRYX6#uN^zl_RoPzHXelr5a53{i9g>d4r4t*N zf!&jdFXT{9l+Kf0Bt1oXtMo$YC#;ToqBNkw+f_lO0{*KEd!+|scVl{0daCrN(rcwp zQlq@Tsk{{Ip43g!BdO8gXWV$~|L$lyFnq28LJCO1?!~lT1@zCf`j65%(tlR`RK*{V zf1dmwO0Sl7N7un|;|AE>^Iuo&UTo186)=PvExuP7CP?p=zC`hNC_XH`Tlxm+SETP# z{+E=WyF1H24jtt@9ae@8*q@ocP{0tMD?J^t@i9ZLbS5<#JW}!b($l1;OD~gNBE3!e zT56Ox&8PGKP8lv$1y3l$qss7x{8!2UFZth+pAVQ>;63v9k*<**O^pVhRQzQ5|KW4z zA9wc^&<6($rmLy3j_%?*Lb{C_hw4HdTAz~+N&hHaHN?h`!lGq-;!vwEmClmBUAnNn zGduhHFhlTEo8c$vu=FS&{FsAWHL#ExbKD9t&G%XV`SNd|hQAGDy3J?(m&?DK8vbY} zovmJ?0S%~Ag+D683S~$}95awi+0lm9mPc~)fpvGQ-T{;20J1w5jF z#R_R+gFp72R0;Iz(uNA2(IEsw!VFLA&Aw8Py-PbNFF zAHz9-iI)MHzxk>3gLI4hMbaE0jj2)vdaziTVo*4H+3?vC(<8A~w_iW-+dOVB9QkXZ z&!fRB!)wftROLz31;?$@?H42t3xK~!{%z9LBTZ85{NAQf7et6$~<#Vfj=GOTa^)<6+uEaZ< ziRhHjoVhW3}MaquAiVX8?;-Ze7`5O8;!AWE1`OT4+R}V1to4Viyy{j%l zKaCexr<)b6OFEm6uU|XEtbT5FhPmg()z_Jt>6<&6i_5x9Fc~?k`a9Uxj4^)Rg!i9!T-&d^fj4(a?uT)bH>8fOdn`dg08HepUXVhrF@7I)*n?Kq=dTc(r z_ar^hE4B8C4_Ci1sr?=3+D*gOy!myzGRGfFOs!qkZ|#LQw41iwl3M%WuC;GH-fl2+ z>$|1ZzH!OAZBzfRY14!2-u*wO)Y`S*tQ+0=e^Gb?J1s7E95#Ulyxn~Cmvv{Q1njQk z(H$?ovy1!oKPShHHQsrfJD9tifr)%e4SR+saVE~$X8zc+Tod~Hsr*2x`;rOasT*cS zuDWc3X&#Ve9X{8LqsTC`?e(R}eDk(5x+ui>`nKRu&s639|La@FSz&W;#^&B8^lpr= zf4R?kb)oDj&$2HJH-ym^v-gEyZjVZZ9L0HysnTqF`V{x2?IGzphE`yQWh%?FxtoxC zm3?iyy^nCYjqtFGKBJ4*;0dsK^W1CmdibpidEHc*|C>3fdT^Al=RrlVe&9KJ@%HWQR#akQV$+h%>@z0~=%=V=9N(B473EutsILYM z)l1$rW3Br%3%ulg7wqjp{Zv1_k|OB7Avm` z_7qPwNeQKAwij82lQL7Wip(m*3BhbDjHVCYjOzz1kj7njPxXxd`*!#jSl0aGB_qDM z;xQ|I!|)lOCp+{vTd!RiG0lmkWu{>93co2Bw=lle+o`m$n+d(TET#6k-ldZh%0|I(pEf#jH#> zWrxGb=HPj2(qppC-hz$&6016U_T|MDd~cdZU5$Q1J63x8d>!W*{VD#MeI;IgA5=Qt1kK9$m^^G&rK8;1%*G+5$+*n$Y{#`?vg=4SjY%ue zl`4IyH~IH%VW3$sxU|YtFI}2tW{=yFW~$C!c#g^RF80-)Ikfbwgxa1zJLtN3)>Rz_ zo5r8I-DzrWU+On^bv*MFx)w2Ot-0{x|wM`hYqV9h&T4jCl@|BwRAyj zY(u757%ZLIVGVBcXPSEtp$pCI;zf7|KZu?xElFn6l0_M@-tLz9-Ob(07G|0c&)bk- zwk%(m7UMO`rk7^M*7Y(O%NJ(E7ABjIo>`I+do0;Jd+vse*pt}IOJFbRZEo3(m+6o7 zHk)2V=euJMu0zA|K735QS$1J*raALOzr+p`v1NBR^G9q>j_GgazP>RNn6LubLy%-x zdZX1bTg~eimJTx~UfI;gWY0kF(_O2s=@XM-j;CFfN$iObZV@vx%qEm*rp!PFx8^dl ztbICmr;ReZXOv>rXX4vd`*6_4=cTgCKz!3EI|AYxM%iHyA4|$E21kKG@E?3r&(fI) zCSt&2@;%rKq)BKej~e;XKGg*$6T|BKsPbcssTP6UmQK91NBSgwEHbVQ{1S1zl>#~~(nqD6LB@Rm{ugmgmJV;tP;(GU(Af`0zk-3I zRD#ZKuob%6(&4XJ>PqSDAeU4H_zmn^EuC_ZOKOYkWwJ*=#;*atMSR%ODFGQ@+#f%i z>ELZI(3uT#T^E5TV4rE}1VLsflzpP?1t2$GFE|q9_@RHrwsgYMIR?_+1U?Nr?+<_u z2PSFfmSpm{45bhd)E(B)t!Y_zmUqn3IVyV-_yFvOEuBV?<#lLafLS@Kv{!T=Cs9Ttw{-HrhoJqIP8P_523tBlkmaOXI>{i*Y3qZhXs~lEW6(JU(%uY4x!v#{ z0=L7%ax{S4Zg{f+boR?$19JP}O$ioI3F2xju-($xD*Hz8e%K?HPFQx{-n|d@VoPU1 zA1wcSVF?16lEZNgREa58>beElXL`mm+5A7tD<5dQ*v{RjV? zo%oOTGLUn+(b8EXdolPY*cVtjv#mXv9Z*04cn1Q;TRM5Nj{qxS&$4s|gKUt`(n$kZ zaUy77kGFJMa0N{JVUVk`(b8#o$g*^N;CASAOD7FvL%bjh?rQ0@ z;pYzRAAo;^y~)yPl>Gq6-Mik>sgs>g=9q6Q7~O_|a!i0unH+0Co)E*9P6@~pBA@wz zP6%WH{JzAkum>%jLa+-qwuzQ=@Jr3 zNwx(wf?QGuEu914jnMU$4j+25!Wxj}?zVKQWv>L+!oJFr&#t7h_(f0TRM5Nr-_N;Ni6?Oh-UJ|G93=wLb0K(1r2bUb)1 zG`AqoX~Vr>7JN)R2y(Y-uypEW-v{!LTVv_)(H-+ui521&5Hk`Dl-UU<0$zuVYb>2G z$c!P7b28h~DUv+^a!xob0OzDY_B@a?GD6x1az@fEon+ZP;5FR;Pxf$Mu5{W!W;|i( z90S>aX0QzQ4=kO-vL7U2Z?JR@$i5%s5wyEMn<| z6%Z0S1#-*= zar-7vWa-S5Jpf(|d!eN>5nKmdVCjqp-6a5W{~lrK43<3&bdNKZPFLCEy;$yRkb&Ln zK<8w4xBF6{&C+QGS#Se50&#qM0(ADvUIVU#oo``)&Mw(2!65A0EuAgaA1JeQA|T5x ziDKeH1QuI5v*q9iYi7Y7v~==h_k$~7A7SZafyTRQ0=ub|Q_on(+#P+m)?E69oy z!4lY`@pi)TfJgsm!3-GPI`B?3ZAno-cKgc%H^jK7y z8Z*+IvZyq(6TK1FIvrM57P)ez4Z2}b>98CIbyX33EOseo>|__0P8&%7F|nC6N08fH zT>Bx55MF2L@D)w8pjhroNbXpCvlDbGT=!YUrQ_VDOmyYu_Gk{0z`8u*iOwu+Z@aqz zaykm*SO}m~@4An`jk*0EWdb>iOH)r{8AWu0>@`NRvl!_U**R=73QM+h*hy@p*^KON z%Q%Vw*3073VJP$!i?7<99C`pVxkRxuU753_beNlUuq)@oi>&Km?ZJ9K!2PSPxJGFr z&0csX(OeISV}Ltm0ChF=1n6Cs&Q7p1vQ=8nsQ?}Lw_3Vm37{!UONY6ugKtxhhr7tq z34$Zd^rg5dj^Eu&-6q{&)x*dG9MbW9^A#2PChso z4ITjw0@J~f<}8G}rL}Z)``!hPS~`s&S^&4ZcG$})8>R83Y|z<7H%ehICvq#uvpnB_ z2b~D*=6PhF&Pv&riIpbP46^UiDF~0ZbdGhfjcW!O*9Z;;8)V-lva1qylx6OwGau+Q zguhu}9b)cXX4gHeJ$T=0d%V4G#oj@qOpoQIsnPdPWe5^} z-uY{`bl9Js_C^ptO#%lkod(*?5wzdk0Cz+399nJZ?4ldl*rkZ%!!K^2TcyiD-s#+E z=|pHZXRW|y!uy%CA$dP@BF)Ioo<+El3*=cke%j4ugk#&gV}-kjpJ!&?_N~St0>{(9 zE=z|U-?@w{E!}?X*d)UWFMt_GtH5|mhkbz<&dwEFCG5VArXk$jB%2_ylLro4I*qP- zWqWDWkjNO=W$Ek$-O4SUA`l0o_R{hovB?Mgmd;>slsUrEmArt)NhVek&b6@!cmfsDfe+%o`VEsQG!(-2nxGAAfWMCqg0RkSZ1y>&jsqwtb?WguB$c^a=kQ>qEU>FR6#o#C2k zcoA3_XYTfH>b!Ucrn!Y(2y)As4rYNt&<9Qf)4-{q7n}knf&tJ2P6pes+%EuI!AW2X zSO_+Q=Yvh)d1mvMt9o^-$K*LM)q!W59$&A_jA9f5_sh%U!E%_-0L#GB!3cO77zXpf zVsIQ70>^?y;21CnVsmmkxv_J60rY4vAIt%{U1KwI`?!q)eb6Jpv{+oiWn;n%!>M2* zI1KcF>{H%`jgWoFTS07}NiED!TDU!d&A>0Hy9xXmYy^J-8^DubJ@_M72YwIMfGErD zmi8T31^q2p34Q}s@OjZ!m?(z~@DtDn9s$$9X3z_M3?_mffq>f)xeQFkF2pLkfnl%@SPWvtbKhO!Nx?)B z45=U+(gQ36u|c>E=>@VO{XjN^`yd;V4($WGgKS6=$cFR<*^r(f;OPyr+#k%!bvX2V zZF-z6>*bE*+=7zov08>9q6VA~T_s%s&V??M4uf-`L()NTHgtisAG{3OC+!6=1crJz+y;OXpsS=Sz!A`8(qV8obV!=BbP9BVv>(LA=q?hL=Y{S8 z4Y=jE;(GL7&>ZvOC^~?;gFC#9#a0i)XK?W9_fxRU4M0WU5$GWJGFS*!f(76nFdw`U zOaq%iFZeOYF&aJsJ>Z96TW4$xU@Q1O*aE)C0RWmY@h;c|Hi3=cKR{k0zXR5TZ-aFp z&Ufw@4Sxr#q2B_lz&F84uo0{P4}s<28(Df?@DAuo#TKiir>=UIB~11~3Tz z4a^5$0{!3tFbn(|Oaos4z2J*rBG?AD;bNKgR`7YS1;q7(JN807*a-a`*Z|_Pi9;?# zJp8|`)FToRsS+pxpX(F*BAmb~+QD6o53hd<|D>Rrn0N+`Vvrd^AkQL2;C?U&GD9I401LpoVb2E{?+4ve zFt`(TA6N`~8W;w>;GM81f{gcoJTSFcB<<-6MNjJobNH z1-0S_*&;Yvzz3k4!ChbzcqQzO;Qi1I;C)~{mkY5e8XMF?bw01aUKw|U^$7)z!cFX5@1 z!DV2hbOX2qx(;Oi8gL<43F4aBy@1~eT?S1?z%^hP%f~p>~d~~D)2_=3i->yzR-xp9AJ*X&#{U^@)v=KaWC09Lj}-dKtITev%u@XG%(6J z^kQNQ=mDwQummT8Eg6j*`j>xoI*jk-tX%a``vP|DgPJ@*j}@sO!hE@_ic6i1t^de^7>cW#E+| z8`K~@R=QDorgW3^D(PnF3h5T8ZlM4AIo$(HR21@pfYM4645)#t>5#9Ukz@CJCwnz4DI7Dj8Fxy(~ky@ zm;OxgKE-oT09M%Er)QwFU;YB=e2&M`UdHU^h45R(l1GuOMfa| zAsxdLG#U`Clp&J_G{C0@6eyrd{<+fC(i^2~r2iycCtW99Fa3^mgY*e%jt88j3R7?( zWQ!UVkSpCJJzct4dIdEa?DyLx#%HX|-y;7W`P)BY)+m3g{9jUc#rkj5RvO>K7SN`E zLDGEM#&ouHdpD~2(q8$?sFQKY60q?V)M#LV-)eR~W&_g{|0Z=52A>SA3doY~jtB9~ z;FlgLoi9Cw8Wj|(f)(-?$bXA;q4cBDL216J5M>4J9l!pgfRF+@#4C<)g;*^@QD27^1spx>z@I9R?765GVoa{(=XJR!=UDH02VJRs89g~ z)Y$i1wF=t@2k?%u`T3R#%jZL0CU!MUVhcPf z|3GRqut*K$3qFjmQv4Ot)za4}KBV|vQ3cc};6>>==})BVrDJ-d0yMZ{tevAi)SN?X zJ52f1Xh4JFFOhDPUMJlo9lc$KW*PX>7Yk^S{yR11uvjhrM*dd$lkw<=@om!V$x7Yc zTk%5a#8GbhJS(NuIWg*~paFAGhjq>LqypOeU%oAWAyx%bM_ll*0-p*TLX9O79%KCu zHOf1t_{EBE@2|->44L2W=EwSfNQQhB__B0?^gpEwrQ`e90)oT26zH!KOlXSiG^NKH1e6#!> z%oywU{H%Z`1@!07I;``E*7=##+~~B3FOja1UO|mT+N}JyNS8}LDqSIcP`YxIt>5z> z8c;!_3XDs)x>dTLw0A671Wr4GR?qs)M#Lf8n8>cb(A~*xOpN& zl>$DIu9lAJZwsiA_EDpPuqrrP{yO>ROV>-Y4*(m`AbpQ?V^ju?9Kiz1RbVqUw`$E% zoBS2>_vJ5g6xgQxr%8L{XZH+l6YLwnv|5^d2$=pT9SzB_R|fV?5K%W26fD{EZD8nG>X6an%HfsDlt5gB*XvoNazWix}>M(InX zTcnpu^Q#nGf`5@tlYU;>Fa42pp>!N(94YDv$uPtkJQ3-DbcOV6>1ydk()H5oq?@Gg zkZzT(ljhhRZ1C%@#`^ck@OK5|OSeh~rMqFynTn~g$S34jy^5MAuRN!4Y` zXS)pCIG7%lzD@dN>4&60madU*lm4r8k1X53SENssJ|umP^t*#?{hrw}{8IsIrQ@;g zm~NrQBA>2BUMYRK^nHr&qWHhcUn>7g(l8rE5kSy5Oa#1gNf38rGwJB z((|MP(pO7gDg9^ZP15_Mjr8B6GStZMFX>mLk4b+b-2vMI(~r{0(#faV1`mFz=o$s=kpE8UXQlT^H%q@R{h9P<(!WUmBHbO^3RBu}x4}_Q znhZJC;2AG{f%GNPS4hv5-YC65`gZBn(tD&gO8-szPtwh<#`=FyhVK>dq;$^_c9AAv z+h7_l-B)^|v`>1Dv|oCi^aSZ!rDsU|7b1SHP3f?@@Qg-C(VfqtXvaA6GoL zcBTZ}xL|y({5_=KlI|z{AL${`QD*o_hEWQLA8iXfjk+Tam8#%EX&*K|rlpGSt@yR_ zkC6Ws>FLrBQFp@+6xRBmZpq`GbVzPnG{o z`IpNd{agV&ATY(@LV|O!UIFRUDBvpj$H@N&`KQW%pZtsDuauuZ!B}3E^c{+S#KuQG zkIV2^74Vue{8<@}O4m#Or1(RM?~RR@6}%?@C~7qL9r+8TKarlV_`_~I*8c_t99O_? z)L5r)X`Mby-5uxs)9e!3`#b%ibp9FE-wk^Ml9xq|Eu!zP6^9eGy+v-zeaI1!O3IM>JLttF8WR`G?7WT>d`tCt%xP1GDA# zQ6vAU^7DvD|Jm|iXm!+cp$tovAzK-?P-7J&o^9uNH+5&c4~ngy=|$;m=?|qRNq;9j zOS%VUl=-ic9`0(a|661@R{?*Ko+tgH^m^&{q;He{RQgfr&e-~y{wD2}J|dkZ{Udc0 zEgB_53g(1EPaNUxQ?TKZ0DBV8rESNa+0*Pz|=|C=)WQvqK}|04af zbf43015>g4Fy%`7rKeD1mDQYM{Uy{rf4#x6h8o*IiB|c|r|bOxJ~k$%`&B^WM63Ts zjg9CuG=!;H{xls*6LG}k61!9l=t|1M5F2^;bi2 zJYHSFU;8bW$2(Z<_1OaV1DTz0Cj%!Trg3prACSfaeAizmy%RBv-z9yu;v1wh@XCQ3 zuuq203aFQUF4p?@OK(ttRnpU?cS?UKy<2*abo(8XU!-f~zw{c-alQ{8q&GCjA)hNf z0}{}H9#!^i1=AAgEG@#0)ZVK9o!!osZamj4e<9R6X1H&Bezq z&M^B6F|yS7tQlUj|GgrwN&gW4eZZ-yFG?C@lK)zoVZMAC+3xN%E6D`^ zT6(&KSscc+je!-JoieOV`dy%lNy(sKi0G^O3E~6RE9A|(g+Ns_}nw4i_CkE zmZ0!)X73kkGR(~%E()27*UA#i-Dj>#GhZ#jXP8G7Cv`Hu=g_wApGDh(|1KJ2hF-F= zAI1{geEz!BxSZ2+%~}608el4lle(B&o-G+>=A^8@*sOVZVLuZ-W63accutbfG~5*K z7dP5}n)$N6beowren}_u#m9@rnH7zw?Z>7?$#J96ikQ!f2JUzP&8nEODZxDWc~M_e z{z7SgGwh|(0UXZjWz6sGZGhL>+hHiw%R6_{@u%Tmp-wDpDN_<<5*lK#7`HjU%x9c!ismiQp|ey}LRWIu7$ zAoJGZq`v0Emr8%A-F?;2p|R$SS4#UQ=u_`Imi9qAe> zO)&MZmOhq^HwF8GpjDdBA|Oh$H{%nW2am?+&cc%W$hg6sQ+#e7A}LI_b0VisF^7VyJDIZCmnWFu z{mAQ1t$g~T0Xsg#imm^?M5Zn0&p>0pUzA{OnZA0V`9rTMspcOaW6aKq&XYTuLCG^m z*s0Q9YkQf-vo62@cgZucsOWvT*IIeEe^lDblwEUig2|pVW4N8V`G=A|=BHj$+@cap zOe+RKz53(Q(`xt3Slt?9ijI_CV?Jr_owDP~q%QFo*)!L~oPz;T=UsPkXLtGIIFW1i zeuCo%vL>5?E0g*U%D01m=H_ZI$kp1-&9mz~cZ|o3Y>MggzX3Qox@UaOX@0-?s{5== z6FfWWHC4-2W%tmb1{Q2O7ln_qYOtj;C=LzA8D%q^OVOENndT()N54jWF zAl%dL>kh)1&LJO|>fQhGxU#R!&aXw9vod>QXhIBM**PoO`hSQsAMN$^HsNcB;skS~ zaBw=uf?;aLNtdZ0(|v)|lg0wJ^-9A0KN#yXyJxNTcJkp&ic=-Vip*J_)XRA9!>ZWy z^|Va$)2!7AUE7<+G5g)&Aa5J>zyK4tb$Mb+h$SOs!Nq#&aqWWswH(?rqDNalvtXoh zbJpVn-Jv}P_vf<|CcfCnRE|3k%+6npL(GvrlQBB!`U&yw90c76Tz8#nV+zklE8bi= z5gug?zj3@W!WdqShk$X<&k^#7k-tqZB@#tZP) zvf2FB`t;$G-M9ZezInLL!xHCWXkTI-v2^)|pW~iX(DeBC+2d*-`n>d%*d1S%c8cj~ z=6->GMLkW%@zPvi)3MTVaXmd4#&Yz+G)9;?UzC1qLdTcKo3hgv#m9R3nB&KBTzT|( z={QsHWoZgVB4nnRjM`hiEWIQqW`Oyu6`h@9OvkTEADT3z;QLczVjt-=#PfZ9+&sPt zS&5PLTX$PmHwbzie50ZGKy6uw(7kpG#w7 zV@`XbB62X+JoaRVPG;+d`F>M#`Keu>95riujQQY!Nd?Ax&*ZMRwN}TQV@-wL+N~WT z-Z;}*k#s@rh%vK<#F@i5`_eP;=^Y~eriR(t^ z75GojpKgwKkDOkcHS5y!I6L&DZ`h>mrtzssi6%KY(qtBlT$W}wp1UE@Y^m7XCnna+ z9l0zcHaX56H}dw~%P~wOB4Q85xeinEA_k6}Sh6t9r0>{-sjse1i=ElQ4ldc!!92@B zC}(#xKQCRF(Wx0%cuXPlOL`#1{BUq%XESl}qO{lp2_`89qfs_nMo;P}#1D>R$De4k zVH?q5rLL>BjKFq*(Es_X$@_y@Yk)I>boPuva7m6HdhMFVIfYEG@Fhc`J zm?680?2k-+6hED?`)Bh#EporOTihvb6*r0{A_ssOj(i*dCJ)R9M}mG=V}PMFOyDKz z>_l)Do`}a=Iw!F^U~eelz%SsOR*-Q=!6L*pTRIlv?<1HOO$a1p4^{{hb7tl$UJsF$|yVuek;DzyR-Ld>5aPU1$&}jwfXaP%M=NoRI zJJ8EI=ntSlr%7=K!L_hASUUBx^S#eCuF&17*_(l3ie`4cYqk$gU~Bs4_G>Uk(Ks5Fbuoj(ut11#0nU) zEFB-nRlt#AKzD=~X6y>R9QH&@Cmvh|?Xh&)a2#M92Zkwuodd&w&QXvXZ?mO4Fbp@+ z!_Z*VIfw~nC}O27{`d=ZnoRfsRp@Q1?4XUxm8cJbjHihL1LIc z4dfC{wsaC@_katz|DVJmmRofj$gTQ>rE?U-Q900T>2TN>&cSYwbHIP)m*wRS{ zx#ZG79KZs}mQEtb3OwL^*f~fI=(K{|7C1-^=%Ayn-T#|m;3EFO(rE(Sjl|Mv1i8q! zg4`y`E$5Vgtf&a&9M80L0wCwO&~i=z$T&a986IKjWOc#v=Nu1)0dzRD%{=HdOD7TJ z5{S2)a}u}NxCGiPons&iZUX1Re%R942hM@6v2?1z+0eTzopSIp=qE{AE6BK$xb4O{ZnJbwfSlo0ODEcb ziHl)4YUvyXImeBba~eR-@c~Px0%XBkz?ra@Svng*HkgC%&|eJBfL>tfgyf%X>2Ne2 z#6`2m+llPK;MvIFvvk;#mj!vj>9F$yp`hadxoxy1T7N4Tgg$2Ja0DN2WKEXNVUY2S zmQDl6a`%I0Vfzczxf32|A6S6E8cSz4$Uu(mGY$4iOJ_Sc61u|D*$6T&3=V?5#L_9Y z{=foDrwC+R5S)s*0Ez9-DU@S8h!a#G-_jWYa%<1BoYRKuD;CfSo{qR1{{UJu%%N1vch6Zrw}{^ zdZMMn9=Ozb(pl1jrP%|Q{$%NsXeH}80S<$`)up-S;HI9@!+S!+uyXsL(cN8b)XP;WoskaR5cZmVz z>oDQY8OQ>wES*Z(Ic^gREVp#ZKo-dHn^+(RY-0W*upjI*Eu8?!Ic8^E&>hf;apR#m z!}%l+G91~7bIe}4pfea`1wKoMophP;WUOsqo2AnV($0>8Y+$pc(*!dAVM}Kp$haCX z4ffrZ&Mq*@7FJ<`E!+t*a68BrR#-Y)K{l}5(qYdx07(YZbG%~Iai`pGyi>kJCs=zVkD;w2km>YbS#bS$X z7Ef6m85T)(3krB}OAK}4;7B?XL43R@D{@J6XpHCTjgaJcu@TD}PgRn*mEd=^+XMR- zJc8p!L0tj<49$&zIt;!A9g+@$hoB3j{ootWK4~xbImG}w_TzS-u;LFhU z(ly{q&|F7u1Hc2&Wzu2rIp~md5PSx@K-v%1Li?n>-~-T}SZsQ31F&T8gP|F88vs^9 z*Gt!cJD|A++y;QRLzhXjTkLk|kaQ5d4Z1+u5B?F_C+!8dL9;WnZ2*?|tuQo$ZUexZ zq3fkeAM)KZhEhjVoa`pDFl{)xSsQzW8UmCBbEK;+%DCKc1I4n1(r5U>GkL;T;sR`5lz1$+T) z2J68l@L8}C+z&ROety~^2~K{(!Ci(=fi=)|U^Vz8SOq=-R)YJ$3h*yrIrunO2JQtT zAo9As*&hRoq4$6xa5q>4{uvB{kAQ`!pJVsCi|RozA9@$)2k!^7zSpj%un9bd_3w_#_8+hT2CN_VkoGxP2mNob1{?tLB+~*`f&T(4!A!6M{0CSL za@#2bGr$PQ83==)fyH2dFa$Eb2#o#{6G2R*gM}b76o5y;e6TO*2bm!Y{1o(oeZVx3 z@m}x~FcC}zJs{(;e%*~2OO=D1ySpRfo1u?@P2B%`V4@KQW@rH6OsWUFgLNP?)PNs@ z)gZRaq$=4f!H=LTz;0kU$a2cS55Wl76%2zcrx^SI41rz1BJTgp5QO1e zIyq`+H=8$X>}9szv9Kz7dpt@-&h~WY@AN+E4%mRPUYK5!A9L@fe^X;o2eCym@mia$ zO~VGk)DL<222lIsvT@Y-!V+JiPd4gSbeUZjrxSe*Vg!zs|ZnFG)8@ ze5>m7|(5tsc%QCBd*43I+F&pke#8J<|yERGHjy89Qiay_b9$n@y|$CNxx5x zO8IRYrmv|{7I$x^o;))`mr$dAPc{w6z>nN8ovVNbW#Ah<%#e%~&UBOFYZQOK{9*a| zBbxEN!e{!o^g-#Km>K%hu&P+UXB-V^K>OoX{`_aa8U!$1M~%NMErAEAvBcP2jOlvAnpHrl;(337=?-b$ zKVW)Vn)er&c>9tS^8SOHc=UpfHp?)C1}vg{Eu!{(md)`Bh)yJ=YF+DAR`*Y6( z>_PN5%Ri7B|?*vFHmC!+q*D- zN{t2tReo#_tbexxHJ~rg*(k9632rtu=J+Vq9n*Qz1z2=Ums6v_kP6&PjRx0fmGQA9 z8^E^;n4VUAvEtwDf%VS}jmp3Wscr#k5Ffm{erca{t2Ce3vH@Wgc!_jGdY$6ET4L^q zA81f}C+-?{FJ=K{%5X@!T>7|lg>*L@fY>0v3LGLGly<1&u-ocD6{N-z44@pQ#nLU( z(d%fyalZW}oST2Aw^Or1UXdW}q{c?&)kd{T@de4&zgzJ^#lIkbK>klz*c9t*#&I|1t$UsDK3u@M@d5 zO8$NFZ;^gU`ey0&@ho;o_e!x#y&H6n)8FnauUq52Nozg++2c?UtvB(#K zOe^JoLH--04@uvv_+^TJME=kCK}Dt)Xuuh&N?ZA>)Y!*chPiIfzm%a(1^y!41HVR? zQu!kQ4NjFFB|S>|d}=g!Ir1?D<-a(?*6-mLuUJ6)PyuDqx2u3k>HDQ?q#u=TkbXwG zS^AK4oAmqA-c(!PcTpMmjWD*5AFyJ|Q9xX#)sv*Nq~}YYFTGxRf%G=%RniYrqx|nw z{^RmTqY8Lc0n5=+ro#%@BL5fiSIGaJ{2V5N$&1~IOYk1)Q>anlGm6iZeo@*T1tuQr z|BwvltAIbNfROY@((6^ghl;;e{?Fy#Dcvglgmi|_ZJ*~2<^Npy`C+^y4#l|^bHenA z0xG4CN#7~`Ej8xwbe|jU>5k(A=kR6u`%vR5r&SyAfZypnYUIC2`KM4vab|0OyYC_z zexsKvLr596NQb5GQheNC+n^`q-y;7Z>06~+r0xcEv0yt^|(<3V2kP3KF`cvr-RKVGa|3?1r!@4Cw-D)Hg->XYqro%#f#mRnn8CZ<1ap?GB8C0*X|?Gb(VA^gGlza+XPd^gHd| zr-8ppN7m>798$RzbN^--QZ+{JR9yLx#(oxT)vA89J3krT?mT9GQNc#F1>(7!tDa}R6l&|=p^m+29NnauD zlTK4SKVj>h{|+f2UjYwD^INt|&nrVj8t=Kd4Q{^zdPM%P{Qsc-&FQ>c{$lx0!R1-^ z_LCh}rRQuJ8U~p?b+db$-HT`WdXB<6K}G*d_)hrUPcFi&B;k4CWbiK%*y7Wx0`3DMwXeA0la_u+>UiV)42;e zgS<6y(*QHMVMTIm-e}YPx>1b%^L2VziWyLZ{IB1$aeyhg_1YAZ*=0lT*qj`<1Cq&k?JBgf`}(uZ z1>Y^{9W&OvdCS!UOkWetGGE@ZcARPLj-DOS)6sqC=)t5OCidAaZs(;V%e?&t&QZ}c}%bEm}+j>Fe}{@ z9GyPd{L-{J!Te`CB7GOH2$}HC^_QCoU!fDnsv(${=DVh#=+*PmOz^$Uoy^nQHl&&N zyIs)LJoVqARMcPJS~9@YFS!UkHQvAr;m^K5v$H8#HoI&5$kl6BnZ55^mG^50pR+!g ziRFB6w3DgWJ9oHQ-FI#>-jD9p+3f5&J<*)n{epfb*jSpFs0D&GymP_u#5~)_2(xr2PP9{Hu}g>BshZK#`k3Zl(6OT;Ydt!t9A3T71ivXl zx2`YPgNRe%`={J${Er9GEotZ4o^~p8*OVzH>D$XsvHg`s-Ej#P?50`rhQGZW{c*ZY z>Bv4reN9Dpc25(&jNKsaK`#|fb;?)IkUaBdH*Y`Fym^-YvYdQ$6LD8!PCjN!Q<|f^ z_8HasZJ*OTyPk8$_;CX#XH@Q3->)erH-EH$^w@lVzR9?Ja%y~TE~cJe5Lw!@exf~| z)#G^2R6o&VTswV&8If{TVmBIbsPvRg#-lTI;#ig2bAgXh_<`d7kNbba%(mB;CiC_7 z&gSIG%La6nr-A`yWp%Wd8DDc@s+o7|#J=7EHrF)#6k=*J&%e!6rVnu(W~w)v?@R7y{EH%k`!wfTTgbvwb-MdLfTz_Q zdE0h9>0+LH>(sve@@zm*ad<4moAw^xGBnoh{tVfcyXrl7*Y2#Yb(ADfcf zzfvKU3gOTNEGdGJUMA;AVQ(|H{ARhbOG=Ny`PPH8wVRHbBQN*tXIh6W7?LiR59c_h#4~MM!YlBM)UD*U zLl5@pQ4BLvoX%odX294?Y;rfx8r(Nr;JQ5RbL>Cg7E!&{>`9q5uE+1(`RAKwyDdGl z-E8yX#@qQODQW4M>54AUnkrCXHEXfKn3%h+>^Guu9h!+{5;V9qi{|6(`@bG0Z=ikr z!!-@RnBp;e4^HgGEo?yT?xhi5l9}l(9c(I`jq#>&!Rn5+BR52fyO^GLt{iJB`j%#y zn(pWi*V<#LHzs5@4?>^MW23J2o5mgJJ?p)5Nn)o@;!++t8rS=g3(Vevjs14?T$*SK z29B#k)JBo00F6xa3DZMP5_(AGp>`TIe-p zB}@Ho!Eq?KwtIQxsTfrJ$_8U1ZM`V|&>(agZZ9NvJnCwnxrkXWfx{o$-oz6_D-TKt5m*Q$?KQrq@ z;*MRB_~8XujD`5)T->i?q=I}3wxPkGtf13!HR{rgv>O1 zUR;-H9^Dg3FcWFX&omQIi#ZsJzA>&Plxgb?TTd*m7u`@SEuDOj@p-cQ zWzPaT!af*$6Y)MvC)qL@@XF8?WMCrLh`@MDr!CX!6P6D9=i|aUaMaRilI9?husaRl z-{C)C>C{Q@ldb_d1G~W{yb2$vb|>(iN04(+Wp!Yu?At+Rr~uzZ!CNhza**-7k3oBx z>=BUhYruD44_i7VAmfW=UqIqj9cMNsIOj#+VPu$T=@d#&lr8`nHy(T&aru_c2Xn5bDrmknJzUQg-aAz!pv_8jCi`;JUWsd@^rf(?c3(>g!~{& z4tTm9@DqJfX8t_<6@GPl30cL&a6XJFv$+T{-+3y3Es+!spRZPq#-81C?-yYmPWz?1R4~aGR&=HTxFh zCin~d-JWiv**8EHJa2lfaka4(-h@Bx>6&M7SI~=LDF*2D+Cl}Xhnuh`J)K_YlmzQH z*#@gXYJ=(VEOcd1%PmzH$%m;(w83_Jx?NBkY|zsUK*eo`+F*U2t`};9ZS{0ppf*^K zr|YU3A*g7h>+3+ji8>xNsg zZ}fB<%-#u=?^;i{#_YK)Gmqm~<>~Z%M;W(zx)!L6Q}9{ri#=VV*^}@Y>~)?lVRpS; zQMyX_H2%1!D>r*7EMU(@{fvv4W0(h4;TpqmjXm8Cvu`sN;FDyq#nbhey$e2peS@cK zhg;CAJ>4p({PhlzEs{;P_!+m<9F6dC5;S-^J+f1R1k{#U;OT12UI~AOJ?`l$%w7sv zr)1RAm6%;!UxzCgk|s(!n7N6-eov=2X+K48^K`vX3AR9;L_MCa-Rvz;3u^Xsi_M-e zRvRm!mJ|1M<#02{U$RUy97K9uqXp>$A}wf7c}O=5!xBR+Xs4&s^IzGw!N;)odb+J< z-(=ii?1U=7T2HqIW*^1S&J1*`p)zcRDnQ!P)tS8l{uq0?r_&R2#h1WGuLdR_?0QWD-A4ETy35n$;kVK2 zJl$HT1+In%VAty(=vKjS%{^TjDsHJU+sMp%5;S9HICO7#R*KLjs#!h%C3Dy_pG*!4~ox}EU*s_zE;jN1VfxXoBF>LqP>tb01WY*kzy zevb^-dAd%s>t(L|db=#@IRr825A)W-l{F zjJtUjem-$So^BV^f_Fe2G5wyd&+J=`8hznX)pwgTLjm-nT?zF9eku06r_&31?GnAX zm%rV(3TlsMJYCxC&G26AOFf-FaZ>ulo~{8ZpG7dMeVSlK`*eXh=0Q~lRi3WW>}oZy z+MvwSm6|;Qzk_|xgph6+u0!wkbi1HVPJN;P-2hYp`X;dbb#`vUptG|V>g?R=>D2sQ zft%nx*txOI48?%1K<>BoZ z)N^+R0j~9S*8xY8aXb7fajQL@n(6OGtC>D@OJR72=h;*aRiKzL3Re)nhu;&j zXNQ=%3BxW=w-c^H4|uvAP=S4LCH8He|KDc$itECECUF})T?dqXHLSv(^K`4cJv+aZ znK?Mpo~{KRgl_h9OQF_$G5ivCebNNO=K5OmBwA}e4{AZB@K)?mPp4l_va8koS=iO; z9=ctyUg!T{IKxp16}TOKj=(-o*K78z@Qc_Bo^BJo1>NoGHo_db%hRocI=$7}9)_*$ zmH!&FxEij|d8uahH^YplYqfx8s9m$vGi+|JUDJq$u0e6ZlBfCAqFuTG37uNox1r~G zx+;aSyfT=<9`kgiW>@unBlbOGefI+zI!N&wAlojP_jK#bz8Vg2h~_+-R?+Y!Owfu! zdrpn!m4O<|Uyp9^bo%`6EfUswHtCzMR{UyA4_z%(x_MAXM3twjgvvMW=_;V&N{xH= zqwbJFLw<<^Mzy||R_l9y-aV6D2aJcC~pI z)y7>c5rfZc&CHrAsZT#!NT!zS&~1k$!Sbz{DMcm0ZChzdMiIRF1u9(2#fl-VTC0n- zMzu~a3C2HXYpKszOM=6ZDp{(NRmxX5NRr$Y03Qisb*n7PIn58W@3YHoPrxR1|lr?DTN!@|_i z8ioz5OM=x`U_jv9^|Q{+~n!>5i^I`UiTVg8SZvZ zw>oq$`9)?$;|rc`}9Mw$32}IA}dbcwJR707 z`ykX))t#Ph!0g+h9#X22GE^gFUx^kl=waj*PuByL(MG6;k6oTlt(Il)gnHPx*3)&E zeKpjx#GEHDJA8Z^>UndEr)xI*;*#LYzsgLQt7pqeY|z!1PYssmveK2FE-riU^smAV z{MxU=Q>bVg8~6|0Yi%0AOB#Z^JzW=MSIe#Ps?G8KxL13+u+4F>WE)S$IXt&zjsZX2 z=FiH#X-bHlMjE{!gKl@R_SyIsr~$Mub|AGcx}X-Z4)QA`+36WJ_8l3VMfiAyw_12Y z;laYw(-TKlGCPtNW|=9UQADXl>?#Teo}bUvPUFVUSNjnyU=!4pvD-6j%1b3e^0PiB zY^jAOEu5DkYFd<}8x_%&LB&O(vK{7@jc;J)4?)?t84Hj~_}Ae!xdn{=r>>q@|H+F_ z`a$Smd#t3XkhbXxn1gLF19>|WHs!qmHlweHDcA}d;dQVcUJL8sa+rX;$q5_oT?4Dp zSHmiJ6^z3cs0Mvk($YO_(RT%gD2B^n1oAp49CZ0IsJ2WO!$G(N4nSTVg)RCnf_>=4 zuoqqc3-AlD2R1@AZTdXao;?rd;ki(Iwt;sDVT-4|%T@Ht0JACeVCt6gKEP309*Q!YY`6adFs6*)}*bg}#!Ulauz+Uv>umBH(J@8PdLu@|mg7aV=^0`vjpf5|; z3t@{sx`zl`^i{ze0cy3Gfd@hMXV`AG8CIfG@Br8d_lNaxHmrkjn1HijEmXtYYN+O~A75os!;d`(gz6)dU9T6;89DV>*z}+wghhP-$ zf*|r2*v)}|Bh15p!49>?U&c(%3~6{NI%T>ZQd5SfoDx){FM)CM$KZwNh-nrYX+jS` z#rMJUVZn4aJPVyS-NEM9`|9wFP=Yl2RG6{=eBtQd3Dec^MEr5nF?a$xVtR-*Jq|qp z!va8uE|~6yN22qlvmMNkX}FKV0-!6 z2o7_fb2l7VGZ0@Q8TQ!odg zgc%Z!*citjKOXg zg%3lGhP@H05#NvC0DK+xnY|bO5M6-3gWd2!*aaV`XC}|gOHg-tU9cVg0OnvHOv4SZ z8Qu?5upic&y$*gKoq(?ex4fE}a`>yr81gOYMrnd1~3I*g!S-G92j-*o9F~oomC6p zhShK__9~cyaot?*#8Hkx31U!{Srq;eMxYW5bNyE3It2fKeGq;PJpfgw_QSWZ_rWis zd*KLJfCJcjpyIpXB-jOik3Bzv%0LM^F-(RX@J$@;@OE?#evHn*H((lm6?-$h9H!t7 z?2Yg)bUpkAtb@P9o`83vYvEO}8orLb3aUWyEHfR#Gnckh1b9c?8iP#ZKDK3 z@au38{ucWHRD3^N4*TG%*n6Sk3-Auu17E@34He%7TVOWN%yt}|PzgHVVXz(k273-F zK?WWU)9_{N%~0_v_zt=ez69%`;_Kk&VFLDHuZ4=QhLx}izR1NOtXGww9K(Sy27gV0 zC{%(7)QtdFrLaGjA*gt+Lg9_V0Nh4Ar$-pi=@Z`ZP~-USUCiDCk0M<+>>-}hE^>=1 z15S+aZj~cC>=1+95m`fEI~*i12LqUaw_s1hchSx8Hpr129xIKo4u3st$Ig6stR&!V z*lXceuvg2Eu9DWZIL^$Mag>Yb82l29!qwO#PzxTWzC8sF!5gqsxX{iK9^L|RoP^y( zu(?BfFVw9{0Uk&^YaQCVp>AEe;N|5w^31Hp&}3fNYm})n8%Q?$7kEP4}4ICC%U7PbK%=*T)ykKi71x=~JZnt3Jvv zU5~t^>rG!LJu-4cr0)Cc(YnARiyu_L)S=FISA3urgJ!E}e| zXQU}$j}`Eb=I=CrQ4BwatVYAqR4z>c^5#FcA*!+5>r+A)KhSOoDqo&W$OGpL8%y5+jl$%~7%>o8&0S}o!ZvGccSDD@=%`WJ+ zT~MN`ocycJe}L&)(3Y+fO*fi;)pW}Aho+lN>jkz7 zls0{&y3CUyV}`S(xzG%7bZcrif6n|rkfy*xR^X>h$By>#zm;Z-4c2)54{7pmxAf(c zyzVfaJ;n^3W;jop1yoyxYUL|kZ~Dv9EMUkM&}HfKmi~E*Ph0%&&EIAIe@nB1)f}u$ z^jkL>110RXfYYQ2&|6GRcbnd1`W4d)IM_6en&RUZnLb*Y{CX_EbEPTpuod`5X;!G? zXr*TVf87GqZKtM3EQ5k&&}aUr`QJBxuldJw51<9a%pW$+r2u{AKU;ouzv<=DTyr9` z`D6K!6=sOaz!WydB_L*6A4h46q&d1ZJ#HBeScb2g9yI+AX$n+s1)4t97huTz$4avW zy4eC+e&lR3^o5&*FJUafuqC+7wE7X%)MYwq`gzka(|tuTMB`R_5^Xj)(Vg$L;|zJPtE)20VacbL|sn-t_a*?7}3wMpLxHr%z=qAZ*)8hRvo= zwt%$hOHF4?ua+jmJeyimxA}ACf6;Wi>32+bnBH%OFF>}_4D-y8H+`DvF4I?-?lyg! zG+U&~w#X07UoihKP4}Aqi|Ibo`cj!Kn2q$CVU9OMdQ6`z%^D^sxhC}{pk2~uyF_1F zYZnYy{ASaGre8HZWcowX!=}q-DS!6AKJC_YZfM}3GriihJ`vZn*|feT*YsD@`qo_2 z0dZeoeUq-~5_O@zQ~aW`1CQ;=bMh3 z{*vi=rhj?>`(F!OV21ZBpw4u>(r4Ic`W$HZ{+Bhxw-G(9KHY1?Vb z%f4U%J1pRBX*OBCtODX!u*kG}2ax`P>1NZHqP6@;PKHr5V6k0rn+2@21nW(I#q>{2 z-);IO)9X$D#q?Iw#dCcDertNV=|AcG*HmMMT^4Y<>5|IO9a(0&+;rCT0j4`mA7%Ox z)2EpJrRgTqe>A;J=f9>sW>5v9Y0|;I#Huhf9cua;rcW__pXrn|TX3IhAAg1Ud(3~U z>0g>&XYrrQT7vs6;LjHDl<8fj`%RDHbkp>n>A9xIP~&MIFEo9C>7?lermrx4uIcRU zX1Ll6sxUNtMVd9b!wPt(>A>{2E&dsc-(ENUhP|ErS`RM|1vaI@S6?oV3yVm@NoB#Guv;P;GVS@!MGyR0= zRiNuOvsE=_`|mf&F1b4}M+ z{8<)%y6Fo|FEf3WY2EB9|JzJ+@5%L_1srJ^-lqWc$)-1&ZZQ3r=_RIhv#AX4vJ77{ zz0UOerk^ssFBP2PUo>5L82euaRk50!1x%*~({!HcIi{~MeT?aL)9t3$oBp=xpP5z- zs_8eTA2GcvYle@^Fp{HH1uCIJ(lpcbRMW?pt~6aQ%@(`Tw#fPBUuFL5Oy6sIjp-*$ zXTNWT-<#n{>HTS|Ze-Qe!Jnlcjm-t~z zFwgYQOrK=>SEetNra&iKhBul%&vb`rT>~^dVCi4A^v{_87WuRM{mug3w1C~F|6+Q- zBYgqiH+_&ayP(5%L6bBE`lc=L28;i<#ed!Wy2fbgGJhmt*Z-$2V6z3hZUMyvX!^kX z&zrxLn@8>AX^GGsIZ&Dc>@fdv=0DKXlge- z&Gdby4>!HVbi(wjrmr@wCo3vY_KRj1!|k&S8%BeSw3*u$D?nrIp9?Gxm?3cz1t3DTw`rupn5^hZtqojepjZ27%1!s~MLf6H{4 z=_iOkPzkiDHQmgg^xmIRn`{l6gVR6GTvmMDs9@$n*Uk*Ke@wSfEx)5nti}^ZmEQf& zOl45>R6{JN`6vB7ZS1Iz6)g@f{b%N|V5b5%YOMKfd(L2d_+^V3v zVJsuSUpJ3FqOP8E@#afQ+J06V6n@9R>Mys>nH9vo(H0Hf7|-C<>rTIUiaL%u^;)`P zIy!i-tZjBs`oxW`!H;*fPE&_ZvxDk4E{g~KzhpS|)fX*B$kliSLR z7&m(4Ws`#oA6dz$@<&|vT5#q|xyixBQ`+LeneVsG3T}QmcVy6U-p%Df$#(k0I;fmJ zj<#RCygbOgd&TVFq?4~bA$aJSmWtwIrD-YMdQkXx~Xlmf|-A0#Q2K3YiAUF zCU~iJPCWSiW#je@etvs;M)2kz=;>?Rw6-sYrMdeR2AN;F?Uw1m=;>|82QPk(;l#t@ zk82(`EqG>n+vMP!%h*VlO()kkH?Lgiw|95zoD+iF4Re+}HtqbGMVs?Y)_4Ssm{AinroI^23aHRJAw(_?+?8L!?rjg5H4fx(M^YM2td_{Pebku7wv zbwu#q+h_}y=BywQ);{{M{LPA^kuTz8Wn zZhhv?9Ls%s+34WKGp?hf8x6}|FIzabdi~yE*^l^Z!^|LC-F8IqaqXGr{bWA|eShMw zbO5$@eyH~99XC$6`-Us_3A%4OkM65t4O2rEKZWfR4#@uE_=e8lfyX!? zE?haMA~xQ z;*^qOjy~#$;E@;FE(q40aBFl-^~kU~inLD+zT0`}@fuK5lg!kikscnGTC_5*_#s&3k6eBLsx=kdMD-W#mnacDTsdhD)_`^&}`CWq-F+{1*^ zP_X3IgQf=>zkK}OK3?n1_lfsu=<*ryDc-0Lbu`uU@LXjm=e}inIC^=ITyTC=gBFBS z7fc<`eU#Sh-Ss(D&)Z0(g} zgT=?^N=HtLLFJ5VzF}nOg@?87Y zh^fK5uh5&|%nz>_HK|Y%IhsXvT*8NGZ0C*>;0eL(SKFq{T|b7W?cXk1p3+nIe-w!1j~Ng_KlLr$Vfxbed3jq zgRwW!Yt^*=wh6_v{uvzF-?sngy(RApZtHKGUi8c0t$waA&uRW~%^z0uP%!>AR97%x zSRb4UCVlIZPo^yT*C(G;e)7pD3I4YJo4?I%ueIH{PZ0h4oPprw?_FHEdFt?-(~5$j zSI&Q6bIH!O+UUq0-N^*+y?A9=(Wv0KC6~|KuWBFm6BBJXtOKb1=8gWZX;yH{BW-1+ zI%t>_#*;HoWtSJxzP2azeb$e1j431$jwc1o2OG7 zL8a?~9H_}no=!vUevx!to=xkZ;<6pga4(-+#RqM@l$!E_9{lk9xX@#qDMj97^0S$S><`a?sDXolqI6!6A3F$#AG#GTMe#f?iLz z1qzaAZJtg;=_-D!r|W^*C7V3m2B=+<_jGIE!Duy`gf0zlW5ruWQ)@EQ zv=oE(Ny;-EQ&+pB9u1pHp$Za#hY`1j8U;EvrIcM?5{f&Z3fAxGwwb*EwPIU5of=mv zenXV)uMG1Tl%ZNz%F%AjL1nng)1}S66l#rAp02^{`Vvy<7eMW*YSWcaTO{u3%FQ0t zh#pE1fl8q9N3?H-pzLa)sZBTF>C{qF_Fgy_yT&(xZj0GB!Yb@to-S|pwQvsh4o{~h zoCl$^?S96sg334zc_5u^@pMb!ZS0DaXVYS+xO%uRaY@f`+*{dW=mW5qdWPfPve&|K zZ(%s@t>Sj`OP6)dCWrit+XdwqfU2p~%2Q`WzuC7K)y#8$GVJyYn|mtV2J~#~c~7?v z%H9E~dy;Ag3d8oFYsf!`Uc>R%w8{copw_6_(^bP+=y{&55^`gfjC;Bmgm+5 zpaNau>4v$RD@X74bc2wuB$7Kl-8Q(6<8OX}naMb|c)A`~jNarKj+D#y9pOm1(5=Hh z72W9>HZ#?lu0|`LoTpm_l~2agrJ)Mc;^|T_%l%YxF*7h6Id?zwA~Xy~&K--cK|@yt zwIDT3(1J=l9oOY>L29VV0v-1!VVtg#+&d=qGaH7Z;+CP+-V{38k!JNVa@dd*h7C!% zQB7tDfZ=GiJg^8GheB75J%%pxbZTp$0+ql!*r&SHgiU+6JCc33aS(nH|4z@Q0kijw zxWET)#qebU3Z6|G3`-ew8&|_|DyXMxfvnvIkpn&1Y+6J+wGmhsytKP*PFTU}#_&sI zzlW^@n}(sX-(~DKX5j6_sTnD3(uewAMQiXc*t8V3qf?$ujqodI?%TwsBwUTwhx@Q; zQ8D{tU2yn!Z=N_wAM4+WuhO$A4%Y?iKWv*aRYe)%#&-;BLc1%`4M5fa_uQ|Mil#l` z{YF7%!Z$%q->{h~bW6kV@gKF#Dq?vbwao!v@T$$L^s&1F?r=l(xfWd^va-%)m=w8ZHTLdHmK{LEY=CV%hVtsl2DaYIriNf+xW^Tm-e; z6JZRV0JYqO5JZlL9c=eyFb4yueY_N=OxMFp&3Z0JPMEHS=b+>ImMAO$hO;q5EMSN=I}1Gk z!ves1bis5tJQJNa-2u-)=S-*J>FAVc(yAYT@CZ?U)#%e;oaOrhz*8}RP^%TjRp>$V z3OE3z3-B|r2e!g)n1NmJaF{oHC%h5e0V`oUyaDE*b{T0RaX3HC%(cukLmdMtxDRZE z*TZ_a5Z1v_!TOu8nyA-ZH2;2t*?2j#lr%gt$SFKBu7;Q+IT-A^XIUb9HFbqP8QMFw z{*V5SbP4sqem+7~l^z?%VqW)~*4NpZ_$e3W#}dP7HffdruxT~)lFs>MW+M;EK!$P4 z;Ca(krgxgQ4_qTfBYk|W`Dd9j)V+d`j6vqJS&pc%|d*O~sTGzA>sn#4KA!EJ_!Wq7&ilmeJ^>kzJy z>A-Z{;vX_yF#mI=^QLucqx5mp@0m`Zwfsm_2NnCH0f(l~N;BVRCH{ixl<6C#m7#61 zJ1l(_)YND3%@+TTG+U_Cwve9kEB|!NFP}@iH)JfqX{K|gFPG*oVGGPjlVRR6TyOrA z`Fl*~OuuOHT^2tiO##~VzCx2e8Pfvtmf%2Xw#YoFsZN>&c3TFQOOru|74R#jJ57Jz zbl&u{rn^kPB~5-k`a!O#n2Vq??6!coGzF;M*Za?wrUu^ofbM*0PBk@8(R8sivDG^3 znQoP40eer|+od@$3l@Ku>Fi#^12Ry6m=)j=3s6Tyn)LHh86?8`gSL>SPci+GY4wz( zX+H|1_$Jeprk9ys;B}TSCVT?@9@eLWJyw9Q$rJgsr>Kb4-up;FCXTdXDL3rjIwR?#48IUYb*@V5jj#|D&(9_`u@7x*z*r zpKtDc2K)^Ld`hdrPyrsY1Ug&ff87?)Z~k8M>uiz#ZSzOjlF~z_{Arv9^!3R_h{Y}w!XA-V)0Rob@K7~Cj{RuT`?mV=)GoiaLDmjObKQ^+)@?X zacc8X!Q4KE)A{PVS4?35n&szbrUdJryKZujedV$-!I;YHYJ=n6zhV*tNs^z>BG zQGuJV;)r0ugcZ@?#tAFt2M@h)Bg3OSvwBpJ_|8qd)+%mb7>4F^M+HwzSix{LntOLL z3l8VTy{9*B#SNo^?&~g^7MwY8MN3e4eAJZxydApmk2jWYerMu}sjL5Ey7`0RDJ4f8 zRZ|!;2=Zqly9yq29qBJ9rZuHcq?PdjqLkh$!Ti_{+z z9D3~q$4!V<`y@0P52xm1KJ_vwfB#|e39W~FPk|#=)Arin#Xny(>8^`j7#YNl$sJf> z-xlok=TGvlcRC-S0k=l;m=ruT<;YpV>GNCnnKTd@6KCP-lDpQDhpqAO&G9{ z8as&-=lyrJ>i1i6V8w+#t)4q*%3SIfRQD4uOTk%Xr%nr=nlfVQjE;-FpQ~Ot4PEZz z3Y$5%f|pLZwPw6U*p`kAU;e3;D$K5$y*I!%aHQ&r{}x4Wzb0(A99G#*s`*qv_zJ9k zsb6@GdR0^RmA(+Y6rwD6>wD~jCoh>gb6Ve3-oLl7)f`CF0g>iHaOhig<-xzNKXX>m z^}&;WxbDpH{}Wn!eQ@W-T*V0NDo_Zrs+hfcigxEXux1v@4amUX%i?qLQ|ncw#e zKk`^y_upCKdH?V0vKNZ!27o{9mFdJB8LWS7r?;#)zGS^#BIQ4~tbAl)MC8!{##w2bSW+mC zJR0P;-c%8!o}dzqj%_ZxyRmZ_r!`+ zQ4n{l%7dX}R+R?zPp#M%q*gVT1RaCdl#Kj<*M7T$7hXwErv+c`?6t+gp_g1)8$4M~ zrIx<@nv&?O#HjbCjBKA4#5$Mj^+{yyCu1VZ3*7bxu{kRa2>$u>it)9-4N^n`@rEV9l7I`P|mA!C(4gL2zG= z&lnb7xp-oby5q_UKEjAr27h@ic4~0h>#^BE_p-$^Hg9`9_V=RT@HLC4ZXVhZ8&MP# zEt@+lsQS$XH_ZOug+?w~l1?wYzO~r~+qo{d`OVne;JM#iaNy>j{B802qRsK`7yPj} zD15R{H0T|8bM=^&m7_-{*rX$ZI}b~j6-C2Wp1eu@+QgN!_`K&w6IV_d zz4zjh4_?4pyl#AO+@V*^^aJO_imt9G9-a_fc=6?v$LNb*O`FPtnT%FLpL|!9kxh5- zHBg+H9=!Sf)id|sJD|=Gi=~!XGGq{=Yc{EPWzZt(LSbWp+=(L^e&rb($ zwcri2gEJnwJ`+~AJMD`ys`4i4VDn&J!{9GtP{nwiD5hXn6n57LFHB|+k%%V&%}#Am*% zD7fSA%O)3h9qPyT={Yo*`SWXM6&)Jf+?<^iym9g6`vlw1xp69nGtRzIb`9xMyod1g zvROrk1vh_iwGfu@Fz?)Sn9pl#sO4qoAmJef1=0uDr;XrE5}Z1MH%Xpu2du-s-Rym4 z-v$-m3nvo4)zcNA;(N@#$?O~8Wa9FkZjEVuIgZ_BGt7)9pw-i*OfNQ_gmjsctn+lW zrfW=BLltNqoIqTar>lf2P=(pc&0Yo-AA?*6vdL0Eu=92y2VHJDU_-H)j`GY9}2>@AhdjsUYp^f!bP3pnUf}6!=JSJA3!H~x1|_QU zbZV<|27%?Ct_&(J3fEvS@pKV*I(pB%kZw0roO+DVJGh;mZU^LcJE@)~pxXwy8YO$@ z@q?Bbr#>x|P<>r&A#kIo>w@1w=gr>9cA$#f&3pPqzvx;|!#uuVkyIYk}HjYWoV^ zQm9>%@^p<*>FQw_>5`sVSI5jm42wKn4OHMfI39bIr;EcFy28_yL&cTCaoD4tt_04; zzUyG`SJSoq@Nf5Yy=E`K5xg`>ZV6{N2B5aUCQr8!Y5^NyDH-HF-8x98PsvVCw-zd{ z1JdbJa*d~34euwvoTtmc8SJ7~&!#lIj^i)cq8T>XBB+dNAw5$iYdl>QY$dMJ)5W3U z%Hf^Z%RF7o>{0kW_7YF0)`icahdtdcsDcc_EHh0znV|s50Z-QtwSaB#RqVZ5pAgR#rg<)PBAfpjXDZ1;3Ivu7Zk$0b|ma{e>p(ipVqTRh!T3tS9Ufi!x$ z2B?Fo-qY1WRa|Poc^sT4I~=a^+yzyT?XZLe_IbKqvlpt^{wm293@S(u437b*j5bsFZ~ZCnb!PC&}j zHJZH+-hq9Qr(0llH81=c_9{U@qanHe?>Wd3a+qbt z#h95zV5w(Q6#kQd5>K~>E0hxMh96@e@^picCj>1!J(~ugj_MtrZYxx}Za9p6qo?bF z+68M5wCn#G3}402?&)$+2{Ujx_Et}qHv3X|HTIOJTWt0QsC`}U>D2sK3##*UHBkA^ zgCAnAI*{|98CPkJ3Uicux-zJWr4*_@PK>0`v$19 zCGY7vv*uU>b>6poy47ZHh3{ccd%700r=ZUJ#h$Lg>`6F)z0T7uGJ7plJy7H6=0RN( zCRO!ejBLJzb;P<||Vo-P4puYosWul96RW-m8Jp$?G}PZu%!@c#Y~ z+3o3upjK#?r|XBxzi)pIjnCrPh5@>*P=~@6s6(LJxDG188mKi?zYWmk%$_zj8&gpA z*kVuDX!d$z!dR1KM#oCEr<-SvN~mKi?&&Jb9)mhrNB=8Apeqk;vwB`sQ8`m zZR`V{ZU@wg^}(HRTSzVqTbcPIhJvT-fqy`6@^l-Z)_fgQ#%o|V{&r8d+Uyzl7WP(8 z*9^6(Q|51g+I97wE+IP|*UqnHW&lTxr>m9&dlh^Zd!?tVfE8@ga?hqRsJJNnJ#i(T z;n2Ra56$wsc9&;3#ILr1y4rzGefEUsf1a5)aIEum>fA>ebif_h)%gz$hvxkadNmrl zW{Xp2La$?A?CI3mkkTjN0_=63ZjssN!Pl@?&EouL##Nf50_s+<+|!l8=g~1wH$2lH zjOso~yJV|z3)BKNV(z8HcX_%EW>-H>@~?rq*KPN7xtUq-NMral4vnP?T{G0CTI%Ui zP#HA9SFqQ6x;nEjg3n=3c)D7+9bMxYjz&i)~LKHc(3UmxE0eTPnS3QTBwhYlO5p< zN4Gh0@K+?zXuHs5AQ#AFtEX#$TF_GXOYA96x7h4z5A_S|Nl&-P>>7=?7kjOztAWpR z{3WY3!-95EQ7hvCs1j?mUFf!%y#Tcfws^WtW>-gWYp`$dbnDEn(Ra0LIy{{Q*;W22 zSirs*W|;{`*ZmHL1`AM6bWfoddAbEqr&X<|n+KIqC43Tl+|yM+<)fbNpeuuli^3Z!qTm4ODq71u%~Tm`>Gx{Rkwn|&#K6no0k zHJUvMH({^ybP2Q9WSRL1j%rU=WsVB?S?uMWPJ`oW!9(!J*mrrloo3$wZ^N!Za-rJ} zb$0Z5x^B3T^c$fr=Nq6-&ulX@dZx70vnd6&pn9mQoO%<4;h?y(FF-$xz1GvsgAbvr zJY5|A2(7_$p^HLC{w1DGd#2cmz>OS#;b^(cxSi(M0T+-#zo*-7_O0-T*bAPn2R?}2 z$kevdp+O%xDv}d%D#y+#+y2 z_EyhuG+iB3&E`+RrRc?;t`Ta}HbBK`a9!w<-tOw4@?8W2{E5k&|ICD=?dCDm;DAp3 zwJI3DMx{a_BtsZHi+W?he2mChnHJ+~B>^b-??5jMTM(@1`o%VFiS!R^M zQrL+j<>?xrc1gXbOG0hhI!{*%m97f%FInjsj@v7HDVnMy9Jd#S)xA-Eb}Tjh^B7y*j$rnZE@NTUT!Rf`V}Ab zbXuEJM=&6|2KK!Jhdv2}ZYR_Nx5KYt*TBBeZG*b8(7?X(cNy0~U4GSXGjwarz6$Ch zmGKP6?^U{Hw4Q@36*>OgVrJy1hs$v!JzbsI6Hs;g0#8>9b$Zo!x+H224-~?Yh?zy6g(NnVt67MHhMPI!PUeq@^lN}t>{`$R|!=i>8nuK zv}e3uzyM4Wx5G0WK35CgYW|+_oc~u7un7Zn`VLhkUu|rLDtWz8Log|W-7){0Z^+XP zLfLo1o5^p$)2a9JGthmWZX48=>xDX-w(47F)lge7D1(j04RAC8`c@e_eZwq&yHOuu zD}!d!8ol-+bfc$Bn7szh#$N5|s?1&qZ^9nW`WaUSRZ@Lw3|%QyNuy8;D)HLw8RrYK z3$DUG=oyY~s{(FEuf(p=ZK2x+m0llX!f@1DUH{jjwWVjY%fXC3CzT;#x)z=q%>K;Y zM?}ap`Rp0%AAG21{BVoI4E6y}r)K%G_rmGew|csQ*}LJf*f)B*4Q5{pZ^Yi==~kOP zqtRz?z|o2UI(_V^1?VHt>#;BObo$1+72V(&jz+5*y$%hV7D1)cXtdg}weUJvu5>Jih#V0N%W>@4FQglWvJb**uGUsm*W`nbc0a#9k3aDzo+Xn`&M`vc73r3-4>{m ztH;x+fxOahfXlGwJzXcfRF{age#WVRyaID@DS@jzT?T5OwtBi2sJIm5I+$GS=^7!m zezL*SC86RLz)P^#db%pJSHO!o{*vY4jBioDgg~{ZhhdBQ6nf9Td}4_ngsKR4dN!%y zycVF(;8i`S!8~+p&E5`mty}HsR+(K5<(sg#h#Y^e%p6g80ge(+7cu+b7{4GjfIlC< z8o{~s<2J*7!(5kUldAioocK)ly{Fyjt zF)zBs@CNQR8sb?BDXGquL*|Zea;ZJ$G#Zc+gfL`h9O{)R@ zDd=pipK;Z&mW<|kHdVrt35a{T3aE@?@FeV|o-PWNafzpkK*jCeCv2vf9P)I7Q1FPs=A6_{;+R@M@%w8)7%M&Z-Obs^(^0Oo_^>oqD{YYZv zl+Zme%3l-JCXH*O>w}*Q-oib48!v0s+MW-)7g}^HQfE@y)2Yq;slnk3SI#LqCHTU^ zmB$qEW`|(#fQ+XGFM0JBug0Gc`sSVx`p!BbOmLf5k9fQWM(b(8+7jhG`ou8w@Dsy? zr=G}{c&7%Jd)(%Ik9fRx;>yGDjb60!n8S5Ps)m#LP$dDCAK#dTJFEm&unrMVr$*Uq zuSH?bcX~XsC|v4mFOg&}gob0uX>#0lE z@gr!)3YVjGrIJp=G+I|A>3Vn#I$^pRUX6~Mj=`(Y5z|A|^Rz%8tL9Kj-v_Tm7fg5W zOEq}~hP)X%;4*a1bQ)fYPMNNU7oiiTtKo&{xak&wH0Gxv^ znC{Lpb0CJi89Lxhbk4Nu?-}TnY1Pve=!EHNI2|1~9fQ-*5z|A|TIJ{g7#09h!H+GN z&UQ2NF~hdy&CmfkKF8)vr{UkxDbw}vBXq)aHT(b_HywlTpd+S-I2iwi9)Mv1-~hVd zb#`nwGjCwXTR;bV8l5wphCf25OxMGW=!EHN_(OEubPPU#j+h>zrs+bfz6uKfHL7MI z)U;abW@ZD1yajZ?`_MVls(Ob<~XYTU{J z7#0AwqYE%ALpL)TdoXVS9dI=|XF3hPh)$WVhdFe@bTzyg9XB0=tI!eCLsXb6&;u|m z0L-8Zyh#lW-574bkhg#i*ow}XPQ&ZaDbw}vT6Ds6HB6)9repAGbi}m21*cjK2h0o$ zfW87LB~)b+3doiJSu&ql{h#~?9bR|{H! zAx`@<&;wAq4<^ysf*HEu=P=|=cfdMy&U6}{j82)Zhl|h&)79_pVHYuxXH%`FP+Yf!Y_$$#{L!jDfnfWfbRxHXYh;uSGcudkHoAEyFly3 zdMa5zd>?xs9D==&Pc*~6EFOeC=znAHhCe`e!SBO7{2t_l3IKmxx6CBoqiIvQ-c9AwX2ycV~@cQ8JGuc4Pkp<*6um@fRyWy3v3tkTM@G{s5 zFNGcO64(xxz#O~?W?&Oc!zpZtW_Uh21zFdzjqp5J52xX;qqvcCFeEUX1#97%uo|8Y ztKexc4o`*U@Dvz>C&4H@5rW7eKEudb4wwY`B=)rOTLhIKofwAsiE(sym>=h|0+pcx zmEqwKM5e(`SOYuYJlGBofjM{(%)q%Y4G)CPuo9-=0k9EP!Fsqqtb>Qb1Uv%Pvi!)A z%v8g}U==(H#^D@T4(G!dJQzkHHCI@`{h+GZ%UR=Q$Y~H(x0k_2G#&VaBP`S7VK~C_ z#ZcAn5?Bj4UB+fr4>vJW1s6lr#}~kIcs^9U`~^sJx5($A>gV&|FxBL_a0t>PP&mT! zIdA}dHtdII!9GaM7ml#}IaolS3VUE3z08C|ET4j*3&Y7U4^M)fkS>M75tdJc?dTI= z4laZl$cY|~uzWmhMjr=L(7{Hy0M6~m z93BZ{@NgJ~hrtLu6b@6J%!fnp5I6`Ah68Xe?1u-zK1e@EVJ&t5ETH#?J#coGnQms{ zunW$Dc{mkz!YQx=PKNDp63oFen1K^v8cu-Ca6C-G7;JYHLX1dHGx{DjkL0R9{H!+*g(xCi#a zf5HO%2kcP=`5`l$i;>;13%(EY@IBZG$$V@F+y&d=UttdZADDrEfoaIX!wUA#FopgT zY=m#adbktT!9T(T`~$2l;{1DynQ9EbhgI-R7>7GxIs6@r!Pj9Fz6K+(9}aUm{uU0w zSK%Oh1rEUNupj;g_Q987FMJ6WU?1$!`Trs_-SF423%&sJ@E5QX_QDSMJZy(QhdKBh z%)qTM4WEV0@EMqb1=t9mg7xr8SO=eg3AhDjYngeRnQHhmSOtFy!oG0+SjhI&}^ZKxj~*F*j2cpmDZ(9dBUKBx0vPldK((65kZp`H#s z10(QhsHa2)I0T=9gYZc>0H1*Ua0~2%kHcR0GgyE>g*~tbcEioE3qA((@KK%roy=^) z&;fq}+u@I44n6`iup6e}L$DG42-d@?ta$=%MAyO}!fHrcw(!@@1L$(}gD?hZQWpNo zk$spS8(lj8hnSg!V*vgD-4E}FeUPSM;m@88=pOXOs;R&z~&cmL7 zim!#b=w+*!IRr-)RDw8EU0n_jhB2rFQK-5*0_VbE?gO+*hoCB~K}hWx{$SJ=?MLg{ z&3d@Sh3O6@svl?4#sjR5ge(bKbxNF6>wqaRO zYxVzp?)lJvU*1>tp7-~A&bjA4-?`km7Xj|6YQZ$H2CPQB8oUOq0>8zI9|f!6r65l@ zO2BUrFH$@Nau=NsoHzpT;yK{G?(rWVcr?obPaxq3IRYQZeZCj`H{yvP z=a2{FzP$tI0slh09b~)>6E11|x2crF4rAs$jZALQXT53EEy7vv%cfIK$j zfRO?uvhm?QB(gwv-w)z|;hq7pLtZ$KhKbUR>q;xggBSLi zo_pYRAddlhyi4z!X|39Ivb{x;$We6@oq80oOaUA2_ zI5s)=u!=*m=WmE(_Ib9U9FCCg2}?cLf_NRc74cedCRhXF$m*WJaKu$`)NxN>&PBWw z%iry33HWOiC<4bK5dyia@cR*?heiAXkxEz>=Lxdm}Q94nZ60)vTlPhhx+(WZL_1$cUMyEm&^uC4WQ zhltg>8~2CUK>C=YHLJ5saCuo$T)-?{j%(lnQ@I>}7YLa9tsPj7>*E3Q-SVrg&!%Ikc>?%{@p~>} z01f1+fooMEUlpoUAvzOz@JsWO7*`~`3{vIFu=B7z08i^ zGl>B-$b&bBg(^^^20C9uUn}3rJjw=U*zymnKF=aJydvKsZ&iDBs{fPn&0XE;$Jf(= zwgWtG;xLwu8b%)N}eCwC0JWtp-MCq7g^%}uL@<#c~bnL`CA3pVZr}F_69Qa5# z7U+<-&@o4LXapzd7(q-8_Tu#_c$55Wd9!@3yhUC_$091yBDz!gNUI7wp+K9wN!~91 zRNf))=Cd8(T@xHe&@qA%jo>2X6O~^r_sVa#9`X1T;C;`WBES5P@+|p3=$IpixkJRz zHO-dKR(`lVM}7ev9V%6au2w#v{AN0rf9o9E;7$fGf;v>kDx$E1$L@Jk^Dt@iTtnfQu%lCsN8*xJtlyE zG34OBrXHWGly_fK53iQ<*9j5!uttH-_te+ofXLw-?9{o|`?c1)ucb%%dX;xyOAl|9 zZ)SOTO#XEZaf;l!f`2^7(YM z*P`}rR=!pF?aH?*|ICnxtUo&IGGdQ?3LKF8<*jt=#}l({g|;*Nzbap=4h|Y>+pCjLqoV_U&4ESo zfIM<716*lvnB)+V7t8sJGv;^7pO<^FcjUmg#WPOLVXM$OGn9@A%nG3}h8cca zev2(1@m#JzlN#6{?~w1Lqk-&@#~ogj=g9vm56Hih=gNJVwtlI6syym?1XqU@s8WF& z<<;^X@*4Sb@>==(@;doRdA;0w7CL}M5YRf1B@fXteosJws0!rEWAYL@=0HphZdblm z`Nx%SQvP*$v;1Q^R?-@+q}_+v_F9nV_&p;PXjO$d@;3P@dAs~JI;N;q9r!Ihjt{Lu zV;DZ5V;zWU9XP4_B_TKM@ea2gXbkE2e=Y-DOV!{-bo97ZJ-$|X-W|oEQVn#3T=mp; z)>ob{-sT+htg!k2qoacf*kf`SFanMa*3WmRA1fCFsNhwFg>s*K9lZ!aKHS&$}JLL89nCkmg z|L^p!Sl2X%zEwVwr2+#-*#aRI7)M73vX!4tkHg_~u;u zJnCu=9;Neodgrsux?~}MWnQOcK7x)0^3=d=dA|HAc}TuVUL@Z|M|&}~_ebSxl>dk8 zSpHQC#ErHitd;xeXrNvVoKMFrjON-oaD~d3sQfJ|->CAxRlZdDKggr9Eo@0R57jVk!% zeRv50bENZ8b(!=y+{%(^%g<82^U-yDz7z9J*yC}yO@37Vv^+M<=KskDP_ajC>QVey z>+SMPI+ytzTVa~=9m@03Tg=xg&qs2x!<|pdyN!+x@qrc`o>P6#O6%`OR3J+QI^;QW z|2Q;&4koI?Ogb8DQocZWukvN|9>_1SBX~f0pYnXl8r$>BBY$I{D*|(Dg|Fxs!BOlW zIPk%7%m=hc_`o?fkfjC|%CqI`)K@_>8~9dk&}2#k1MVE`kXKH84(gev5!LNDwv z*nyBbFpQ4!A*{U|<|`jn{%U#;oKr5a`Crn};XJkXm^|NgEdSRSK!fdSuuTO*s?dGB zZJe$F{|gdsXQ(4r1(QvDLu-=+Gs>@ddfc|n1grrbezvn&%&;dT9kHd3vKEsd0VL6}i=MIx>c|HS>L$;jH z2;{I>&Swd7xK+-F4s!U7{O~w;`tb)k1zJ_$Lph&z=nj+Z2v5rg$@%m|4(=<(F#+6K zIIK{fk7MMpP0q(Qa`=NhxAXh|XA1DSj~r5_*b(x%kQ~mJSILXyweq{=`{ea+@mFK(kIDF{lx%_9k z?!E_`b6}tf{GbN>%Jaq9%x5bDQhtf@Mamb_BWRG@D~HvpP^$_R zs<1=(JCu(p|A6w(DgT)At;)Zo{9DSuF8@FIyKwi73jTmQe$OW=!0n&I7j#Zxz*SGT zX?70$sC-{K@*(9%DxZYSmBYEpM+2^UE>wPq@(ZWw_+P66t5qON1+G^EG3D=2e!BA8 zm2Xx4G375){#oTcvup=mSN&~e208iL=D8$K)wn*r2;FIZ&kij`2)&VD(^YpPGODmN0i^CykGf7<-brq zazF(FD$t?=U9kt`a7_7-@*T>jDfFaQ1w_u`<$ zQ#xN{nXTYs02RJgh4JzM3vK>lxg)zEl2;{3ZFH)&yx&ZlpCUg;K3hJUo`C1_Xbvt=ezEe`$XCdt)+3%$1@2dYd*r{9KO%oi{$gNfCVgUTFgX1~3QSR0B)p|CZk%Pg-Ql|61;o z@0O2|za)3$AIQVkP9d4ITls_n6 zAa8(2IKoR6Xl4N{!>=^U{;CS=l>bT|l_z1B%<@}sro>?&9qnyb{#^Ns@?7~l@)hUv z_>T&oDsZa`oR;4sPg-n8utz>o{+fJ-{3H3L@^9rOaxeCv9N%X7=nJs?8Msq{^H~5> z^pvJ3DE~x$nfwlWpksn~F3BNF`QFM$W+{-Vz!mao@(uD_`4;)*@<-_jxXD8! zcvksh<(uSN<;UbtT90_XSKvJr=#PCiXX$71G4g~@^c8y@Z{9*ZO`P=e{{6l$-{EN$U{NJm@Phm~`TO$s-Sh{+Z!TJmQRrnlP|O$@#H8_ zqyjg|E9G0|zmeZ9e@~A^R(_6rxO}pF zl6JPn=+A1S{n~%FEqrlTDaGCsdd9nQO@?Xh2$H{AKdL%CDE7l2@tz0M);n zfB)kM1}U&p1*Xd%lh2md%je7gAYUv$C|@CeN4{R(BEMb!j|c<3@ttj@oubd^eQ^C= z{^c3o72gl~^u-=g`QB&vFgoU7p90(7bmjl9@|Vg#mq*qq@LvUfDNnk}Ho!l@vcX|$ z@CEr|`THvGSNVU-$H^1${em5yDIY>dd)M0f5ziC_?pA~RM#Bn=RiQ}vhn25X{z~P4 zqx|#AKd1a^9gMYO{|4YK^48UM5qwWahkmaH`r~|`9+UG62mSx#bL1b(m(kI| zf2)Hx%fEqh{GMtC(4(wt>4DtAbH}xAOJ!=jCsxeD_th!~anJPs;yS`3&V#aCXfO|Cx{Q z;V@Q#|ER)+bo6+%DlAw2N99YE4=8^Z9dj_}I@{h0^aT8&LECw=yiWd^{Kbd@2{_wj z1zvpOkRktGo+Ixw-R3WmPm=R=oAu|&?~oVCYvmi{e~?GEDR5YUI{AO(@5>W$_R0}_ zAwNr=?AQ)XmyeNOCJ)L>w2n6_E3jJyw#i?XzaVdsza#%r-XTxI$t63Ohzl1S zM$)lJV#U_y(3A0Z!L`=s)B9ujwh>f7Tar) zhg7~@-lYe&e-`km!B!RU$^-H?RXCs#d6RsR+RK+; zD-XGj<=@N-n5yI2t_SqCenS4F@}1X$`ErQdHh+ZK)nk1v68XDn0!dQ_0Drd{I1^3?@|5>`F{BvmES4HuTgu14!jL=_Kq^|Suda~|6BNuGYaqQYd&!cUtHjw;G8k0htH_Y z=P~|oV>kCPmt9Bc^)oK^ z#`o=G`uOlZ@1(QmVjk^W<~5Vs6x%nLh^$lFg5o zC!cRVzdX6OX}&yphzaB;r<$aivgb{oFXFp5d|y*`VVrq+)oAZMQ!n!x?=_?Qn3v`y z_c66E_|h5zzbTs>Xa4y}#_)zO<|QxaWtQ(R7-&lFF7MVb_VKbqsfooG$8QKPlUcf4?l%oE*0%gR&^NCetjMupz^2eZM$>mzR(K=b#ibVMFpn z)8|zz@GrMj4Cyjy!ep~(RYAHbdbKRwyb~+)V|2x<3g(#4UM(A9&YEF3Z(Omm`07a$Oy<@C zzbRRn+z(R}Jy^EKWLDjZu1z-U-zytvdSq=FYWAYGx&Jk^9XVK*Y+iY-%!!{o*{rC* zyubdct*Tjlc$=#Hzuc>_m310HI>g4`{O4~F^h6B7cfR*p0 zm}!41>tph^7j!p~)mXk|e?rsi|FSN_jQYRg75&ca;0I`$BtivPUo0i9~9%=sgupD?FGZk#cyEl-1YfJE{8>xx2Brf zdm{;E*BfO41S&^hrjJ^QtZR~Zi@$*166n*@A9|GM&ix2$NsN)AYSo);I6f)K<4-evFqMQYCL*zYY^T{yOxoer0lsSyz-ivmsVg;Em5H-nh18%A`qpgFGHT zN1ZHAX^6dBc6+y;ScW!{WA@%Y+MnbWnr34rIqq_wssDaWSIqH6&#g#nh^;MXi!*(? z-q_RZZo!0P4!a`l@z(1Lx|pwzty_R4a(k?{aVxI$nb8C1+mva(WsN>Pn>;VwY@fa`+q`}28lPF@ zUF5^O-gW-PKC_~1&0ur-A7zno#mmQS*m%RFi8-3qNt3dF{xsp|Pn~nZ9B>v6HfOzB z;BzMs&1Lpj;Uc_+waNaJ7>h? z@tvcYJbtnn|I5(>dvkeAM%1Ml-+jfv1b#GoWNinh0S9Le7+T?Sa)})zV$E{5>|KQ?#YttGV-~6w#b4>Ke_1(?xXu)8!`PsYyX5wdM zDK_>++*Xhtz+8;^nJ|TO;l$`7w^W)L6zAodj3mU(p;9S#u&zkA|_-t$rB{*;6(AL+C z`*zWc0elVu2gY&I;^Auxc9{bQ@+KPZjDZQJwH-fiZ8EzS_3v+5yW(*E&aKHAX3WX5 z#2z@OafhIJZ~C~w#{2NRUiUovc3OI?n#45}ci^*_alYgU4aSer-&;Q}#f1J6=TGA! zBsk!_&K+u1tlk{>#o+!X_G;enWIk?!LlV1&q3)iOj}11l&5MScdjEigG{$QAKMakS zLXM^pqe(FbZk;#LH2>gBF#h=E2?P8rfq~B?XQBLb{4~MbHF?oQv*)%|iDv&-n-k+o z&8&?h+zIJs7JQK~)Xd+!s(bvuaHi0E#f5|T6i5yM_y73*fN!>(1*Pfcu5VZOH$$FF z9A-i}a}rE;^wI>pw|xDOF{$_6-7U$qf4O;t`Qf7t-3K&kI$BVd-Kaq~E--Nq&l_~l zyN{(M`*DKAq13`tZB`uZJJ_^tT{=9iM!C+}m5A@jY@*&&ZpE@`zPoUQalS6=YfcPV zi}#41Hz=cDovNrck8gk(*Z-OsLptLDovHcMRAUByj$!V4>c(`ujEe6U@Z@G;`Cz_s z(mNODP58`zTr?GC#mtnUrvCY^K9h9TjVUJh*sa+OiQkshbTcUr7Zfy1|Ea7szVFpH zUA=Cj=h_W(*OnAtd)2k(*&oV2zo)$}!5n&YZng+dv=4R!(CZAlpH9rVYgU6+CX~v@&ki zqxxu8=O)AXjpy&U&FleLeWO?mZZUgN9P|B+9_6EelRe5W>cO^Kv4(FkvwET{)csKG zWrB^CP94*T*NQv9B;>0tohru7U8ug4#a2P_RW=y1bP7OrF%RT?!;=r)`Q`<;BF-l% zU~>&7Sh~;D&4zbi%K@De;1(0tOU*YyvGxWJS~{3YcNNB{Nv8^AH=-i<5}2pK5|FEI zv87X_e26sbdtsJrHG7|5m%4}}_an-Y=Yo0oHW~nb1?GSlgZq$#O<)$B^n>SuK9J?S zAj>6!l_v9%OZ%Hsk8VyGeKBHD#O8wRSuR)tUIZ3_7lI*hj#>ZN(o~cEWXQ)WvF>>A zw*L*57Vr^j z5f3`%K09qCh-YJX7Jx+{I_^GUPY$^XtVetq$h8%_ zME8jyW58c=0fB}#l$N{s! zZ174j3*;j4gQGwn$jkd)a5|U>js!g*%XeUwbJ4YfBfvJ0K1Sacy%*AT!9Zw z;8HLK4gwoNUaqeP^T9gM2iAi4^S=AUkjubocn`1&ycCRryog>3Vh8K4e~V3J*{0Mq zjz16K&Q*v@8tS>(r1dSI8h1O+kg;>T9nlb?n2>H5u?LH;8*ANeD*KiXj`YOl#ve^| z4&F07o8BGkK03vLdql3lZSw1s&y!cFKBtqzQ_AznXdIg4A?p#(#|jjwKzxGj&~SBX z0v#PFQJ%*IdZ~P!JSyKJuaZA0ua-B_v2(WPK3HErRG{+*@2BXP!gf^{z}b!w*2pK) zk?)W%QNC7wgS<}8qbh&1*m+uN{?{>n&l3z_YWJfMhYwX?b2sZ>C_fx?ii00 zm_bL~dX>+kqrDoHzg^`URsIoq49@X;4k*y10)Lk`%YUF_ig~2qkb#l211-u=m$%BV zprZpkzu@poIZi~}p;3+#7I*xfe<;8+8xDME92?*n5Qlkko*{9#Q_eFe4!@VrmLI2M z>iNWd4kzeXtevOvr|7*g0ln?`JsIdZ?=9{;fgedn<<67!acB5!Iy#*Ta^TA#{&%Zb zqVf*PaJY_+e|)nf){YO!&C)2eFpvK%>>6fd1^p>}?QsX4=+k!QI(UEE$mM~C?5Ar2oYpRN2i%I{O2o$C`pa)t_wWB?7ktpYRT z|CC=wN7)Niew}=g{0@16{6RTip~T^NI@X#C^Q z3l-_VkPnxylJinN^Bd%s$?unQLYaR-Ud5L`G4P=RyHwzF`5)-$1bfcmV|rigT0st< z)4lk@F8`X2FT$N)M}MIA`~UtZc4~OI<qjN`ra}U?~dK?bt zpgi+@eF6ub5YbcQpQ^pY?k0TA@_}Z5YPr`GTzRQCep|fh^I?95N$1~Tk|te+KQg>B zD#=7Y45pZLU%5X%E8aXa>8gx|0$=&Scr)?EfH^h?lVTzKV-*C+aGSx+Y$WZ^o*dra1dio)HxGRkH^l55vm|ikDSU^|b|<5o zc{z9f(74%V!S;0v`qiINzT_ga?z`L>{Tdawt>I+(B3>q&nXYgvXAOo@HJ`fyx8|9+ z2d*AGHnh=w{-^u$PCloEyLx_I;82T+;y=#hI&gy7^?cWf=1`BKq=xpVD>8=0MH>3P zUGY%L^99S^i8Il^<|be>uQ+5*wB&jpFF#%p-?0Cais4C-mN;Cs%ETR-c>PhErE?s_ z14hTTDt=V)!ywBygO8y6AxozTWch=N#}sb_S$-dgjWJkn>FfbnzAh679VYnr2hiCG z;t{E1Ye4LugM3mC=v2u!%cCI6m4mxcuGG>gmKVuafh-pSA49nUOD9hr%)~rJ!pTA4 zi22u76{F&gnB-FxscA=0?Udi+iQ$a0-O@P$9x=0!MyaKz+`^UC?zeWp+Fz{2eeIS^ z`?_LOCfnPL-2}hWQwcCX!zID6s9x$5y`>c$f*HQsyYE*A-S?{>F^f9Wn~{DL>8Pbs?$)mCaL4(C#e1EF`KI$- zDBNc090!k>xbN&T`Od8~3vj17gycggTwv+&HRhPFC_IgG$_IS_=@d(cFEMAF&mST? z(%h>!!Bdt_JBVf2S-ly$2GtK)I(wK#wJI?Ra+a1`I(*mp0h9TCMQRTg%VRM!3+ncj zFD~ay8gA*NyXp0v=??5GIkHohP7FL^c73lYjY99^xGbHGZu%H%V?F!s`--Vt-TqrK z${llxn_TfJN%+nf8+d%gMcksBS!#8MSB|44un3J>{dMA2O zYw7HC(|b>A68RczY!tx~ONXz)K4Ok_rl&)HiFA&olkKLHe{j1w`Ukh0i!5%j*kyAs zSUYCzJ8PLgVrBgcI@N}o1z!hS!S}#J;Ge-5*bMFfkC^p8s+0LpTt^Bnv2=oNdKc1| zOD~{N;26xElkNRkH|{6Z|Eginb z7@J^cItzL=(tJxX==k0A0i@lo@Nv5685AA-?kD#1-pnxM-f7`c?v5jh^JFe1J_Bwh z8Y;GQ_*P=Z`Bq{wo4og~uw5^cU|fq6Eu926dmwDb+KO}WBljLt+1;>>C|hgkzK$4s z-Z-TpJrix?G)!S~Iq`0&)Ur_h@OC|KwLpM>+p zzE7IF;=?z)n?f;^yW1j5_jS71kh+9ZmvZEMYc4lues={Oe$nDI^1HCRXT|p+&WnSf zJMET*_(tb;ekZsX^=m90et*Kcg62oF`64LJ2ZOw|3UmsXMm#9;)wbA^bqU-3B)<+` zg5n95&gmqklM}*IM{`n}pqx~`XBMX=#r2kjwIC;bCu!CvaBVZcN(gfk*$cQc;sg%H ztI#%I?Fu@r;1P4u7Vgp2Ej+%f`px&Z;(Ro?k%iFTRp4@X$kJKDxLMy>JV(Wbi@eXX z5XF6#?pt5c6%4>qOS`Ew-@nSz zS>WX;J>1escT4X=>A6hvt*W@X?7meMblo!VM?uC9i3h>i$j2-lzEl*)ghXxhJD@lZ z4^~?`Rc`vO&U6SGK$>p|1)Y31eE?~9W95yp+*k3sA?OTe8Y52;lR*4kBA96DBq-j2 zuTV!!S`T;in$^QDLu-|QyJqrwvAe&uba+|!h&h0?JKg-N@f0-8YoegzWg4UAUyn)t zwV3NFuc?AgJBTg3r}m8e8!&cmP^^1Pd%7K|>=_;k+to8X75Iw{#`RKv+VD;395l$k z=YkIZj*Aw0*%nZ0(H}9|5TfJ~F;|=}@~hXY?55a(uOjp|u|?bmVi$nclixvlGxRO2 zLQ&Fuhp{EU2IXHPz(QUc|G@VM5;;%pSFxZumK08Px8d1P9;5=6&UB{H zpGj`9wBB|#=&ilX={UR>fJ+W!DZB&7gR`w*o2AprxT!=fcRgu@;#4HK&(hiBrVsRX zm*p`u>Xs@+6o=s8MoWhmj<65yqek+eI1UB*_g>J+b<>NG?(qcXGyfR#gsJSK#uA~} zsk(m!1|5Fe#f}VV?#NIn?gMkO4~|6aezC{CXSK-ESp{Of>5EeDnpuxl4l`T&hEpOd z@HBgDVeV@+a==4+x_u1Hf|GvmU0lz=38GsLJ$1`rkKn$-0dU`0R|E3BKh@xiU=_&s z21G&p!QB008XwzV0)GZX*COuY^g{?divV`C?yEHOz~94jK|Y>80KNpWgTDi_!Fn(Y z#C&%e@;vZfcz`dTWP{lV>;U~L;05o2d*s~Q?uK(Sb2|Xu1&_(O`BcNX*)U%X zZU>|C5^x(lB+mo4!UORUTOk{PEeQBkzzhBw?vb}+J-idnEyV2r_$xTp9oMm_-1m9b z%F!A3)q+uZ33vy}hva$S?eGBqtnAJKa1jE2xfets_s_)4w`18X1Y1G310Xh~J~4Sc zI2K+juLg&~qw*3k9UhYBfj!`nfCAYdwmx@7;|RR)54BFv`P-GvAa~X`gDv1%kPq3v z46Fxl1M9#|U@ce))_|A`?t5o2vF>|k!eA8f3cj$W6d%eFC;`jBBJfr)1l|JXgV@Ko zFPgzV#(mMuO<*?SxXk0eUxslX{6^3VJ_33`#(5mr0JekJMY}8U4IqyP>*Fr6YcuxI z?%I4k*oXv{m-`+W?3>-Sn(-RM*MZd_cE#@6{Wj)MDSVANkcwT{QiSuNIba_67Sg=K zXN@`8na+ZqgEUw5H<0$Z=}ez$cVLA(if}tuJg^O1V-|I$c^rvH?HKqP(mal=F_oQZ z9xl#8x*Gf=(p7GHZ)ds)$`{6PGk6^7d^dfJ>0*R)pa~#1hFYYvz-1;m4e4bFCqjQf znA^l}!49mVYs@UBuS2>88V5FmcO%{8rq?rlEy8usL0~O-1JX6%HD(vmb5|l<3M~RL z3PS8So)%uf%$5*KRdJtRCcF0R?k&j>%;FL0hMwH|wY{`o03&GZ=> z9v9!5V`dBuFT?v)9vB)vH@!nl~(dR90R-#W$g85Uj;7czyz!pq}4=A~gcF9?|rhlR13 zo5JDYpNJ7?$8WZdK+bQT9ua;P<18E*-VXbGBsv~4V@Cl2vvyQ?Xl4Kxf;hNO>PPoO z@|`%x;p9Zk)1$%*lVb|!4Y6T#Gz*i_I@OHJ3V(z)dyfuBGCQ9yb{$TrILA8uHafmY znDvpJU69 zrQ=+D?gZ;o<(JE6$*+^oQ~i^wzsfoeOJi&U6)KPJTTo( z;O|tQPx9mN7M<^LTdENrSAl=2zz^~tGp(PZW2LOnO4nR)BE7o zC{0nW^7ku$iTpu1pHs{FkIGlepOu%$8|Amk56B~%6?jvDZSrIC8hMBOVfjz;J@T&j zhRor4d0%-t63$q(MVsqWIIs=v zh4X#+$7qgTEysmo*Eh=_kXOkU%A*Z0O$k5R$CSN*p9!sbv8<>0Ti*H<^U{G$8RoAw z<*DY8i^D@rY;IAe3A|O=-Q4-bnpAVnh2cxhbBn@5%mWvOr<%Y;`1JmfYf?@7n)L}L z;rLC1&Gzjj__f-C@X&_Bi^6BeneP^dhcxWY4adcsM=wS3zS}D@&FA;t@_>oX3lB7h zFGQ^M&y~X(KA4ANk9qS2{B&^UT@@FYSKf#^X7P!QspghB=*fTIi2Cq5zmwZ4hBm|& zguje8cjSgMO!J~}4t{>(F|~EeCYVUwvZ{vHE(uSJGY@}yO-94OCE;yx=JspXXEeNe zY52lEX7zI=0~+S93U}*fu2~b#G^@Uf@85a1z+Kx?8(vxyUfHiRV79Gvd<`=y!gD8g zh8nj0E}S|2=Rd}O6wC89yz`&%=*2&Wmc@FfHVimF^5x2(LvE>&k4Emlq_Y|G(XU41 z&V_FyFZW8wo|-+Op|(r(75~rKad-6eHH3#p6In$<_ zEj;a`^ymA06m#zdXnr8UpIm#E%_rjQfkVvP^@q{+CpJUsa8%;Z%x+_78gKu=p0||e zewiJMCJn|;jzgY>r)H8Z;V)ocI)Cajq)Ej(C$UY%N>D7$EP8hS#39Wp5>rdt(rrXW@sW##W>S*3h^z@z16@R?Q(Nszs}xQnbDqR|IBE=UW1=R`5hfyJWozDalcrd z*3b9kKf0v3L3FS>EiUk#X`dNQVd-pB_j*y1iOs$)DeikSBoH0lW6+Zycj^D+CtZAI z==&u@&5tvp=Na!=*Cm+xKy>_L=fo(X-8$o7WFCp^u6Z z5=!GelkR)1D8=j>aiiB1O}NhI9m*T-2cLgytNS%5`o4*d-*k4b{!jk1OX`!yy9{{p zW3#tm?J(nAeSNygyXl64hSu|=`F-La&2BhvQS_p2X3mYFrnoT;#re_3coX|&sGFHy zJTKc6JT}*FX5SL3H9K#=E@0B{$PeI0uxBSVv=&4^Nid6p1BRHQglS3UKktm`W8TXc z>oZ@yf%ReH;zGY!_a<&adiBkeaotV&mC?ioH2YB(6MAYF78U`%hwm$*Y=|+t6GR-O|O(UU{uAzPyVG7q8BUKa^l*tX-YadoxaOI7G3$ zy12gzi%;loGLVWd?`~#{TbmKz-rc;sese~AdZHP3$<0Ge;qq&{rKNOg8vLYjXi`Vpd zrZmHZ`p!-?r+%pPne>v?iE%aN^LaP=Ohw7+?p?iZTYJZqq{Iz0%dTII-@pIyhQzKZ zw#gH>q{R8mN3Y#5)Qs(&(%r1Oezh;YB+V>CBreU&K>7H(G?VeVtM4pE_g`9p?(ciH zG>vc7Ie-h8$3a|{3btB0e7g>ve_#h4{(+t4nm}C63Ldm{8s+=s^&rdf5AoF~S7+($ zl-J02fGiiO#s^$K3vRJ=_!oOR|6&iif3bfR1vkQRoh(>l=@f%6BVMHVD#Z&xT+JMt zD^3^v;6B6?MgB1#9vOQWA6S8Z%_sSGJr>*|P6u&0bZidz2V5qeWLY>Id;!;o{g#do zY=rYK`=H|ipGW!AsV)oK!B^1Eaj*g9T3tr)HwGmRgZq#;B#(j5!}nV{jf(F9e~);b zrL!Aky;@7B2IPpUL3}F>R>`B_bMSIYrx^TQ1c4%cK#x~}d*LBVCm*bbFR^s;KsG!Z zd=~M5rIVxh81Nayvn-u-#l7Iuh$mS(35uV>6@9)$E!d6^pu<-;vd6r|0d#L|;0T-H zdk{Zl=^O+xcY`rYXFtet`@p9VueWsS6z4q69v70`5k<*wR@A_JJ2DzXZg8!8}VR2tESOwRC2K9B~f#FyfOU z_JflR;zTDnMg`KrU2vbJ<5irk*CKuzM|03=2iYL+@OTLEG%})g7+bwWa)Uo zzVOrd0s=Z6AQ#ywm)QPK-~$^x4&IAItEF=k+yQT~bechy9gLti_Qv==&=PfUwvju!5f`V1}a2FDrEuC_(8eVGYYy{ck5=*BD9oz!X0VDX}9L0Av7HkIZMB$QJZ+bs$|09sdK>&0nDUk(MAwJyF zNmo1tWJkP~PLkpYAUoo*bWY>TC`WJ#WJlU9of9BC(q`$@CS&_&!72pqKw`6{Qw}oD z+jTBMoVV-Hi@@9At1O+6^7+c=f$U(=(#cgk0J4MAEu9?2vm^Mx9*(hevOtb7T?G=w z4zK&O%-|_YrwwF>j)J$Le2b-X7-aosOQ#8BxtPrd_ggxRHXn@eP9jurN=7iqn1t!$Ypof(&0T!JT~z81tjlT;xS^g7y=vNK9KG4_xNR~&zqJ&hc_#|g5Q#k zZNrCKkvMMY9CZ`e8o*VEAF_0sz^mW~Ege2x>OLM+EDLMF`{6q+3;FwvTTp(7rLzU( z1Z)P`p;EAvQ@D{I&?DY2#Y70a8Sw&3Cm-Z8U1I6pN5yi};p-63v2=JN6-ST-GM^3> z!+n-cityTL&BF0dD{Ogoa?KmHf;32a=c zc)J%H+5)aa`6^3iGsr~{wRB2BmgA$})*@bH>8t{W!9x-I!N~(zFaQ=KG2PP10omXr zOJ@woa(?hS#M3PuAGijdV(BD-EZ2eW#@8Z#%F^MjXpA2Rix7{r+7HfAkVmn@DsTwo zQLf3-IjDTh(%BDknKxQGbs!tA0aqiw!_wg|+!!wfuSR^MrBiII+7fKCboPVyVx4KUEZhz5fY(|U?f`LRqPUuj z;KrgY_;4i};N5qi69w6!a_|boOD&xekY_x_mQE4Kas?o+QU&uZoh2Z*o;*t@0J2;b zn2$K`*8?3t=x+Z$eBeGg#nMRvxl2y8bUfgtaNW`8oWfV^CGd7jhriL~DcWJn!b2cO zco5_&8rpxu#mU@v0^?L#D7aHojj0R0e=DuIys;_MK&KC zZt3`KKA3LlB!Db;ipOO9*KXBv`G zI#I=Wdm-y>v~)@o&lht+?pJ18I@1-O6v2n7NMu_&yb+NjOagNePqcIr6hGbFmhZ51 z4udS;1YU^pyb}?0??7aHkMgx3$FtMYDONnfn+|6q!J7_2Cs&E-;01{D*U6y6yARnQ z?>?M@xZl!g!w^r{u~-~4ub)Bv!!zgWVwUjOvGcB5oaGh;CgelW$A2Iyc~28FST@vLAFz5>8t|T&JuAp$VC^hbf&v;9RDZb!!MA?wseMrY{+lv zq=RfIN#sqB(~##)kDzdbv~)_q7|Iuc6A@o!=@fwP!}BejAjlC0Kwe9lZt3JGJ_d~N zVp0}9fX;9wd>}6#@##CD<5fHX$81cCa5t%%|~y4)5ONwW3x_rwL?7 zYQgcG5K9L)1V!BKdItjB42xBeH~wUE$}F7%@LW!rrNbLP*>O-pD(y3z#RcgUei0`y?YCtx*!_whRLoCPJPDdcln}$Fqpm>g$ z4h~1&XX&IUo&*lV4SvBy`@!)j!3PMPg$f;(PCJ+h=Z&kN(*|Gh9c{3{L6u5;~Y>Q5H)5D?Ia|QjDPP&`kyUlIu z4K#wbPQu*6y!?x=J3-t6MmifojB0yyRF4`QB=Vp&X3_R&Y7g8|SUeqS%z7x=_!SBP zdjYqpW{>+9fZ!oZ=OBnN*}^@lQ8;GCS4UHmxxL_wk=uF&q%)zSWu zJgf@ya6?W2Yyh*ti$ShSbgnwM1m1O!E!JW+zA4_*wv>AvwjiE#lVGNBe(#p2j_!zU=XYY z=YlohMPM~J8>|8^0Hfe6uoRpDmc;kRhJg><&auV0E5&)Ha>LE3k;%{i!jr%pa3aW6 zV*;23jtBi9mX`Z)r*lEBD&xRJa4hHn$ABGJa=aC?9XuOs14o0cU>4W{jsly(ks$7n zJI^x$A7Tg$2l1uMz1^`M%!Jp0ey|oC3StN183I;=>E^u$H;#%7godC4z2>b}PfTzJ`@V{Ua_&pc{JHSTp8?YYy8mt3Pg0^QSe`2 zDfkIk0v-p8Fn-TJ@F9f2F)$zeJD3N41m=Ptf&uU-m;?R|%m)7gW`QlBAN)Vi2Yvv0 z!6RTI_-7FCyaTemYcS;ja6g!X@w@lUv%%*OV1uL|d=C}aAPcg=7eO}oGzhpifRkI` zjo|OVdT%qbJ^|)| zzXfx_hrs~&6qo}(2xf!zU>5i!=m*(BANUOD1#7`Xa5ryv2KkE+_x|TQz!Dru%D@m< z0`hEUG03x-+d&?AHiJByxeeqIXcOoID?uKKqF^G(-KGZ&gB>_9RDkVZIoJZ;iYs64 zq3IR`c-FEFYy?ZedhlkDr!3pS8t^8t8oUv#0;|DN5C`c#CEy0I2)ql-2YFw09=ION z1-F7Z;GeK)v%wI1n1v7SZUTIr%N#61+zWDRNCaO4d1wnE-htf(*Y0-kAlL@7d@IPU zsRjHa*bK6K6L>us17AhF5oGy#Fv9Jy4j&F6Q46v{4aoghH5fy@3S@;S$o)kr_zL1B zAj=nlT>C@d%V0jp@_8UP<6Lkq7y#EHo&)v(v-uRgi;&1dU@ZcEFcI{Da}f7}#qdPX z-I0LjBi?}>3ghh{cQkF_B*a@mj<^N94r~S|Al?KnhsVGUcq53_0uRT-_O}L!Is~|V z)`FPJ?vCmRF_)v&I5m*3*!1+kzgIB`yz$?I9a310TkR8ea^TBLz zB;r}%<#0cE8R!FX)O5G^OW}!d?z#bYe-OiL#>{BA;J4AVxcItr%(9))agq9Sn8ze^ zL(!hNd1##VFugmjIx7ELc}(6YZ<2qY`Yo#et@6#v4?tUNuSGtQ-V>K;T2*0*4S3q* zH>yIbD%?ZIDpWtjcJN8%+mz>(2#%l~6ZSwfBhs#RR$x9b-l1~5@y_q@qVSeSNY@~wmqNxTspsCwyVO03}6KOCduI%TfpPZupU+eel@UD z`E2E%Q@-===l7J)Q@)Lk_7l~94}9*^9jke^8XV;YaB)CBhmJL&94iEemC6T{kJ2&4 zB^rVIcr$pl{27(!UCkVLA<|tk%Kwwjhri{iKwK|dpjicc@^<;Tbd=9m`T5H8RwNFq zln*JtiH-?4gidiV$`>jBdw7HeHg~lJ-eCds%BxxQg({S&LhmHofl@hN*}^HxRtL^k zKB|03UL_CHQ9e)Q?@hw;=M+_|z;h~4q5^Nyk*`tyU&>c2AJ^OFYnAuYF@k#KbLf~r z{^pj$0+p{*`L+B514mG=0RIHyE^}3QN);NFe^dE(<@u)=){iOwU**%W_H*#|vH2$D z&!wY7t;!ejG=mK^t3bI5c(Jx}aGySg3bW;>n8(4UJlFp`c2a>m;H9C<*_KTtBCE5D7-W$w4- ze@jPu0oz{0^O6F*QJlly<$3bBWZPh#8uZKa!)Fk$g};f zdfruq4mJ26xmO+Pjf;cqkWW5_jyaU2DPEv_mhx-m+5Gtg2i}#!&0Bw{0b6Br@i}KaVCq*zTIsA?R%(BqA)(@*ft15h@e39}4Qtb%a zl%FJTmoKK{z_op_ZLd)I4&`~58`p_Qwci%l!2mi?q7gi=3cP^J;fN}f=y3fR9aET& zj&aDqc@_5?-m|Pvqoci2wRa^QvpiAl-D*AJ@hWgX1L#q;M)0h>-ftWHlN#`;{3mk1 zyesyI?pC1kL*(u9$#ireOXZi)dt&)V)x(=q!JBDExJ?zZRpDtmrZ`tq%zHvP#U+~J zpH#j?mF2l^aF{BeE?-RN@jpiuZeRd&AX^={Q=TV(n2z!Rl|LZQmAA_CfU|&bwndG|GAREQfdHyv>%w zr|DS!ZU+?Tf|ZZX`*k^_%MZ$@$(!Yu$$4Kehnwlx>^gtu5IMu|pmUCc9JaXyFpHYC z2<}sbp;&et9;D+tLgx<}9y`PL)3Jy;f7Ec0j+2X0Es{g@K3MA~+xFV%IG1QrKEl&) zj-Xk~s5?$Jxehd|KwmoY|F5mHfs3lz+W7Dxf})NJGJFW*H>fBgDiz1Dv`9zAkBU@u zNJ3Q9@f($#8L^vnHL=X4Wr}58D=YG9cuR|JR#ui&)}^vSvo5!+=)P7~mhbbNy{KM) z@BWGZdDdF{oPECLoH=Kowck^JZ`Gfvwp4$sda~*tRF|pl*26SlEj8BAAhUpe#|90^ z)_{jqk5+wH^(@uzsa~M^Yt>6tw@NWH*raQ)JvA0!mHKGuZDDUAP2{d=g3sk?M zx=8gI)g`KbRXyLYhAuc>vx-lsE>``u>W!)+dYA>cS9OZ&XI1m?<^q1IdVHtt+8!cf28V;)Dd`C zr}2H&KVJP=>Yu3ov3?CG(SRFOm#Qw(3I$qWrRs&M?@?W;davq@s$Zr?1Lx@Uj;nvG z`u$BbMB|Z%es}YQ%0KHc>@0l6zU5WJwwLH`)L7#EI>F1;|4*IXB=sLrf0_Ei=5(|55#$>QHQ3*6*BQ;uBRTs?Ji~+t%3rW7UwY z0VUMjhB`yP`ma_0R%%>QwY*?ieTjZiwKLN+;FQ*%r1gJRJ(Zg0pUzlvwzxzC`ctC; z1=@g7>R+k;>8fv2yOZXhd(|)f^!)#%2E3&KuTrDMsab3udJj-zFBaX4 z!*L^m`aadks+lpEC0q3~swb*`OLdv*4|x60@)tE+&;Z_0i()vsLoOS z4K*5EuMKXS4&4DKGrjC){s%sBC|8|G-4VY%{c1QIie4VAa9<7=1}u-LZuwonv7tLe z{&8LJMU4F}zV7vns;gBWQoUXEHq~2IuTtG#e_lh{ly~iITTaLlr;em=2neuW;oaDTWH#@s*sC3JR8U8L(^)j3FN=aKuti!07 z1%EG#56!?>r5$49q3GOJ%@vQ#z93YYz_1UgI2DQ{cp{c0dNBvVGc8W2mxHuSa}G1FhN)!qAi$-grXQ{;;`1KmYBuIMUJomRMH#JZK;WJCYO{bk$9 zS@GgKzMz}rKe=kS9GMu5k^J$i`^tyy5%+p+*>IWv@vJl%z3En$3{J!F!tLL{Ds6M0 z53kqr)9WV!agulWoGaz|zLhC*`5=Vku3OngF7L3Si_HIE*5#5nWnrv@jzQ{yDMw3U zWmhJ)lecf>m9k^#oHV)Vl@gcCuevow5{6+k=DSb#9xTysdaTrxId^$={9#x^mq&Cd8&-KmfeU{MGS5 za%jd-3F)5RLk83bQZNkgh<5_X^7VbbqDTzbYmX8uA&s-T$)u~7#bMoHlxMg6_3C9k zr1BqYW2NNnfG0E)14w+j#4VFvTHam8o|@HF)|^5P2+yl!SRf0dLPx!X@uV9qjG)^2 z9juYnJA7&K^ScP?HfmXdOl+RhH7pY&9#7~Tn-!XwB_RiKxkz z%Q~WeWkP6XrVM%!6MN)H*#LW#36OD*eE!zVi6X%Uv?DbL=<_FVS&JMO4~%7-EY4ps3hl*)VC%@1 z;e=&ZWnp5=P`*V4!J#tx0!AWkPMP8g=e%XanaS~?*%`9%?uip+V>t%p-PUe&g4Bd! zkldXg2D-_|?M8Q!DZ?iX73Yo>UTJ=7`5?&%Tbd*@enVP^y$vO4NT)F^r*fy{KU&dA zGJdOUEzSiP)3)pP1sDzEV`SfO7A(qYX~T#sF^tE+Z8zR3GiH`|5_h|?5mGg?JV6@U zjU6fjuU>q&B&J{-U+;nG7|}r{#z(b`f}ANGe?!w77cWedol9?MBcJt}5+Btvf-=S` z;E=$HCzfY*!U(?h9+>(2_{#G16pRpVH3lMO(e|-%^2KS6DAIdMgbbXzsGUUjU(rLJ z96G++AM5RSW1x@tMovN!l7k#p_(N}N8Ta1uq*i9%p3r7;*9d##;j888DX~($b44rZ zv;?C-*M}}hlux%$j1l+4Se-TRFW)1L_fL$F86SBuAT2-r`b&X+`ew((90{Bb^lO<| z(3OBx7AL)y)SV7oBl(=fQ)yHBiFd}L*7EPROR(=^tY2;waNbu+>!RXsr`Y@apA)T zV_cC_ZHw@&_3uDVC%&G_62K{tr7A|gNgX{rwh>nuEVSbUsO}-!FEHA``#m5KixnSNJ$UX^n^JUQC2yFTGMHpPS^yb!4dPU-h zlug&B|B)9&>b^`cEyY6ErKb$C&{BI0l6^Y$+3Lf08+~?S5VuxnMB+p+SvK3i7QPJHGcH_;v`8i+Bpkrkw;Y=3-Sj5xn7373j4 z!JJkuN8lZYJpEWHa>jgG8ZIYcv{Q7*xo!x|m{1umf!;XfR}ESkE93` zH)=&Uc|9(e(IMiob78F>`ynj+u^+?29y>2j=T-I*Z@bd)kniQ~sM(#R;lQoYa`KhZ zHuB_ax8l2N0FKD{+ZMJFpA~2?^K)?KNiM{YNhe*wRLL)1b4+~67+c0SdqH@uGckyf z=j*-mup_yOrpn!;MkdSb@XOl%k?p7tQu9 znZ01X?3$EbP+OE()G0*PcMrDjyy%t^M}J4j%`=K-(m!K%@nYGLRPi##(K#UaS$KEf#o<$SkZ&KF z&_$N_4qhQYUN@?vj2t(ithVMZZ+(d5mW{=A;j+oc#Cd4WiO@YEa@UU~UC15ZBBRG< z3`4bdezF`ZToEbZGiJMF`&DZr zAW|`}BvN|5Vh61*^>Z=WK!munDUtpizME%-1h1PrYTkQJ7w z-KTcGY{U3cup05jhL#s(e1Y00t34lNya(KcABCPg^T8SkvO(oJ`%)j zM^CPy#m=kOLuVOUsUYj~J)GU#rP+BEAM6)#=!k@V2o=H&?e}nKKZn!T!>~6S+KJ<7 zZ-nNt#P@GNJ8?YiOdOA6#!eg$+KJ<7KL|UnR_w&_33zkW+6%)YFzhk3mVgZ8yE%B? z>G2xc@95C(fyOD+!%nK8H4>yf3&e@agHEcX)t`0@8HAT%Vl*Ti#1)l?*G!;wF2t;~ zvmnm)b{cumItk5{)?jF@2RVxX*b(*$L;F=9+R?+*_D=(GH^YN|mZUY=*rjq#Wo$eH zGho2=m~@eW5D z*bf?7HMC2}&|sY1g3XY)O7T<~+QW?RlR9-3AnOqUkAk#^zMCHBzZM=SyIXNS*4cd40G|Z8dgp;|)$Gk%#(34us5ck7 z5oA0Yj#k+Xrmlg$1*}$o6*vJppxVa+c{~hWHROXH=v>tq;27Byy(Y00mu9)7#TKMU zb*m+jA(Lf7Y(du^S6jhy zXpsra{hj?@e8i@;`>@{w=0o2N=7F0)ejQ+G?7r+9!3^lTz*KMp=mhToBf-Cdyh42t zQD)gNxz`>9F9&Nt#_s`FgVo?=thf~)SfL8!?!6Ag zE^K!}XN7X;n?WBq3@im1?**|R*)Q`91@oa9p9dC!x!@2m8)SS2$ipKQ%mUq@pA}sA z;02xFU@#J71qaCE>^ye2Ot2Ybd=oeWYy^9O4Qj6kS3w^IlfXJ~C3p}l25Z20a1Xcw ztmbk}$A_&jbONiua&R3u4h(>3gWZRH3Fw2K3Fd;!z-*BFxeM$DIzh%of{Q@Fu~UjZ zsd&i01zVFHQCiCOOZ2nU_-n+470UgPoS>u0Dxg&KcVwjcYM zr2$O6!7^C`w(0~HQDY75(X~{k{%ZAqqI!?&3#w~WC$us%JgAx%a%?~yHRkWQK@CSW zUKU-MVtLD!emM2v6cM!`_)y4b;$ntMB@P`%4 z1=Ru7vDh?hzh77u>#mxI%3VS3tqOa!T3uwHyzh#%l85|9j5PhxOE0s8iV69)i>|8^)sOi zd&DuR5Q~!T#;`R5P0ii&ynD)y#6l`mVPTFhHs~d75U0Ziol!q?hEbnY?bG<<8t-4H z27UptRIBD|RV)Xou>_1`X;lBO>OW778T{DNzz)!8P^5k@q*BB0(E7RR=NB4^-%+3j zw^s0}?xlL2PN1z$pj!R>24rF0H_mX3YIfacg9~`kgYq*q_K_Oh<{e?De%97F{`;!o z9Syiz^(U$eRsXDdxoReoV%elRS@q+pyQ_X#^-$IJdnahXIBK4Me$s$d8qm3;Y2odv z(^clNxKU<(~T8)L1LLk8Yp;KEsKk1HM#RzR4D% zQVLdQm2T7PRP&`J7Q9Mp`>R#g!p8Wms=rdbUA3s*th$G4d{LnpC>ON>1?}Xwd&hK< zijxISDY&t3v{XGmIb05<;ki*+ZHZI1r{dGGkqewMxoiSHdB!*;dtrKXt#5eI@eo;1 z?{e0*^8~{}k?$W#v@@fENW#5h6}@1o#?+iG4R~5Q{PP-5bP)+DbwSn=7!)(xq0inu9BOx zc<{Zx$t_pJkPT$$kt+D|O{ODk6{4m|VJ@Yuwn z$WT0S7#CTZE(4dxCM4m$BugU>2bR>H`b;ku*XVL8e$3#cb#6NTc$yX2+k})~g_Dat zVnFpH1Kk}P+;$Z2FxaI)f}i2>nLYZ!6K_mw-6>aR(Tw`IigO&jN_Hg&yGZUMq3)!b z?xt3qfg>Z;1eIQmnS6J9$Ig=S_sDJ?eLRj)^n20KY{ovYp9`*3-$4`N_}TdQTreRU zi^Y<`^@DN{t1=8cdbOl<8Qw+mH*|I- zJ|J|-`YX`kC80QY(N)>{?H|Hgk-TWOYffb(^po&xfv9e7-R(RyLLdyR@1a`Zl5;D+vy>W`=FLc+vUj#fu&A*B*cE z9>uz}$j`#Z!0=$(H<#XOPe08D!IPNuCvqo4P#rr$~gRgd~3D z#qVB*GOTHF?oT>bRE@W7iz6JH{Gkb7&HU}+ zn9{aw?oWJ{8jk0xQvDN#N4c{!m?_O4mqtoW&fM_YoY}$h5UGis8!pwG7dj<(*xblS zY|^J2TklMe>if_O<+q`;+TdB?-1cFCiEarNqfbO&Zg7v({cTQ1xo%!?U~Toh;E^yn z89O&x%6iQDQ~jES!I5%q$XsV_>Y`vi#&P(6LwZWnvY^|<JsDzM@%S^6@=0QfmLcxahku?o!vve{T=o$4?Qp7w!mVhscGl<07T3yy&2u zSy_}P%V$)!muprP&Bu2MACHF&8Qr7SePU`wh#60zZbR@)tC85XF}}f%C7nZa!sU~@ z(35Q%pEjQ8w8|BFzLg|n*nxH@BRB_}PPYk|8}F828j z(((A*n2>g|V?M?!IFB=O@obE$&|b!^$CvJ*e=foU)MFK{(A^!(I14SWN(TO@+ez!< zVRQ_JzUd#c3XfkmVL*jX*G1tmC_aUrjg=i3bivP5@STu9j2Yi?>&wpg4q86wA91g_ z%&@QqkCv7zM!SuMkg)R_r{&XikEJI+l zp%n=(g$_5g&cxbDsmdA+3wMK@!DetV;;Ia-b>KP7V69fpi=M=fl3=(9Zlm4|*>&XjN<6X0Qx)cBujFOz*58 zfM&xh4DF2XZ1@srHoOd+1I>i*etfW)@tsRj0CEEP;B07*p_Qlhksv3WYiKbO{4D5f zLn{L;f$nc;rGlJpPebbhoFz}`cShyGb8hVdm;dby#=&go@n?d~ZR2f?9LC&}w#6t!T6Sad@ zDR>h!6SRZYG_U}=z|a~AB7v8`j6a(2p)d#JgtEYF1ZEgoOvpYAI@QqX2{JAQ><_!s z(27<&Th|Zv3;0n7TIWEF{?jcgD$v78AMCo(GQP@jsFu(9&FWWP#inGYqZ%U{~l= zL(2tn0?{CzX4o0rLF)p3%i)$|*?GglLm=a7K*sGgwD<#__9dWy5*+-+4_amFmx zym|WxA1n`OAKx0_0PW)&w-xN;8)U^M&_2Emtwzv3z74IT;I}-!4GRx}%{;sf3-^Lw z^YAt-^fQ6_e|UTw7H$S{1bKMt5VY2VoH1`L+Q+w{RSI5%I3`dBt!dyW=mJA)B#6Vh zEZ49w2jp~^KixjO4gGc^b^G{+0knE*pbPAe2{Ms7XeUzV1j3=o3vJClao*562hx5P zlOsXABrxli~TCp`Eup6LC$@pw$R6?ie@-c0OJLtvaw5 z^dUp*Ajr5HFa!3ze)GZFqmF8DAROBbE#7D!0L^^opj8E?L-Y9-XjOpU;qWatEGz?? zpi2!4i$NU59%i`?uQjwP z)V>7l2D{JDPO#1yPg6hBs=49Mw~6z=M;$p}3LH$d4%&&ZhM~o0rEGYrp`B0NKK`9BaMec}+I=%QV|K~JX7!vfwCX`D zr01BSRR{75Xs?o8FZo4OuAB_=dxSkAIlc4Y=I~`tNS@T1m=%tWlQ8i3Z7{S>fINQd z4K4P7{04h9dq9GP>;cKM++M@N-5}3u)rN&zL0pl0HXB;&z)sL>4XtwUE5t7e$NI;I zLLUq~Ov(%`FUV~=&9E>V23{(203B&T*N8f?zsqBC!jguLm(%7(9qhh z_9~DQW{*bDLSj}sehG+gagWc?Vo%0S^7QUtpEPbk_BrAf#7eZo>p^T>yYnGvZKqvA z9!4+1P7?nxdJ%S#5r97&nIwI1wgOAR-!L67cmXT`e+BbF2mE=!dFWj5B8YRFov=Ft zWHM2FLE70#-QZ8~yTCBmo#4;VIQV!c6x#)pgS`PinC$%4^=SQ3IF5p^f_304AXm=I zU=4T#WS5zjz-sWH;8yTOunMdL*MTp90q`(b4jux1;6K1p@F3^~Yrz8CFyV_Gc9*UL zU>+QQ2Xn!FU^e(Pm;u&+so+zf8+;OUflq)=a4#4MJ`Os-M?tJDyCY#U_y}|p_%PTA z?gkq$e|F}zJ38(Hu@>wehjri%Xtb8Y=Gk4kunp}lUH604u-^x61-F4!pn&VZEnon= z7c2)igFf&cuoS!-^n#nf^a6Z9WqTWM1oNQRgSp^e!EEp^Uus#1A9*(-7p6b<^r*f>^-3a$m&cp3)mUdxqhEV9M>!Q+1l&#IZj@6 zGvc0wZUpJC2lqqQsjdMZgRbTiNCs5F@E{BUklF`ULwi-{gIl3MKLyu;FME^z7%{H z^nwXsf!g!Ix1saE2rw5!qwJk}bv8a^z<{&4y}!N%x}lGQE)WZA@2|8+LLUPG3>F@; zY{ldLDAq$vOW{lKf7Z89<7~4BCrTE+z`=e3dyMGS&P$Rxh<9RX91~uvQR;q4EBg-ET z^z*8a^LIQ$16o)>Bg!$=n^k|V`iN>bT5qpX)#Iq~nU8l^%BazxquQVi>UXODan&wp z&foEx8r&N2Z`G-)TeUGW$WYxwb++me)c6*t)*0qqqVuV-fG4r(ST<6lf%P2VmZgRU zEJ3bL@GaGOs`=ZRtGq^6d01N$pRfLIstZ(KNsSpaXoI|}8&wB2-pf~wSazzRR3~s) zwNLd&)M!AxHsHVNFIT@a+W4E*--j9vXlhv_)L6iP#+RtS*{=b&Yrr}Uc$gZiEC)-@ z@&h$COQXHl;w;q8OmL6J4^UmDns=@^!>y|4sIFGc&TyQ*|ESKOS`7`VpHqEC^?y`5 zvE(eN_!8k7acYCEq{a+ubOwdgm_a`3u{=qQ1#tE-nl}gG_y68yt5GYobjkWfHM@GT z@OCC=a8PG3ni?}0i8z*k>h-EWp~faSuWR_C*00n0U7ehsABTw=a%=;(vFfR+8&t1U z-Kct->L%3(snMX_m=VkOs#~4}UX5P>T!3bcznR*;)1a$xB@J9hr2^qs9!+>kRqWgYilD>B7<$v^zTT#}P|946NXAQ{iN(I?`=R z$6VD;)px3PseY6iGvIF~mPTr9f=HcyDD0fR+iklY-D0r)xfA8<8n}!B&_2}@v_h&@ z@TtyFy;0+bA615UXOZrk9Pd5NAw&3&Sq@h?*U8I4~>jTuIn z2|DgkJwWy28vm8X@28IX)A^qR*mDBYwZaM2OH`j#y;F5K$oLx7NvfYwou&GD)gIMH zR2Qp0L5=;-QK5$LcnFlu)L0|u+_rQ)pnj+N52)^?`c2hWs{UN{c-6nEo~}9;RQzY;?4XW$JKCH z1O82o2DH@~Fxxs?{F3@3d36kbiuyZJ!+$~jX{tj&mJzBas=i6})C7C^(L+ED#Tw9( z`q!uWA@v7TA5y(u^?RzHSN#n&8rVx4$V{GW;H&EI$jg4{Zhm}V>8pnRs;^dkh3aXl zC#haajTxlt3^*O?QL69I_{|#spz0@7KSzytzeg*)tO0-5fKODvr}{_L&8nH=k4w-B zWJy!qS@l(_6I4%C-ID2ViP3&XmIiFlfSXi5qPkf13#x;v8>n${($d|o@e=(%8egsP z(OnUbihGaHJQk>)qL;Zj9+zt^ofLag<8rK} zQ(}K=Tpg9`x#egmo}P60)5)hX6!$@)Yusjn*M``?UyZ>356G<*OVPL3hipp6dd@)a z=f0DiA>T>YZ>FTk-sU2w?EN+0DVskU@07EisZR8BwOkb`q3c8Cx3z1MC1>nZXVj)J zov3_wL*LF)^^!MSru8Vq#6Cp#>I-eAIOP!HLeU#-`lfvJ?P720&Cdj!9hbG#)CM(3 z`i`QMke6kHXH1IpJREdN|23#y@h^75X7B9v!70v=#rMt|pCV;>=!NI$iTO+$y>Pk= z+*r{?`aX+%B;M+xUb1cI%y#0=@7VR8Z;^tnd45`v#C*^vU7}wIwwK2Ijx(gDEG=0M zkBg3x+`8aD#Q84rgGH6O+KKbK(aBQxN^Imk8#nfpx~SM(alRT`E6p#=Ko{u&BhkO? z)!4mKKVT$sww13$3Y$Y~!fS7ODY!F4u1HyvC{Ovw2{LtTXwx3yiOh%xf-1xrNS+44|>pzIl3T5 zw*6&kvb^wQ856ez<7D6{^f15k+d0T4b|rF+r94%ZDtBF1Iz-ayD~HJRH_&-H)Klu- z(i6E{UTC`_S=RTiOpq7atxT4i8)Eah5J;YLW=Se@+QrC%>lY@=^P7-H=D}}T$4XI; z^u*9?^k9CjsJFNq((`2HTSx=9=xzj{x=R8L>G{}$c6E-81A^t@2|&mZ%(d!+*sk)Q zfpd~VFGDx=XTpp1)#Io;-iqGIRm% zfVQnZTr^bX29Vy)C4RSj-2oZv791^!m(4lImo{SzG6s%xB8A_fjkmUuWACE5J2x(E zBklSkCDlx3z^fZNr&8{^Vp(ix)?j)1iK4z+?p@}Rsl$+M=l1l)X>#Y2*t$Cpmi4f= zT4tu{11=q>EJ7c7WI&VCy^zLh<7c--gk>T@+=Tl>6Ol%*C~iyI%>%^w(9Agbbm`2j zSoD3*%tWp<%H(bdx9f6&7fgQRBh43}j52idgjKJkHXW{s7`so1%k6*ncyV;SSSiEqaWELgWG zW2LA*Dn@?!C=f5+@X7H~yzAC(;{Ko{QL45rjhCnXwJL5)^w<)~9kKYjNKFhkSa$8d zrC;lzx{{v$2&oW}UMxu#JT!K>&f(l+T+vKcrW`s zh?&A_$8K5k`oP~!-#ir=S3BgDHK$j#m}--+s@!#Bi;~|C7h(3>D!&{4y9qhS;%mQc zsC4!Hv&mK4J8bRSX@8o1d~KKXwQ0kC4_f^{p>ef^#cMz8)?%t1{+G4?7}27{PHxua Y=-Nm7{9n^2->$vv64TJQ+vfNAUqTy4FaQ7m diff --git a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBAppLinkData.h b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBAppLinkData.h index 9680634..dfdcd2e 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBAppLinkData.h +++ b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBAppLinkData.h @@ -31,7 +31,13 @@ @property (readonly) NSArray *actionIDs; /*! @abstract Reference breadcrumb provided during creation of story */ -@property (readonly) NSArray *ref; +@property (readonly) NSString *ref; + +/*! @abstract User Agent string set by the referer */ +@property (readonly) NSString *userAgent; + +/*! @abstract Referer data is a JSON object set by the referer with referer-specific content */ +@property (readonly) NSDictionary *refererData; /*! @abstract Full set of query parameters for this app link */ @property (readonly) NSDictionary *originalQueryParameters; diff --git a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBDialogs.h b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBDialogs.h index d002e94..1d84796 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBDialogs.h +++ b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBDialogs.h @@ -201,7 +201,7 @@ NSError *error); /*! @abstract - Determines whether a call to presentFBShareDialogWithTarget: will successfully + Determines whether a call to presentShareDialogWithTarget: will successfully present a dialog in the Facebook application. This is useful for applications that need to modify the available UI controls depending on whether the dialog is available on the current platform. @@ -211,7 +211,7 @@ NSError *error); @return YES if the dialog would be presented, and NO if not @discussion A return value of YES here indicates that the corresponding - presentFBShareDialogWithParams method will return a non-nil FBAppCall for the same + presentShareDialogWithParams method will return a non-nil FBAppCall for the same params. And vice versa. */ + (BOOL)canPresentShareDialogWithParams:(FBShareDialogParams *)params; @@ -244,7 +244,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresetFBShareDialogWithParams method is also returning YES for the same params. + canPresentShareDialogWithParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithParams:(FBShareDialogParams *)params clientState:(NSDictionary *)clientState @@ -274,7 +274,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresetFBShareDialogWithParams method is also returning YES for the same params. + canPresentShareDialogWithParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithLink:(NSURL *)link handler:(FBDialogAppCallCompletionHandler)handler; @@ -305,7 +305,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresetFBShareDialogWithParams method is also returning YES for the same params. + canPresentShareDialogWithParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithLink:(NSURL *)link name:(NSString *)name @@ -347,7 +347,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresetFBShareDialogWithParams method is also returning YES for the same params. + canPresentShareDialogWithParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithLink:(NSURL *)link name:(NSString *)name @@ -359,7 +359,7 @@ NSError *error); /*! @abstract - Determines whether a call to presentFBShareDialogWithOpenGraphActionParams:clientState:handler: + Determines whether a call to presentShareDialogWithOpenGraphActionParams:clientState:handler: will successfully present a dialog in the Facebook application. This is useful for applications that need to modify the available UI controls depending on whether the dialog is available on the current platform. @@ -369,7 +369,7 @@ NSError *error); @return YES if the dialog would be presented, and NO if not @discussion A return value of YES here indicates that the corresponding - presentFBShareDialogWithOpenGraphActionParams method will return a non-nil FBAppCall for + presentShareDialogWithOpenGraphActionParams method will return a non-nil FBAppCall for the same params. And vice versa. */ + (BOOL)canPresentShareDialogWithOpenGraphActionParams:(FBOpenGraphActionShareDialogParams *)params; @@ -402,7 +402,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresentFBShareDialogWithOpenGraphActionParams method is also returning YES for the same params. + canPresentShareDialogWithOpenGraphActionParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithOpenGraphActionParams:(FBOpenGraphActionShareDialogParams *)params clientState:(NSDictionary *)clientState @@ -439,7 +439,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresentFBShareDialogWithOpenGraphActionParams method is also returning YES for the same params. + canPresentShareDialogWithOpenGraphActionParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithOpenGraphAction:(id)action actionType:(NSString *)actionType @@ -481,7 +481,7 @@ NSError *error); FBAppCallCompletionHandler. @discussion A non-nil FBAppCall object is only returned if the corresponding - canPresentFBShareDialogWithOpenGraphActionParams method is also returning YES for the same params. + canPresentShareDialogWithOpenGraphActionParams method is also returning YES for the same params. */ + (FBAppCall *)presentShareDialogWithOpenGraphAction:(id)action actionType:(NSString *)actionType diff --git a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBError.h b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBError.h index c351428..70ef2a4 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBError.h +++ b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBError.h @@ -118,6 +118,11 @@ typedef enum FBErrorCode { The operation failed because the session is currently busy reconnecting. */ FBErrorSessionReconnectInProgess, + + /*! + Reserved for future use. + */ + FBErrorOperationDisallowedForRestrictedTreament, } FBErrorCode; /*! diff --git a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBFriendPickerViewController.h b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBFriendPickerViewController.h index c696353..6c8af5b 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBFriendPickerViewController.h +++ b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBFriendPickerViewController.h @@ -125,8 +125,13 @@ typedef enum { @abstract The list of friends that are currently selected in the veiw. The items in the array are objects. + + @discussion + You can set this this array to pre-select items in the picker. The objects in the array + must be complete id objects (i.e., fetched from a Graph query or from a + previous picker's selection, with id and appropriate name fields). */ -@property (nonatomic, retain, readonly) NSArray *selection; +@property (nonatomic, copy) NSArray *selection; /*! @abstract diff --git a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBLoginView.h b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBLoginView.h index 5a1c424..4f75e3a 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBLoginView.h +++ b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBLoginView.h @@ -69,6 +69,15 @@ */ @property (nonatomic, assign) FBSessionDefaultAudience defaultAudience; +/*! + @abstract + The login behavior for the active session if the user logs in via this view + + @discussion + The default value is FBSessionLoginBehaviorUseSystemAccountIfPresent. + */ +@property (nonatomic) FBSessionLoginBehavior loginBehavior; + /*! @abstract diff --git a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBRequest.h b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBRequest.h index a6ec08d..187bd7a 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBRequest.h +++ b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBRequest.h @@ -526,6 +526,9 @@ typedef NSUInteger FBRequestState __attribute__((deprecated)); @param graphPath The Graph API endpoint to use for the request, for example "me". @param graphObject An object or open graph action to post. + + @discussion This method is typically used for posting an open graph action. If you are only + posting an open graph object (without an action), consider using `requestForPostOpenGraphObject:` */ + (FBRequest *)requestForPostWithGraphPath:(NSString*)graphPath graphObject:(id)graphObject; diff --git a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBRequestConnection.h b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBRequestConnection.h index a8c2c9a..140267f 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBRequestConnection.h +++ b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBRequestConnection.h @@ -490,7 +490,10 @@ typedef void (^FBRequestHandler)(FBRequestConnection *connection, @param graphObject An object or open graph action to post. @param handler The handler block to call when the request completes with a success, error, or cancel action. - */ + + @discussion This method is typically used for posting an open graph action. If you are only + posting an open graph object (without an action), consider using `startForPostOpenGraphObject:completionHandler:` +*/ + (FBRequestConnection*)startForPostWithGraphPath:(NSString*)graphPath graphObject:(id)graphObject completionHandler:(FBRequestHandler)handler; diff --git a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBSettings.h b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBSettings.h index b38a3aa..a9fc57b 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/Headers/FBSettings.h +++ b/frameworks/FacebookSDK.framework/Versions/A/Headers/FBSettings.h @@ -63,13 +63,25 @@ typedef void (^FBInstallResponseDataHandler)(FBGraphObject *response, NSError *e in release builds. */ typedef enum : NSUInteger { - FBBetaFeaturesNone = 0, + FBBetaFeaturesNone = 0, #if defined(DEBUG) || defined(FB_BUILD_ONLY) - FBBetaFeaturesShareDialog = 1 << 0, - FBBetaFeaturesOpenGraphShareDialog = 1 << 1, + FBBetaFeaturesShareDialog = 1 << 0, + FBBetaFeaturesOpenGraphShareDialog = 1 << 1, #endif } FBBetaFeatures; +/*! + @typedef + @abstract Indicates if this app should be restricted + */ +typedef NS_ENUM(NSUInteger, FBRestrictedTreatment) { + /*! The default treatment indicating the app is not restricted. */ + FBRestrictedTreatmentNO = 0, + + /*! Indicates the app is restricted. */ + FBRestrictedTreatmentYES = 1 +}; + @interface FBSettings : NSObject /*! @@ -296,7 +308,7 @@ typedef enum : NSUInteger { /*! @method - + @abstract Gets whether data such as that generated through FBAppEvents and sent to Facebook should be restricted from being used for other than analytics and conversions. Defaults to NO. This value is stored on the device and persists across app launches. */ @@ -304,10 +316,10 @@ typedef enum : NSUInteger { /*! @method - + @abstract Sets whether data such as that generated through FBAppEvents and sent to Facebook should be restricted from being used for other than analytics and conversions. Defaults to NO. This value is stored on the device and persists across app launches. - + @param limitEventAndDataUsage The desired value. */ + (void)setLimitEventAndDataUsage:(BOOL)limitEventAndDataUsage; diff --git a/frameworks/FacebookSDK.framework/Versions/A/Headers/FacebookSDK.h b/frameworks/FacebookSDK.framework/Versions/A/Headers/FacebookSDK.h index 3fb4b5f..68425e9 100644 --- a/frameworks/FacebookSDK.framework/Versions/A/Headers/FacebookSDK.h +++ b/frameworks/FacebookSDK.framework/Versions/A/Headers/FacebookSDK.h @@ -135,5 +135,5 @@ */ -#define FB_IOS_SDK_VERSION_STRING @"3.9.0" +#define FB_IOS_SDK_VERSION_STRING @"3.11.0" diff --git a/lib-third-party/libturbojpeg-ios/libjpeg-turbo-ios.xcodeproj/project.pbxproj b/lib-third-party/libturbojpeg-ios/libjpeg-turbo-ios.xcodeproj/project.pbxproj index 34949f6..27fcc64 100755 --- a/lib-third-party/libturbojpeg-ios/libjpeg-turbo-ios.xcodeproj/project.pbxproj +++ b/lib-third-party/libturbojpeg-ios/libjpeg-turbo-ios.xcodeproj/project.pbxproj @@ -654,8 +654,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; + ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; @@ -681,8 +680,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; + ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = YES; @@ -700,10 +698,6 @@ 427BF6481645BD8C00BC3809 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - armv7, - armv7s, - ); DSTROOT = /tmp/libjpeg.dst; GCC_PRECOMPILE_PREFIX_HEADER = NO; GCC_PREFIX_HEADER = ""; @@ -716,10 +710,6 @@ 427BF6491645BD8C00BC3809 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - armv7, - armv7s, - ); DSTROOT = /tmp/libjpeg.dst; GCC_PRECOMPILE_PREFIX_HEADER = NO; GCC_PREFIX_HEADER = ""; @@ -732,10 +722,6 @@ 427BF68B1645BF1200BC3809 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - armv7, - armv7s, - ); DSTROOT = /tmp/libturbojpeg.dst; HEADER_SEARCH_PATHS = ( "\"$(SRCROOT)/libturbojpeg\"", @@ -750,10 +736,6 @@ 427BF68C1645BF1200BC3809 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - armv7, - armv7s, - ); DSTROOT = /tmp/libturbojpeg.dst; HEADER_SEARCH_PATHS = ( "\"$(SRCROOT)/libturbojpeg\"", @@ -768,13 +750,8 @@ 427BF6BB1645C08600BC3809 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - armv7, - armv7s, - ); DSTROOT = /tmp/simd_arm.dst; GCC_PRECOMPILE_PREFIX_HEADER = NO; - GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_UNINITIALIZED_AUTOS = NO; HEADER_SEARCH_PATHS = ( "$(SRCROOT)/libturbojpeg", @@ -790,13 +767,8 @@ 427BF6BC1645C08600BC3809 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = ( - armv7, - armv7s, - ); DSTROOT = /tmp/simd_arm.dst; GCC_PRECOMPILE_PREFIX_HEADER = NO; - GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_UNINITIALIZED_AUTOS = NO; HEADER_SEARCH_PATHS = ( "$(SRCROOT)/libturbojpeg", diff --git a/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.h b/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.h index 017b2ba..ead50e0 100644 --- a/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.h +++ b/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.h @@ -15,7 +15,6 @@ @property (nonatomic, copy) JFFAsyncOperationHandler loaderHandler; @property (nonatomic, copy) JFFDidFinishAsyncOperationCallback didFinishBlock; - @property (nonatomic) id property; - (void)clearData; diff --git a/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.m b/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.m index be87fbf..b9ac07b 100644 --- a/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.m +++ b/lib/JFFAsyncOperations/CachedAsyncOperations/JFFPropertyExtractor.m @@ -55,22 +55,31 @@ - (SEL)propertySetSelector - (id)property { - id result = objc_msgSend(self.object, self.propertyGetSelector); + typedef id (*AlignMsgSendFunction)(id, SEL); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSend; + id result = alignFunction(self.object, self.propertyGetSelector); return self.propertyPath.key?[result objectForKey:self.propertyPath.key]:result; } - (void)setProperty:(id)property { if (!self.propertyPath.key) { - objc_msgSend(self.object, self.propertySetSelector, property); + + typedef void (*AlignMsgSendFunction)(id, SEL, id); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSend; + alignFunction(self.object, self.propertySetSelector, property); return; } - NSMutableDictionary* dict = objc_msgSend(self.object, self.propertyGetSelector); + typedef NSMutableDictionary *(*AlignMsgSendFunction)(id, SEL); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSend; + NSMutableDictionary *dict = alignFunction(self.object, self.propertyGetSelector); if (!dict) { dict = [NSMutableDictionary new]; - objc_msgSend(self.object, self.propertySetSelector, dict); + typedef void (*AlignMsgSendFunction)(id, SEL, NSMutableDictionary *); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSend; + alignFunction(self.object, self.propertySetSelector, dict); } if (property) { diff --git a/lib/JFFAsyncOperations/CachedAsyncOperations/NSObject+AsyncPropertyReader.m b/lib/JFFAsyncOperations/CachedAsyncOperations/NSObject+AsyncPropertyReader.m index 6eec5db..d2165dc 100644 --- a/lib/JFFAsyncOperations/CachedAsyncOperations/NSObject+AsyncPropertyReader.m +++ b/lib/JFFAsyncOperations/CachedAsyncOperations/NSObject+AsyncPropertyReader.m @@ -135,7 +135,7 @@ static JFFAsyncOperationHandler cancelBlock(JFFPropertyExtractor *propertyExtrac handler = [handler copy]; switch (task) { - case JFFAsyncOperationHandlerTaskUnsubscribe: + case JFFAsyncOperationHandlerTaskUnSubscribe: { JFFDidFinishAsyncOperationCallback didLoadDataBlock = callbacks.didLoadDataBlock; @@ -293,14 +293,11 @@ - (JFFAsyncOperation)privateAsyncOperationForPropertyWithPath:(JFFPropertyPath * if (nil == propertyExtractor.delegates) { propertyExtractor.delegates = [@[callbacks] mutableCopy]; + return performNativeLoader(propertyExtractor, callbacks); } - if (propertyExtractor.loaderHandler != nil) { - [propertyExtractor.delegates addObject:callbacks]; - return cancelBlock(propertyExtractor, callbacks); - } - - return performNativeLoader(propertyExtractor, callbacks); + [propertyExtractor.delegates addObject:callbacks]; + return cancelBlock(propertyExtractor, callbacks); }; } @@ -384,7 +381,7 @@ - (JFFAsyncOperation)privateAsyncOperationMergeLoaders:(JFFAsyncOperation)asyncO static NSString *const name = @".__JFF_MERGE_LOADERS_BY_ARGUMENTS__."; JFFPropertyPath *propertyPath = [[JFFPropertyPath alloc] initWithName:name key:argument]; - JFFPropertyExtractorFactoryBlock factory = ^JFFPropertyExtractor*{ + JFFPropertyExtractorFactoryBlock factory = ^JFFPropertyExtractor * (void){ return [JFFCachePropertyExtractor new]; }; diff --git a/lib/JFFAsyncOperations/Categories/NSDictionary+AsyncMap.m b/lib/JFFAsyncOperations/Categories/NSDictionary+AsyncMap.m index e9c366e..cf7162e 100644 --- a/lib/JFFAsyncOperations/Categories/NSDictionary+AsyncMap.m +++ b/lib/JFFAsyncOperations/Categories/NSDictionary+AsyncMap.m @@ -22,8 +22,7 @@ - (JFFAsyncOperation)asyncMap:(JFFAsyncDictMappingBlock)block if (result) finalResult[key] = result; - if (doneCallback) - doneCallback(result, error); + doneCallback(result, error); }; loader = asyncOperationWithFinishHookBlock(loader, finishCallbackHook); diff --git a/lib/JFFAsyncOperations/Categories/NSObject+AutoCancelAsyncOperation.h b/lib/JFFAsyncOperations/Categories/NSObject+AutoCancelAsyncOperation.h new file mode 100644 index 0000000..6662a15 --- /dev/null +++ b/lib/JFFAsyncOperations/Categories/NSObject+AutoCancelAsyncOperation.h @@ -0,0 +1,12 @@ +#import + +#import + +@interface NSObject (WeakAsyncOperation) + +//TODO20 immediately cancel callback +- (JFFAsyncOperation)autoUnsubsribeOnDeallocAsyncOperation:(JFFAsyncOperation)asyncOp; + +- (JFFAsyncOperation)autoCancelOnDeallocAsyncOperation:(JFFAsyncOperation)asyncOp; + +@end diff --git a/lib/JFFAsyncOperations/Categories/NSObject+AutoCancelAsyncOperation.m b/lib/JFFAsyncOperations/Categories/NSObject+AutoCancelAsyncOperation.m new file mode 100644 index 0000000..cb0b2c3 --- /dev/null +++ b/lib/JFFAsyncOperations/Categories/NSObject+AutoCancelAsyncOperation.m @@ -0,0 +1,99 @@ +#import "NSObject+AutoCancelAsyncOperation.h" + +#import "JFFAsyncOperationsPredefinedBlocks.h" +#import "JFFDidFinishAsyncOperationBlockHolder.h" +#import "JFFAsyncOperationAbstractFinishError.h" + +@implementation NSObject (WeakAsyncOperation) + +- (JFFAsyncOperation)autoUnsibscribeOrCancelAsyncOperation:(JFFAsyncOperation)nativeAsyncOp + task:(JFFAsyncOperationHandlerTask)task +{ + NSParameterAssert(nativeAsyncOp); + + __weak id weakSelf = self; + + nativeAsyncOp = [nativeAsyncOp copy]; + return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, + JFFAsyncOperationChangeStateCallback stateCallback, + JFFDidFinishAsyncOperationCallback doneCallback) + { + id self_ = weakSelf; + + if (self_ == nil) { + + NSError *error = [JFFAsyncOperationAbstractFinishError newAsyncOperationAbstractFinishErrorWithHandlerTask:task]; + if (doneCallback) + doneCallback(nil, error); + return JFFStubHandlerAsyncOperationBlock; + } + + __block BOOL finished = NO; + + JFFSimpleBlockHolder *ondeallocBlockHolder = [JFFSimpleBlockHolder new]; + + JFFSimpleBlockHolder *removeOndeallocBlockHolder = [JFFSimpleBlockHolder new]; + removeOndeallocBlockHolder.simpleBlock = ^void(void) { + finished = YES; + + if (ondeallocBlockHolder.simpleBlock) { + [weakSelf removeOnDeallocBlock:ondeallocBlockHolder.simpleBlock]; + ondeallocBlockHolder.simpleBlock = nil; + } + }; + + JFFDidFinishAsyncOperationBlockHolder *doneCallbackHolder = [JFFDidFinishAsyncOperationBlockHolder new]; + doneCallbackHolder.didFinishBlock = doneCallback; + JFFDidFinishAsyncOperationCallback doneCallbackWrapper = ^void(id result, NSError *error) { + removeOndeallocBlockHolder.onceSimpleBlock(); + doneCallbackHolder.onceDidFinishBlock(result, error); + }; + + JFFAsyncOperationHandler loadersHandler = nativeAsyncOp(progressCallback, + stateCallback, + doneCallbackWrapper); + + if (finished) { + return JFFStubHandlerAsyncOperationBlock; + } + + //TODO remove using of ondealloc block holder class + ondeallocBlockHolder.simpleBlock = ^void(void) { + + loadersHandler(task); + }; + + //try assert retain count + [self_ addOnDeallocBlock:ondeallocBlockHolder.onceSimpleBlock]; + + __block JFFAsyncOperationHandler handlerBlockHolder = [^void(JFFAsyncOperationHandlerTask task) { + loadersHandler(task); + } copy]; + + return ^(JFFAsyncOperationHandlerTask task) { + + JFFAsyncOperationHandler hadler = handlerBlockHolder; + if (!hadler) + return; + + if (task <= JFFAsyncOperationHandlerTaskCancel) { + handlerBlockHolder = nil; + } + hadler(task); + }; + }; +} + +- (JFFAsyncOperation)autoUnsubsribeOnDeallocAsyncOperation:(JFFAsyncOperation)nativeLoader +{ + return [self autoUnsibscribeOrCancelAsyncOperation:nativeLoader + task:JFFAsyncOperationHandlerTaskUnSubscribe]; +} + +- (JFFAsyncOperation)autoCancelOnDeallocAsyncOperation:(JFFAsyncOperation)nativeLoader +{ + return [self autoUnsibscribeOrCancelAsyncOperation:nativeLoader + task:JFFAsyncOperationHandlerTaskCancel]; +} + +@end diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationContinuity.m b/lib/JFFAsyncOperations/JFFAsyncOperationContinuity.m index 6d6fd56..f87ddca 100755 --- a/lib/JFFAsyncOperations/JFFAsyncOperationContinuity.m +++ b/lib/JFFAsyncOperations/JFFAsyncOperationContinuity.m @@ -136,7 +136,7 @@ JFFAsyncOperationBinder bindSequenceOfBindersPair(JFFAsyncOperationBinder firstB handlerBlockHolder = nil; } - if (task != JFFAsyncOperationHandlerTaskUnsubscribe) + if (task != JFFAsyncOperationHandlerTaskUnSubscribe) currentHandler(task); if (task <= JFFAsyncOperationHandlerTaskCancel) { @@ -211,8 +211,7 @@ JFFAsyncOperation accumulateSequenceResult(NSArray *loaders, JFFSequenceResultAc error = newResult?nil:error; NSCAssert((newResult != nil) ^ (error != nil), nil); - if (doneCallback) - doneCallback(newResult, error); + doneCallback(newResult, error); }); } copy]; @@ -395,7 +394,7 @@ static JFFAsyncOperationBinder bindTrySequenceOfBindersPair(JFFAsyncOperationBin if (task <= JFFAsyncOperationHandlerTaskCancel) handlerBlockHolder = nil; - if (task != JFFAsyncOperationHandlerTaskUnsubscribe) + if (task != JFFAsyncOperationHandlerTaskUnSubscribe) currentHandler(task); if (task <= JFFAsyncOperationHandlerTaskCancel) { @@ -550,7 +549,7 @@ static JFFAsyncOperation groupOfAsyncOperationsPair(JFFAsyncOperation firstLoade finishTask = ([error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]]) ?JFFAsyncOperationHandlerTaskCancel - :JFFAsyncOperationHandlerTaskUnsubscribe; + :JFFAsyncOperationHandlerTaskUnSubscribe; [otherHandlerHolder performCancelBlockOnceWithArgument:finishTask]; handlerHolder1 = nil; @@ -602,7 +601,7 @@ static JFFAsyncOperation groupOfAsyncOperationsPair(JFFAsyncOperation firstLoade if (blockCanceledOrUnsubscribed) { - if (finishTask == JFFAsyncOperationHandlerTaskUnsubscribe) { + if (finishTask == JFFAsyncOperationHandlerTaskUnSubscribe) { secondLoader(nil, nil, nil); } @@ -725,7 +724,7 @@ static JFFAsyncOperation failOnFirstErrorGroupOfAsyncOperationsPair(JFFAsyncOper blockCanceledOrUnsubscribed = YES; finishTask = [error isKindOfClass:[JFFAsyncOpFinishedByUnsubscriptionError class]] - ?JFFAsyncOperationHandlerTaskUnsubscribe + ?JFFAsyncOperationHandlerTaskUnSubscribe :JFFAsyncOperationHandlerTaskCancel; [otherHandlerHolder performCancelBlockOnceWithArgument:finishTask]; @@ -758,7 +757,7 @@ static JFFAsyncOperation failOnFirstErrorGroupOfAsyncOperationsPair(JFFAsyncOper if (blockCanceledOrUnsubscribed) { - if (finishTask == JFFAsyncOperationHandlerTaskUnsubscribe) { + if (finishTask == JFFAsyncOperationHandlerTaskUnSubscribe) { secondLoader(nil, nil, nil); } diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationHandlerTask.h b/lib/JFFAsyncOperations/JFFAsyncOperationHandlerTask.h index e37894c..6724132 100644 --- a/lib/JFFAsyncOperations/JFFAsyncOperationHandlerTask.h +++ b/lib/JFFAsyncOperations/JFFAsyncOperationHandlerTask.h @@ -3,7 +3,7 @@ typedef NS_ENUM(NSUInteger, JFFAsyncOperationHandlerTask) { - JFFAsyncOperationHandlerTaskUnsubscribe = 0, + JFFAsyncOperationHandlerTaskUnSubscribe = 0, JFFAsyncOperationHandlerTaskCancel = 1, JFFAsyncOperationHandlerTaskResume = 2, JFFAsyncOperationHandlerTaskSuspend = 3, diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.h b/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.h index 9b46241..3903b26 100644 --- a/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.h +++ b/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.h @@ -36,7 +36,7 @@ extern "C" { JFFAsyncOperation asyncOperationWithStartAndDoneBlocks(JFFAsyncOperation loader, JFFSimpleBlock startBlock, - JFFSimpleBlock doneBlock); + JFFDidFinishAsyncOperationCallback doneBlock); JFFAsyncOperation asyncOperationWithAnalyzer(id data, JFFAnalyzer analyzer); @@ -58,7 +58,7 @@ extern "C" { id result, NSError *error); - JFFAsyncOperation ignorePregressLoader(JFFAsyncOperation loader); + JFFAsyncOperation ignoreProgressLoader(JFFAsyncOperation loader); JFFAsyncOperationBinder ignorePregressBinder(JFFAsyncOperationBinder binder); JFFAsyncOperation loaderWithAdditionalParalelLoaders(JFFAsyncOperation original, JFFAsyncOperation additionalLoader, ...) NS_REQUIRES_NIL_TERMINATION; diff --git a/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.m b/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.m index 0793f7b..79fa231 100644 --- a/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.m +++ b/lib/JFFAsyncOperations/JFFAsyncOperationHelpers.m @@ -189,7 +189,7 @@ JFFAsyncOperation asyncOperationWithOptionalStartAndFinishBlocks(JFFAsyncOperati JFFAsyncOperation asyncOperationWithStartAndDoneBlocks(JFFAsyncOperation loader, JFFSimpleBlock startBlock, - JFFSimpleBlock doneBlock) + JFFDidFinishAsyncOperationCallback doneBlock) { NSCParameterAssert(loader); startBlock = [startBlock copy]; @@ -208,7 +208,7 @@ JFFAsyncOperation asyncOperationWithStartAndDoneBlocks(JFFAsyncOperation loader, JFFDidFinishAsyncOperationCallback wrappedDoneCallback = ^(id result, NSError *error) { if (doneBlock) - doneBlock(); + doneBlock(result, error); if (doneCallback) doneCallback(result, error); @@ -312,8 +312,8 @@ JFFAsyncOperation asyncOperationWithChangedError(JFFAsyncOperation loader, JFFDidFinishAsyncOperationHook finishCallbackHook = ^(id result, NSError *error, JFFDidFinishAsyncOperationCallback doneCallback) { - if (doneCallback) - doneCallback(result, error?errorBuilder(error) : nil); + + doneCallback(result, error?errorBuilder(error) : nil); }; return asyncOperationWithFinishHookBlock(loader, finishCallbackHook); } @@ -326,8 +326,7 @@ JFFAsyncOperation asyncOperationWithResultOrError(JFFAsyncOperation loader, ^(id localResult, NSError *localError, JFFDidFinishAsyncOperationCallback doneCallback) { - if (doneCallback) - doneCallback(result, error); + doneCallback(result, error); }); } @@ -387,7 +386,7 @@ JFFAnalyzer analyzerAsSequenceOfAnalyzers(JFFAnalyzer firstAnalyzer, ...) }; } -JFFAsyncOperation ignorePregressLoader(JFFAsyncOperation loader) +JFFAsyncOperation ignoreProgressLoader(JFFAsyncOperation loader) { loader = [loader copy]; return ^JFFAsyncOperationHandler(JFFAsyncOperationProgressCallback progressCallback, @@ -404,7 +403,7 @@ JFFAsyncOperationBinder ignorePregressBinder(JFFAsyncOperationBinder binder) return ^JFFAsyncOperation(id data) { JFFAsyncOperation loader = binder(data); - return ignorePregressLoader(loader); + return ignoreProgressLoader(loader); }; } diff --git a/lib/JFFAsyncOperations/JFFAsyncOperations.h b/lib/JFFAsyncOperations/JFFAsyncOperations.h index 5857c9c..e67464e 100755 --- a/lib/JFFAsyncOperations/JFFAsyncOperations.h +++ b/lib/JFFAsyncOperations/JFFAsyncOperations.h @@ -6,7 +6,6 @@ #import #import -#import #import #import @@ -15,12 +14,11 @@ #import #import +#import #import #import -#import - //Errors #import #import diff --git a/lib/JFFAsyncOperations/JFFAsyncOperations.xcodeproj/project.pbxproj b/lib/JFFAsyncOperations/JFFAsyncOperations.xcodeproj/project.pbxproj index 57caa8f..e9648f5 100644 --- a/lib/JFFAsyncOperations/JFFAsyncOperations.xcodeproj/project.pbxproj +++ b/lib/JFFAsyncOperations/JFFAsyncOperations.xcodeproj/project.pbxproj @@ -14,7 +14,6 @@ 1B0E83AA1563954B00825E3C /* JFFAsyncOperationAdapter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1B0E83A81563954B00825E3C /* JFFAsyncOperationAdapter.mm */; }; 1B0FB887150604860056F14E /* JFFAsyncOperationHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B0FB885150604850056F14E /* JFFAsyncOperationHelpers.h */; }; 1B0FB888150604860056F14E /* JFFAsyncOperationHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B0FB886150604850056F14E /* JFFAsyncOperationHelpers.m */; }; - 1B2A678D143F3D0E00BC284F /* NSObject+AutoCancelAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 655ADDDF13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.m */; }; 1B2A67E5143F4CAB00BC284F /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D1B3D6E13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.m */; }; 1B2A682B143F532500BC284F /* JFFAsyncOperationHandlerBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F6C13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.m */; }; 1B2A682E143F537B00BC284F /* JFFAsyncOperationProgressBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6534804B13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.m */; }; @@ -44,7 +43,6 @@ 4C1A0F4A182577BE0020FBF6 /* JFFBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648BD313924220001E163C /* JFFBlockOperation.h */; }; 4C1A0F4B182577BE0020FBF6 /* JFFAsyncOperationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C381392490F001E163C /* JFFAsyncOperationUtils.h */; }; 4C1A0F4C182577BE0020FBF6 /* JFFAsyncOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C5013924A77001E163C /* JFFAsyncOperations.h */; }; - 4C1A0F4D182577BE0020FBF6 /* NSObject+AutoCancelAsyncOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 655ADDDE13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h */; }; 4C1A0F4E182577BE0020FBF6 /* JFFAsyncOperationHandlerBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F6B13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.h */; }; 4C1A0F4F182577BE0020FBF6 /* JFFAsyncOperationLoadBalancer.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F9413B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.h */; }; 4C1A0F50182577BE0020FBF6 /* JFFAsyncOperationProgressBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6534804A13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h */; }; @@ -69,7 +67,6 @@ 4C1A0F63182577BE0020FBF6 /* JFFBaseStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C6DFB0C1718446500D86975 /* JFFBaseStrategy.h */; }; 4C1A0F64182577BE0020FBF6 /* NSArray+AsyncMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CB5CDE5174F54E100F2B600 /* NSArray+AsyncMap.h */; }; 4C1A0F65182577BE0020FBF6 /* NSDictionary+AsyncMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CB5CDE9174F551200F2B600 /* NSDictionary+AsyncMap.h */; }; - 4C1A0F67182577BE0020FBF6 /* NSObject+AutoCancelAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 655ADDDF13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.m */; }; 4C1A0F68182577BE0020FBF6 /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D1B3D6E13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.m */; }; 4C1A0F69182577BE0020FBF6 /* JFFAsyncOperationHandlerBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F6C13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.m */; }; 4C1A0F6A182577BE0020FBF6 /* JFFAsyncOperationProgressBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6534804B13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.m */; }; @@ -102,10 +99,8 @@ 4C1A0F86182577BE0020FBF6 /* NSArray+AsyncMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB5CDE6174F54E100F2B600 /* NSArray+AsyncMap.m */; }; 4C1A0F87182577BE0020FBF6 /* NSDictionary+AsyncMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB5CDEA174F551300F2B600 /* NSDictionary+AsyncMap.m */; }; 4C1A0F89182577BE0020FBF6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; - 4C1A0FC018257F590020FBF6 /* JFFAsyncTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C1A0FBE18257F590020FBF6 /* JFFAsyncTools.h */; }; - 4C1A0FC118257F590020FBF6 /* JFFAsyncTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C1A0FBE18257F590020FBF6 /* JFFAsyncTools.h */; }; - 4C1A0FC218257F590020FBF6 /* JFFAsyncTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1A0FBF18257F590020FBF6 /* JFFAsyncTools.m */; }; - 4C1A0FC318257F590020FBF6 /* JFFAsyncTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1A0FBF18257F590020FBF6 /* JFFAsyncTools.m */; }; + 4C5361F518608BD900EB89F5 /* NSObject+AutoCancelAsyncOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C5361F318608BD900EB89F5 /* NSObject+AutoCancelAsyncOperation.h */; }; + 4C5361F618608BD900EB89F5 /* NSObject+AutoCancelAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C5361F418608BD900EB89F5 /* NSObject+AutoCancelAsyncOperation.m */; }; 4C6DFB0E1718446600D86975 /* JFFBaseStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C6DFB0C1718446500D86975 /* JFFBaseStrategy.h */; }; 4C6DFB0F1718446600D86975 /* JFFBaseStrategy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C6DFB0D1718446600D86975 /* JFFBaseStrategy.m */; }; 4CB5CDE7174F54E200F2B600 /* NSArray+AsyncMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CB5CDE5174F54E100F2B600 /* NSArray+AsyncMap.h */; }; @@ -145,7 +140,6 @@ 5391035C14A88BB5007315A3 /* JFFBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648BD313924220001E163C /* JFFBlockOperation.h */; }; 5391035D14A88BB5007315A3 /* JFFAsyncOperationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C381392490F001E163C /* JFFAsyncOperationUtils.h */; }; 5391035E14A88BB5007315A3 /* JFFAsyncOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C5013924A77001E163C /* JFFAsyncOperations.h */; }; - 5391035F14A88BB5007315A3 /* NSObject+AutoCancelAsyncOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 655ADDDE13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h */; }; 5391036014A88BB5007315A3 /* JFFAsyncOperationHandlerBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F6B13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.h */; }; 5391036114A88BB5007315A3 /* JFFAsyncOperationLoadBalancer.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F9413B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.h */; }; 5391036514A88BB5007315A3 /* JFFAsyncOperationProgressBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6534804A13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h */; }; @@ -155,7 +149,6 @@ 5391036A14A88BB5007315A3 /* JFFPropertyExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D9827FF13F2BA10009DD73B /* JFFPropertyExtractor.h */; }; 5391036B14A88BB5007315A3 /* JFFObjectRelatedPropertyData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D61CD2A13F2BC8A0003AC4A /* JFFObjectRelatedPropertyData.h */; }; 5391036C14A88BB5007315A3 /* NSObject+PropertyExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D61CD2F13F2BCE40003AC4A /* NSObject+PropertyExtractor.h */; }; - 5391036F14A88BB5007315A3 /* NSObject+AutoCancelAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 655ADDDF13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.m */; }; 5391037014A88BB5007315A3 /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D1B3D6E13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.m */; }; 5391037114A88BB5007315A3 /* JFFAsyncOperationHandlerBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 65347F6C13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.m */; }; 5391037214A88BB5007315A3 /* JFFAsyncOperationProgressBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6534804B13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.m */; }; @@ -168,7 +161,6 @@ 65347F9613B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.h in Headers */ = {isa = PBXBuildFile; fileRef = 65347F9413B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.h */; }; 6534804C13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6534804A13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h */; }; 65462C9514D8811100685ED8 /* JFFBlockOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65648BD413924220001E163C /* JFFBlockOperation.mm */; }; - 655ADDE013B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 655ADDDE13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h */; }; 65648BD513924220001E163C /* JFFBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648BD313924220001E163C /* JFFBlockOperation.h */; }; 65648C3A1392490F001E163C /* JFFAsyncOperationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C381392490F001E163C /* JFFAsyncOperationUtils.h */; }; 65648C5113924A77001E163C /* JFFAsyncOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C5013924A77001E163C /* JFFAsyncOperations.h */; }; @@ -218,7 +210,6 @@ 7E8F20E714F94C3100588C7D /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D1B3D6E13B88A2700410ECB /* JFFDidFinishAsyncOperationBlockHolder.m */; }; 7E8F20F414F94C3100588C7D /* JFFAsyncOperationsPredefinedBlocks.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B835B32142CBA2200FC004C /* JFFAsyncOperationsPredefinedBlocks.m */; }; 7E8F20F614F94C3100588C7D /* JFFBlockOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65648BD413924220001E163C /* JFFBlockOperation.mm */; }; - 7E8F20F814F94C3100588C7D /* NSObject+AutoCancelAsyncOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 655ADDDF13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.m */; }; 7E8F20FC14F94C3100588C7D /* JFFAsyncOperationContinuity.m in Sources */ = {isa = PBXBuildFile; fileRef = 651BE1661391928400DD6890 /* JFFAsyncOperationContinuity.m */; }; 7E8F20FE14F94C6100588C7D /* JFFObjectRelatedPropertyData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D61CD2A13F2BC8A0003AC4A /* JFFObjectRelatedPropertyData.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7E8F210014F94C6100588C7D /* NSObject+PropertyExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D61CD2F13F2BCE40003AC4A /* NSObject+PropertyExtractor.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -232,7 +223,6 @@ 7E8F211A14F94C6100588C7D /* JFFAsyncOperationsBlockDefinitions.h in Headers */ = {isa = PBXBuildFile; fileRef = 651BE1611391913300DD6890 /* JFFAsyncOperationsBlockDefinitions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7E8F211B14F94C6100588C7D /* JFFAsyncOperationsPredefinedBlocks.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B835B31142CBA2200FC004C /* JFFAsyncOperationsPredefinedBlocks.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7E8F211D14F94C6100588C7D /* JFFBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648BD313924220001E163C /* JFFBlockOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E8F211F14F94C6100588C7D /* NSObject+AutoCancelAsyncOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 655ADDDE13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7E8F212114F94C6100588C7D /* JFFAsyncOperationUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C381392490F001E163C /* JFFAsyncOperationUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7E8F212314F94C6100588C7D /* JFFAsyncOperationContinuity.h in Headers */ = {isa = PBXBuildFile; fileRef = 651BE1651391928400DD6890 /* JFFAsyncOperationContinuity.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7E8F212514F94C6100588C7D /* JFFAsyncOperations.h in Headers */ = {isa = PBXBuildFile; fileRef = 65648C5013924A77001E163C /* JFFAsyncOperations.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -270,9 +260,9 @@ 4C0C3F121826D60400984027 /* JFFAsyncOpFinishedByCancellationError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOpFinishedByCancellationError.h; sourceTree = ""; }; 4C0C3F131826D60400984027 /* JFFAsyncOpFinishedByCancellationError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOpFinishedByCancellationError.m; sourceTree = ""; }; 4C1A0F8D182577BE0020FBF6 /* libJFFAsyncOperationsMacOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libJFFAsyncOperationsMacOS.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 4C1A0FBE18257F590020FBF6 /* JFFAsyncTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncTools.h; sourceTree = ""; }; - 4C1A0FBF18257F590020FBF6 /* JFFAsyncTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncTools.m; sourceTree = ""; }; 4C1A0FEF1826A8E60020FBF6 /* JFFAsyncOperationHandlerTask.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationHandlerTask.h; sourceTree = ""; }; + 4C5361F318608BD900EB89F5 /* NSObject+AutoCancelAsyncOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+AutoCancelAsyncOperation.h"; sourceTree = ""; }; + 4C5361F418608BD900EB89F5 /* NSObject+AutoCancelAsyncOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+AutoCancelAsyncOperation.m"; sourceTree = ""; }; 4C6DFB0C1718446500D86975 /* JFFBaseStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFBaseStrategy.h; sourceTree = ""; }; 4C6DFB0D1718446600D86975 /* JFFBaseStrategy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFBaseStrategy.m; sourceTree = ""; }; 4CB5CDE5174F54E100F2B600 /* NSArray+AsyncMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+AsyncMap.h"; sourceTree = ""; }; @@ -301,8 +291,6 @@ 65347F9513B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOperationLoadBalancer.m; sourceTree = ""; }; 6534804A13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationProgressBlockHolder.h; sourceTree = ""; }; 6534804B13B822F00002CF73 /* JFFAsyncOperationProgressBlockHolder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFAsyncOperationProgressBlockHolder.m; sourceTree = ""; }; - 655ADDDE13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+AutoCancelAsyncOperation.h"; sourceTree = ""; }; - 655ADDDF13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+AutoCancelAsyncOperation.m"; sourceTree = ""; }; 65648BD313924220001E163C /* JFFBlockOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFBlockOperation.h; sourceTree = ""; }; 65648BD413924220001E163C /* JFFBlockOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JFFBlockOperation.mm; sourceTree = ""; }; 65648C381392490F001E163C /* JFFAsyncOperationUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFAsyncOperationUtils.h; sourceTree = ""; }; @@ -415,7 +403,6 @@ isa = PBXGroup; children = ( 4C0C3EFF1826D31E00984027 /* Errors */, - 4C1A0FBD18257F1D0020FBF6 /* Tools */, 4CB5CDE4174F54CA00F2B600 /* Categories */, 1B0D88BF1519F80C00EC4A92 /* AsyncOperartionsBuilder */, 8D9827F613F2B9AF009DD73B /* CachedAsyncOperations */, @@ -429,8 +416,6 @@ 4C1A0FEF1826A8E60020FBF6 /* JFFAsyncOperationHandlerTask.h */, 65648BD313924220001E163C /* JFFBlockOperation.h */, 65648BD413924220001E163C /* JFFBlockOperation.mm */, - 655ADDDE13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h */, - 655ADDDF13B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.m */, 65648C381392490F001E163C /* JFFAsyncOperationUtils.h */, 65648C391392490F001E163C /* JFFAsyncOperationUtils.mm */, 651BE1651391928400DD6890 /* JFFAsyncOperationContinuity.h */, @@ -484,15 +469,6 @@ path = Errors; sourceTree = ""; }; - 4C1A0FBD18257F1D0020FBF6 /* Tools */ = { - isa = PBXGroup; - children = ( - 4C1A0FBE18257F590020FBF6 /* JFFAsyncTools.h */, - 4C1A0FBF18257F590020FBF6 /* JFFAsyncTools.m */, - ); - path = Tools; - sourceTree = ""; - }; 4CB5CDE4174F54CA00F2B600 /* Categories */ = { isa = PBXGroup; children = ( @@ -500,6 +476,8 @@ 4CB5CDE6174F54E100F2B600 /* NSArray+AsyncMap.m */, 4CB5CDE9174F551200F2B600 /* NSDictionary+AsyncMap.h */, 4CB5CDEA174F551300F2B600 /* NSDictionary+AsyncMap.m */, + 4C5361F318608BD900EB89F5 /* NSObject+AutoCancelAsyncOperation.h */, + 4C5361F418608BD900EB89F5 /* NSObject+AutoCancelAsyncOperation.m */, ); path = Categories; sourceTree = ""; @@ -636,7 +614,6 @@ 4C1A0F4A182577BE0020FBF6 /* JFFBlockOperation.h in Headers */, 4C1A0F4B182577BE0020FBF6 /* JFFAsyncOperationUtils.h in Headers */, 4C1A0F4C182577BE0020FBF6 /* JFFAsyncOperations.h in Headers */, - 4C1A0F4D182577BE0020FBF6 /* NSObject+AutoCancelAsyncOperation.h in Headers */, 4C0C3F151826D60400984027 /* JFFAsyncOpFinishedByCancellationError.h in Headers */, 4C1A0F4E182577BE0020FBF6 /* JFFAsyncOperationHandlerBlockHolder.h in Headers */, 4C1A0F4F182577BE0020FBF6 /* JFFAsyncOperationLoadBalancer.h in Headers */, @@ -652,7 +629,6 @@ 4C1A0F59182577BE0020FBF6 /* JFFAsyncOperationHelpers.h in Headers */, 4C1A0F5A182577BE0020FBF6 /* JFFAsyncOperationBuilder.h in Headers */, 4C1A0F5B182577BE0020FBF6 /* JFFAsyncOperationAdapter.h in Headers */, - 4C1A0FC118257F590020FBF6 /* JFFAsyncTools.h in Headers */, 4C1A0F5C182577BE0020FBF6 /* JFFLimitedLoadersQueue.h in Headers */, 4C1A0F5D182577BE0020FBF6 /* JFFStrategyFifo.h in Headers */, 4C1A0F5E182577BE0020FBF6 /* JFFQueueState.h in Headers */, @@ -679,7 +655,6 @@ 5391035C14A88BB5007315A3 /* JFFBlockOperation.h in Headers */, 5391035D14A88BB5007315A3 /* JFFAsyncOperationUtils.h in Headers */, 5391035E14A88BB5007315A3 /* JFFAsyncOperations.h in Headers */, - 5391035F14A88BB5007315A3 /* NSObject+AutoCancelAsyncOperation.h in Headers */, 5391036014A88BB5007315A3 /* JFFAsyncOperationHandlerBlockHolder.h in Headers */, 5391036114A88BB5007315A3 /* JFFAsyncOperationLoadBalancer.h in Headers */, 5391036514A88BB5007315A3 /* JFFAsyncOperationProgressBlockHolder.h in Headers */, @@ -715,7 +690,6 @@ 7E8F211A14F94C6100588C7D /* JFFAsyncOperationsBlockDefinitions.h in Headers */, 7E8F211B14F94C6100588C7D /* JFFAsyncOperationsPredefinedBlocks.h in Headers */, 7E8F211D14F94C6100588C7D /* JFFBlockOperation.h in Headers */, - 7E8F211F14F94C6100588C7D /* NSObject+AutoCancelAsyncOperation.h in Headers */, 7E8F212114F94C6100588C7D /* JFFAsyncOperationUtils.h in Headers */, 7E8F212314F94C6100588C7D /* JFFAsyncOperationContinuity.h in Headers */, 7E8F212514F94C6100588C7D /* JFFAsyncOperations.h in Headers */, @@ -736,10 +710,10 @@ 651BE1621391913300DD6890 /* JFFAsyncOperationsBlockDefinitions.h in Headers */, 651BE1671391928400DD6890 /* JFFAsyncOperationContinuity.h in Headers */, 4C0C3F081826D39100984027 /* JFFAsyncOperationAbstractFinishError.h in Headers */, + 4C5361F518608BD900EB89F5 /* NSObject+AutoCancelAsyncOperation.h in Headers */, 65648BD513924220001E163C /* JFFBlockOperation.h in Headers */, 65648C3A1392490F001E163C /* JFFAsyncOperationUtils.h in Headers */, 65648C5113924A77001E163C /* JFFAsyncOperations.h in Headers */, - 655ADDE013B68E45005A6D3F /* NSObject+AutoCancelAsyncOperation.h in Headers */, 4C0C3F141826D60400984027 /* JFFAsyncOpFinishedByCancellationError.h in Headers */, 65347F6D13B7EEE50002CF73 /* JFFAsyncOperationHandlerBlockHolder.h in Headers */, 65347F9613B7F0BD0002CF73 /* JFFAsyncOperationLoadBalancer.h in Headers */, @@ -755,7 +729,6 @@ 1B0FB887150604860056F14E /* JFFAsyncOperationHelpers.h in Headers */, 1B0D88C31519F81F00EC4A92 /* JFFAsyncOperationBuilder.h in Headers */, 1B0E83A91563954B00825E3C /* JFFAsyncOperationAdapter.h in Headers */, - 4C1A0FC018257F590020FBF6 /* JFFAsyncTools.h in Headers */, CE4031CC163D266B00FE6427 /* JFFLimitedLoadersQueue.h in Headers */, 7E79064D16E4981700CFC696 /* JFFStrategyFifo.h in Headers */, 7E79065516E4984400CFC696 /* JFFQueueState.h in Headers */, @@ -853,7 +826,7 @@ 0867D690FE84028FC02AAC07 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastUpgradeCheck = 0510; }; buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "JFFAsyncOperations" */; compatibilityVersion = "Xcode 3.2"; @@ -940,7 +913,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4C1A0F67182577BE0020FBF6 /* NSObject+AutoCancelAsyncOperation.m in Sources */, 4C1A0F68182577BE0020FBF6 /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */, 4C1A0F69182577BE0020FBF6 /* JFFAsyncOperationHandlerBlockHolder.m in Sources */, 4C1A0F6A182577BE0020FBF6 /* JFFAsyncOperationProgressBlockHolder.m in Sources */, @@ -950,7 +922,6 @@ 4C1A0F6F182577BE0020FBF6 /* JFFPropertyPath.m in Sources */, 4C1A0F70182577BE0020FBF6 /* JFFObjectRelatedPropertyData.m in Sources */, 4C1A0F71182577BE0020FBF6 /* NSObject+PropertyExtractor.m in Sources */, - 4C1A0FC318257F590020FBF6 /* JFFAsyncTools.m in Sources */, 4C1A0F72182577BE0020FBF6 /* JFFAsyncOperationsPredefinedBlocks.m in Sources */, 4C1A0F73182577BE0020FBF6 /* JFFBlockOperation.mm in Sources */, 4C1A0F74182577BE0020FBF6 /* NSError+ResultOwnerships.m in Sources */, @@ -985,7 +956,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5391036F14A88BB5007315A3 /* NSObject+AutoCancelAsyncOperation.m in Sources */, 5391037014A88BB5007315A3 /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */, 5391037114A88BB5007315A3 /* JFFAsyncOperationHandlerBlockHolder.m in Sources */, 5391037214A88BB5007315A3 /* JFFAsyncOperationProgressBlockHolder.m in Sources */, @@ -1017,7 +987,6 @@ 7E8F20E714F94C3100588C7D /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */, 7E8F20F414F94C3100588C7D /* JFFAsyncOperationsPredefinedBlocks.m in Sources */, 7E8F20F614F94C3100588C7D /* JFFBlockOperation.mm in Sources */, - 7E8F20F814F94C3100588C7D /* NSObject+AutoCancelAsyncOperation.m in Sources */, 7E8F20FC14F94C3100588C7D /* JFFAsyncOperationContinuity.m in Sources */, 4CF62FCE16FDBA3800DAE2BB /* JFFAsyncOperationLoadBalancer.m in Sources */, 7E79065216E4981700CFC696 /* JFFStrategyFifo.m in Sources */, @@ -1038,17 +1007,16 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1B2A678D143F3D0E00BC284F /* NSObject+AutoCancelAsyncOperation.m in Sources */, 1B2A67E5143F4CAB00BC284F /* JFFDidFinishAsyncOperationBlockHolder.m in Sources */, 1B2A682B143F532500BC284F /* JFFAsyncOperationHandlerBlockHolder.m in Sources */, 1B2A682E143F537B00BC284F /* JFFAsyncOperationProgressBlockHolder.m in Sources */, 1BA2551C1443109B00C9B2BE /* JFFAsyncOperationContinuity.m in Sources */, 6572C43814A75CD8008CFCFD /* NSObject+AsyncPropertyReader.m in Sources */, + 4C5361F618608BD900EB89F5 /* NSObject+AutoCancelAsyncOperation.m in Sources */, 6572C43914A75CDA008CFCFD /* JFFPropertyExtractor.m in Sources */, 6572C43A14A75CDC008CFCFD /* JFFPropertyPath.m in Sources */, 6572C43B14A75CE1008CFCFD /* JFFObjectRelatedPropertyData.m in Sources */, 6572C43C14A75CE3008CFCFD /* NSObject+PropertyExtractor.m in Sources */, - 4C1A0FC218257F590020FBF6 /* JFFAsyncTools.m in Sources */, 65BA0A4E14A7821200EB2AAB /* JFFAsyncOperationsPredefinedBlocks.m in Sources */, 65462C9514D8811100685ED8 /* JFFBlockOperation.mm in Sources */, 1B9528FD1500E67900C9B979 /* NSError+ResultOwnerships.m in Sources */, @@ -1105,7 +1073,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = JFFAsyncOperations_Prefix.pch; INSTALL_PATH = /usr/local/lib; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; PRODUCT_NAME = JFFAsyncOperations; SKIP_INSTALL = YES; }; @@ -1120,7 +1087,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = JFFAsyncOperations_Prefix.pch; INSTALL_PATH = /usr/local/lib; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; PRODUCT_NAME = JFFAsyncOperations; SKIP_INSTALL = YES; }; @@ -1139,8 +1105,9 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ../; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; + ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; }; @@ -1158,7 +1125,7 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ../; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; @@ -1204,7 +1171,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; COPY_PHASE_STRIP = NO; DSTROOT = /tmp/JFFAsyncOperations.dst; GCC_DYNAMIC_NO_PIC = NO; @@ -1223,7 +1189,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; DSTROOT = /tmp/JFFAsyncOperations.dst; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; diff --git a/lib/JFFAsyncOperations/LoadBalancer/JFFAsyncOperationLoadBalancer.m b/lib/JFFAsyncOperations/LoadBalancer/JFFAsyncOperationLoadBalancer.m index c8636cb..f899e75 100644 --- a/lib/JFFAsyncOperations/LoadBalancer/JFFAsyncOperationLoadBalancer.m +++ b/lib/JFFAsyncOperations/LoadBalancer/JFFAsyncOperationLoadBalancer.m @@ -216,7 +216,7 @@ static JFFAsyncOperation wrappedAsyncOperationWithContext(JFFAsyncOperation nati JFFAsyncOperationHandler wrappedCancelBlock = [^void(JFFAsyncOperationHandlerTask task) { - if (JFFAsyncOperationHandlerTaskUnsubscribe == task) { + if (JFFAsyncOperationHandlerTaskUnSubscribe == task) { finishBlockHolder.onceDidFinishBlock(nil, [JFFAsyncOpFinishedByUnsubscriptionError new]); @@ -295,7 +295,7 @@ JFFAsyncOperation balancedAsyncOperationInContext(JFFAsyncOperation nativeLoader } switch (task) { - case JFFAsyncOperationHandlerTaskUnsubscribe: + case JFFAsyncOperationHandlerTaskUnSubscribe: { [pedingLoaderData unsubscribe]; if (doneCallback) diff --git a/lib/JFFAsyncOperations/LoadBalancer/JFFLimitedLoadersQueue.m b/lib/JFFAsyncOperations/LoadBalancer/JFFLimitedLoadersQueue.m index df8098d..a2e583d 100644 --- a/lib/JFFAsyncOperations/LoadBalancer/JFFLimitedLoadersQueue.m +++ b/lib/JFFAsyncOperations/LoadBalancer/JFFLimitedLoadersQueue.m @@ -50,12 +50,9 @@ - (BOOL)hasLoadersReadyToStartForPendingLoader:(JFFBaseLoaderOwner *)pendingLoad BOOL result = _limitCount > [_activeLoaders count] && [_pendingLoaders count] > 0; - if (result) { - - result = [_activeLoaders all:^BOOL(JFFBaseLoaderOwner *activeLoader) { - return !activeLoader.barrier; - }]; - } + result = result && [_activeLoaders all:^BOOL(JFFBaseLoaderOwner *activeLoader) { + return !activeLoader.barrier; + }]; return result; } @@ -116,7 +113,7 @@ - (JFFAsyncOperation)balancedLoaderWithLoader:(JFFAsyncOperation)loader return; switch (task) { - case JFFAsyncOperationHandlerTaskUnsubscribe: + case JFFAsyncOperationHandlerTaskUnSubscribe: { loaderHolder.progressCallback = nil; loaderHolder.stateCallback = nil; diff --git a/lib/JFFCache/JFFCache.xcodeproj/project.pbxproj b/lib/JFFCache/JFFCache.xcodeproj/project.pbxproj index f271fc8..610db80 100644 --- a/lib/JFFCache/JFFCache.xcodeproj/project.pbxproj +++ b/lib/JFFCache/JFFCache.xcodeproj/project.pbxproj @@ -9,18 +9,20 @@ /* Begin PBXBuildFile section */ 4C0D56E617E70F4A001F0944 /* JFFCacheLoadImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C0D56E417E70F4A001F0944 /* JFFCacheLoadImageError.h */; }; 4C0D56E717E70F4A001F0944 /* JFFCacheLoadImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0D56E517E70F4A001F0944 /* JFFCacheLoadImageError.m */; }; + 4C236BF818759C3F0027B50A /* CacheDBInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C236BF618759C3F0027B50A /* CacheDBInfo.h */; }; + 4C236BF918759C3F0027B50A /* CacheDBInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C236BF718759C3F0027B50A /* CacheDBInfo.m */; }; + 4C236BFC1875B7870027B50A /* JFFKeyValueDB.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C236BFA1875B7870027B50A /* JFFKeyValueDB.h */; }; + 4C236BFD1875B7870027B50A /* JFFKeyValueDB.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C236BFB1875B7870027B50A /* JFFKeyValueDB.m */; }; 4CA0CAA816CE864C0007A85D /* JFFCacheError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CAA616CE864C0007A85D /* JFFCacheError.h */; }; 4CA0CAA916CE864C0007A85D /* JFFCacheError.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0CAA716CE864C0007A85D /* JFFCacheError.m */; }; - 4CA0CAC116CE86B90007A85D /* NSDictionary+DBInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CAAB16CE86B80007A85D /* NSDictionary+DBInfo.h */; }; - 4CA0CAC216CE86B90007A85D /* NSDictionary+DBInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0CAAC16CE86B80007A85D /* NSDictionary+DBInfo.m */; }; + 4CA0CAC116CE86B90007A85D /* CacheDBInfoStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CAAB16CE86B80007A85D /* CacheDBInfoStorage.h */; }; + 4CA0CAC216CE86B90007A85D /* CacheDBInfoStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0CAAC16CE86B80007A85D /* CacheDBInfoStorage.m */; }; 4CA0CAC316CE86B90007A85D /* NSObject+CompositeKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CAAD16CE86B80007A85D /* NSObject+CompositeKey.h */; }; 4CA0CAC416CE86B90007A85D /* NSObject+CompositeKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0CAAE16CE86B80007A85D /* NSObject+CompositeKey.m */; }; 4CA0CAC516CE86B90007A85D /* NSString+CacheFSManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CAAF16CE86B80007A85D /* NSString+CacheFSManager.h */; }; 4CA0CAC616CE86B90007A85D /* NSString+CacheFSManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0CAB016CE86B80007A85D /* NSString+CacheFSManager.m */; }; 4CA0CAC716CE86B90007A85D /* NSString+CompositeKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CAB116CE86B80007A85D /* NSString+CompositeKey.h */; }; 4CA0CAC816CE86B90007A85D /* NSString+CompositeKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0CAB216CE86B80007A85D /* NSString+CompositeKey.m */; }; - 4CA0CAC916CE86B90007A85D /* JFFBaseDB.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CAB316CE86B80007A85D /* JFFBaseDB.h */; }; - 4CA0CACA16CE86B90007A85D /* JFFBaseDB.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0CAB416CE86B80007A85D /* JFFBaseDB.m */; }; 4CA0CACB16CE86B90007A85D /* JFFCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CAB516CE86B80007A85D /* JFFCache.h */; }; 4CA0CACC16CE86B90007A85D /* JFFCacheDB.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CAB616CE86B80007A85D /* JFFCacheDB.h */; }; 4CA0CACD16CE86B90007A85D /* JFFCaches.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CAB716CE86B80007A85D /* JFFCaches.h */; }; @@ -29,8 +31,6 @@ 4CA0CAD016CE86B90007A85D /* JFFDBCompositeKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0CABA16CE86B90007A85D /* JFFDBCompositeKey.m */; }; 4CA0CAD116CE86B90007A85D /* JFFDBInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CABB16CE86B90007A85D /* JFFDBInfo.h */; }; 4CA0CAD216CE86B90007A85D /* JFFDBInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0CABC16CE86B90007A85D /* JFFDBInfo.m */; }; - 4CA0CAD316CE86B90007A85D /* JFFDBManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CABD16CE86B90007A85D /* JFFDBManager.h */; }; - 4CA0CAD416CE86B90007A85D /* JFFDBManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0CABE16CE86B90007A85D /* JFFDBManager.m */; }; 4CA0CAD516CE86B90007A85D /* JFFThumbnailStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CABF16CE86B90007A85D /* JFFThumbnailStorage.h */; }; 4CA0CAD616CE86B90007A85D /* JFFThumbnailStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CA0CAC016CE86B90007A85D /* JFFThumbnailStorage.m */; }; 4CA0CAD916CE86F70007A85D /* JFFCacheNoURLError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA0CAD716CE86F70007A85D /* JFFCacheNoURLError.h */; }; @@ -43,18 +43,20 @@ /* Begin PBXFileReference section */ 4C0D56E417E70F4A001F0944 /* JFFCacheLoadImageError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFCacheLoadImageError.h; sourceTree = ""; }; 4C0D56E517E70F4A001F0944 /* JFFCacheLoadImageError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFCacheLoadImageError.m; sourceTree = ""; }; + 4C236BF618759C3F0027B50A /* CacheDBInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CacheDBInfo.h; sourceTree = ""; }; + 4C236BF718759C3F0027B50A /* CacheDBInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CacheDBInfo.m; sourceTree = ""; }; + 4C236BFA1875B7870027B50A /* JFFKeyValueDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFKeyValueDB.h; sourceTree = ""; }; + 4C236BFB1875B7870027B50A /* JFFKeyValueDB.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFKeyValueDB.m; sourceTree = ""; }; 4CA0CAA616CE864C0007A85D /* JFFCacheError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFCacheError.h; sourceTree = ""; }; 4CA0CAA716CE864C0007A85D /* JFFCacheError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFCacheError.m; sourceTree = ""; }; - 4CA0CAAB16CE86B80007A85D /* NSDictionary+DBInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+DBInfo.h"; sourceTree = ""; }; - 4CA0CAAC16CE86B80007A85D /* NSDictionary+DBInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+DBInfo.m"; sourceTree = ""; }; + 4CA0CAAB16CE86B80007A85D /* CacheDBInfoStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CacheDBInfoStorage.h; sourceTree = ""; }; + 4CA0CAAC16CE86B80007A85D /* CacheDBInfoStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CacheDBInfoStorage.m; sourceTree = ""; }; 4CA0CAAD16CE86B80007A85D /* NSObject+CompositeKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+CompositeKey.h"; sourceTree = ""; }; 4CA0CAAE16CE86B80007A85D /* NSObject+CompositeKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+CompositeKey.m"; sourceTree = ""; }; 4CA0CAAF16CE86B80007A85D /* NSString+CacheFSManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+CacheFSManager.h"; sourceTree = ""; }; 4CA0CAB016CE86B80007A85D /* NSString+CacheFSManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+CacheFSManager.m"; sourceTree = ""; }; 4CA0CAB116CE86B80007A85D /* NSString+CompositeKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+CompositeKey.h"; sourceTree = ""; }; 4CA0CAB216CE86B80007A85D /* NSString+CompositeKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+CompositeKey.m"; sourceTree = ""; }; - 4CA0CAB316CE86B80007A85D /* JFFBaseDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFBaseDB.h; sourceTree = ""; }; - 4CA0CAB416CE86B80007A85D /* JFFBaseDB.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFBaseDB.m; sourceTree = ""; }; 4CA0CAB516CE86B80007A85D /* JFFCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFCache.h; sourceTree = ""; }; 4CA0CAB616CE86B80007A85D /* JFFCacheDB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFCacheDB.h; sourceTree = ""; }; 4CA0CAB716CE86B80007A85D /* JFFCaches.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFCaches.h; sourceTree = ""; }; @@ -63,8 +65,6 @@ 4CA0CABA16CE86B90007A85D /* JFFDBCompositeKey.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFDBCompositeKey.m; sourceTree = ""; }; 4CA0CABB16CE86B90007A85D /* JFFDBInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFDBInfo.h; sourceTree = ""; }; 4CA0CABC16CE86B90007A85D /* JFFDBInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFDBInfo.m; sourceTree = ""; }; - 4CA0CABD16CE86B90007A85D /* JFFDBManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFDBManager.h; sourceTree = ""; }; - 4CA0CABE16CE86B90007A85D /* JFFDBManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFDBManager.m; sourceTree = ""; }; 4CA0CABF16CE86B90007A85D /* JFFThumbnailStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFThumbnailStorage.h; sourceTree = ""; }; 4CA0CAC016CE86B90007A85D /* JFFThumbnailStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFThumbnailStorage.m; sourceTree = ""; }; 4CA0CAD716CE86F70007A85D /* JFFCacheNoURLError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFCacheNoURLError.h; sourceTree = ""; }; @@ -105,14 +105,18 @@ 4CA0CAAA16CE86B80007A85D /* Details */ = { isa = PBXGroup; children = ( - 4CA0CAAB16CE86B80007A85D /* NSDictionary+DBInfo.h */, - 4CA0CAAC16CE86B80007A85D /* NSDictionary+DBInfo.m */, + 4C236BF618759C3F0027B50A /* CacheDBInfo.h */, + 4C236BF718759C3F0027B50A /* CacheDBInfo.m */, + 4CA0CAAB16CE86B80007A85D /* CacheDBInfoStorage.h */, + 4CA0CAAC16CE86B80007A85D /* CacheDBInfoStorage.m */, 4CA0CAAD16CE86B80007A85D /* NSObject+CompositeKey.h */, 4CA0CAAE16CE86B80007A85D /* NSObject+CompositeKey.m */, 4CA0CAAF16CE86B80007A85D /* NSString+CacheFSManager.h */, 4CA0CAB016CE86B80007A85D /* NSString+CacheFSManager.m */, 4CA0CAB116CE86B80007A85D /* NSString+CompositeKey.h */, 4CA0CAB216CE86B80007A85D /* NSString+CompositeKey.m */, + 4C236BFA1875B7870027B50A /* JFFKeyValueDB.h */, + 4C236BFB1875B7870027B50A /* JFFKeyValueDB.m */, ); path = Details; sourceTree = ""; @@ -157,8 +161,6 @@ 4CB92AE216FA02E600471165 /* Categories */, 4CA0CAA516CE86320007A85D /* Errors */, 4CA0CAAA16CE86B80007A85D /* Details */, - 4CA0CAB316CE86B80007A85D /* JFFBaseDB.h */, - 4CA0CAB416CE86B80007A85D /* JFFBaseDB.m */, 4CA0CAB616CE86B80007A85D /* JFFCacheDB.h */, 4CA0CAB716CE86B80007A85D /* JFFCaches.h */, 4CA0CAB816CE86B80007A85D /* JFFCaches.m */, @@ -166,8 +168,6 @@ 4CA0CABA16CE86B90007A85D /* JFFDBCompositeKey.m */, 4CA0CABB16CE86B90007A85D /* JFFDBInfo.h */, 4CA0CABC16CE86B90007A85D /* JFFDBInfo.m */, - 4CA0CABD16CE86B90007A85D /* JFFDBManager.h */, - 4CA0CABE16CE86B90007A85D /* JFFDBManager.m */, 4CA0CABF16CE86B90007A85D /* JFFThumbnailStorage.h */, 4CA0CAC016CE86B90007A85D /* JFFThumbnailStorage.m */, 4CA0CAB516CE86B80007A85D /* JFFCache.h */, @@ -201,17 +201,17 @@ buildActionMask = 2147483647; files = ( 4CA0CAA816CE864C0007A85D /* JFFCacheError.h in Headers */, - 4CA0CAC116CE86B90007A85D /* NSDictionary+DBInfo.h in Headers */, + 4CA0CAC116CE86B90007A85D /* CacheDBInfoStorage.h in Headers */, 4CA0CAC316CE86B90007A85D /* NSObject+CompositeKey.h in Headers */, 4CA0CAC516CE86B90007A85D /* NSString+CacheFSManager.h in Headers */, 4CA0CAC716CE86B90007A85D /* NSString+CompositeKey.h in Headers */, - 4CA0CAC916CE86B90007A85D /* JFFBaseDB.h in Headers */, + 4C236BF818759C3F0027B50A /* CacheDBInfo.h in Headers */, 4CA0CACB16CE86B90007A85D /* JFFCache.h in Headers */, 4CA0CACC16CE86B90007A85D /* JFFCacheDB.h in Headers */, 4CA0CACD16CE86B90007A85D /* JFFCaches.h in Headers */, 4CA0CACF16CE86B90007A85D /* JFFDBCompositeKey.h in Headers */, 4CA0CAD116CE86B90007A85D /* JFFDBInfo.h in Headers */, - 4CA0CAD316CE86B90007A85D /* JFFDBManager.h in Headers */, + 4C236BFC1875B7870027B50A /* JFFKeyValueDB.h in Headers */, 4CA0CAD516CE86B90007A85D /* JFFThumbnailStorage.h in Headers */, 4CA0CAD916CE86F70007A85D /* JFFCacheNoURLError.h in Headers */, 4C0D56E617E70F4A001F0944 /* JFFCacheLoadImageError.h in Headers */, @@ -245,7 +245,7 @@ 6516846E144F4ECD0014670E /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastUpgradeCheck = 0510; }; buildConfigurationList = 65168471144F4ECD0014670E /* Build configuration list for PBXProject "JFFCache" */; compatibilityVersion = "Xcode 3.2"; @@ -270,16 +270,16 @@ buildActionMask = 2147483647; files = ( 4CA0CAA916CE864C0007A85D /* JFFCacheError.m in Sources */, - 4CA0CAC216CE86B90007A85D /* NSDictionary+DBInfo.m in Sources */, + 4CA0CAC216CE86B90007A85D /* CacheDBInfoStorage.m in Sources */, 4CA0CAC416CE86B90007A85D /* NSObject+CompositeKey.m in Sources */, 4CA0CAC616CE86B90007A85D /* NSString+CacheFSManager.m in Sources */, 4CA0CAC816CE86B90007A85D /* NSString+CompositeKey.m in Sources */, + 4C236BF918759C3F0027B50A /* CacheDBInfo.m in Sources */, 4C0D56E717E70F4A001F0944 /* JFFCacheLoadImageError.m in Sources */, - 4CA0CACA16CE86B90007A85D /* JFFBaseDB.m in Sources */, 4CA0CACE16CE86B90007A85D /* JFFCaches.m in Sources */, 4CA0CAD016CE86B90007A85D /* JFFDBCompositeKey.m in Sources */, 4CA0CAD216CE86B90007A85D /* JFFDBInfo.m in Sources */, - 4CA0CAD416CE86B90007A85D /* JFFDBManager.m in Sources */, + 4C236BFD1875B7870027B50A /* JFFKeyValueDB.m in Sources */, 4CA0CAD616CE86B90007A85D /* JFFThumbnailStorage.m in Sources */, 4CA0CADA16CE86F70007A85D /* JFFCacheNoURLError.m in Sources */, 4CB92AE616FA02E600471165 /* UIImageView+CachedAsyncImageLoader.m in Sources */, @@ -313,8 +313,9 @@ ../JFFRestKit, ., ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -336,7 +337,7 @@ ../JFFRestKit, ., ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -350,7 +351,6 @@ DSTROOT = /tmp/JFFCache.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFCache/JFFCache-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -364,7 +364,6 @@ DSTROOT = /tmp/JFFCache.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFCache/JFFCache-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/lib/JFFCache/JFFCache/JFFCache.h b/lib/JFFCache/JFFCache/JFFCache.h index 9584cfb..dc869bf 100644 --- a/lib/JFFCache/JFFCache/JFFCache.h +++ b/lib/JFFCache/JFFCache/JFFCache.h @@ -3,7 +3,6 @@ #import #import -#import #import //Errors diff --git a/lib/JFFCache/JFFCache/JFFCacheDB.h b/lib/JFFCache/JFFCache/JFFCacheDB.h index c28342a..521c3af 100644 --- a/lib/JFFCache/JFFCache/JFFCacheDB.h +++ b/lib/JFFCache/JFFCache/JFFCacheDB.h @@ -14,8 +14,4 @@ - (void)removeRecordsForKey:(id)key; - (void)removeAllRecordsWithCallback:(JFFSimpleBlock)callback; -- (void)migrateDB; - -- (NSNumber *)timeToLiveInHours; - @end diff --git a/lib/JFFCache/JFFCache/JFFCaches.h b/lib/JFFCache/JFFCache/JFFCaches.h index 7ba667d..03ba2ab 100644 --- a/lib/JFFCache/JFFCache/JFFCaches.h +++ b/lib/JFFCache/JFFCache/JFFCaches.h @@ -11,12 +11,16 @@ - (instancetype)initWithDBInfoDictionary:(NSDictionary *)cachesInfo; -+ (id< JFFCacheDB >)createCacheForName:(NSString *)name; ++ (id)createCacheForName:(NSString *)name; -- (id< JFFCacheDB >)cacheByName:(NSString *)name; +- (id)cacheByName:(NSString *)name; -- (id< JFFCacheDB >)thumbnailDB; ++ (NSString *)thumbnailDBName; -+ (id< JFFCacheDB >)createThumbnailDB; +- (id)thumbnailDB; + ++ (id)createThumbnailDB; + +- (void)migrateDBs; @end diff --git a/lib/JFFCache/JFFCache/JFFCaches.m b/lib/JFFCache/JFFCache/JFFCaches.m index a140fe1..bebb68f 100644 --- a/lib/JFFCache/JFFCache/JFFCaches.m +++ b/lib/JFFCache/JFFCache/JFFCaches.m @@ -1,10 +1,11 @@ #import "JFFCaches.h" #import "JFFCacheDB.h" -#import "JFFBaseDB.h" #import "JFFDBInfo.h" +#import "JFFKeyValueDB.h" -#import "NSDictionary+DBInfo.h" +#import "CacheDBInfo.h" +#import "CacheDBInfoStorage.h" #import @@ -13,45 +14,38 @@ static NSMutableDictionary *autoremoveSchedulersByCacheName; static NSString *const lockObject = @"41d318da-1229-4a50-9222-4ad870c56ecc"; -@interface JFFInternalCacheDB : JFFBaseDB +@interface JFFInternalCacheDB : JFFKeyValueDB -@property (nonatomic) NSString *configPropertyName; +@property (nonatomic) CacheDBInfo *cacheDBInfo; @end @implementation JFFInternalCacheDB -+ (void)removeOldDataWithAutoremoveProperties:(NSDictionary *)autoremoveProperties - dbPropertyName:(NSString *)dbPropertyName - dbInfo:(JFFDBInfo *)dbInfo +- (void)removeOldData { - NSTimeInterval removeRarelyAccessDataDelay = [autoremoveProperties autoRemoveByLastAccessDate]; - - JFFInternalCacheDB *cacheDB = [[self alloc] initWithCacheDBWithName:dbPropertyName - dbInfo:dbInfo]; + NSTimeInterval removeRarelyAccessDataDelay = _cacheDBInfo.autoRemoveByLastAccessDate; if (removeRarelyAccessDataDelay > 0.) { NSDate *fromDate = [[NSDate new] dateByAddingTimeInterval:-removeRarelyAccessDataDelay]; - [cacheDB removeRecordsToAccessDate:fromDate]; + [self removeRecordsToAccessDate:fromDate]; } - unsigned long long bytes = [autoremoveProperties autoRemoveByMaxSizeInMB] * 1024 * 1024; + unsigned long long bytes = _cacheDBInfo.autoRemoveByMaxSizeInMB * 1024 * 1024; if (bytes > 0) { - [cacheDB removeRecordsWhileTotalSizeMoreThenBytes:bytes]; + [self removeRecordsWhileTotalSizeMoreThenBytes:bytes]; } } -+ (void)runAutoremoveDataSchedulerWithName:(NSString *)dbPropertyName - autoremoveProperties:(NSDictionary *)autoremoveProperties - dbInfo:(JFFDBInfo *)dbInfo +- (void)runAutoRemoveDataSchedulerIfNeeds { @synchronized(lockObject) { - JFFTimer *timer = autoremoveSchedulersByCacheName[dbPropertyName]; + JFFTimer *timer = autoremoveSchedulersByCacheName[_cacheDBInfo.dbPropertyName]; if (timer) return; @@ -61,17 +55,14 @@ + (void)runAutoremoveDataSchedulerWithName:(NSString *)dbPropertyName if (!timer) { timer = [JFFTimer new]; - autoremoveSchedulersByCacheName[dbPropertyName] = timer; + autoremoveSchedulersByCacheName[_cacheDBInfo.dbPropertyName] = timer; } JFFScheduledBlock block = ^void(JFFCancelScheduledBlock cancel) { JFFSyncOperation loadDataBlock = ^id(NSError *__autoreleasing *outError) { - [self removeOldDataWithAutoremoveProperties:autoremoveProperties - dbPropertyName:dbPropertyName - dbInfo:dbInfo]; - + [self removeOldData]; return [NSNull new]; }; @@ -89,30 +80,12 @@ + (void)runAutoremoveDataSchedulerWithName:(NSString *)dbPropertyName } } -+ (void)runAutoremoveDataSchedulerIfNeedsWithName:(NSString *)dbPropertyName - dbInfo:(JFFDBInfo *)dbInfo -{ - NSDictionary *dbInfoDict = [dbInfo currentDbInfo]; - NSDictionary *autoremoveProperties = - [dbInfoDict autoRemoveProperiesForDBWithName:dbPropertyName]; - - if (autoremoveProperties) { - - [self runAutoremoveDataSchedulerWithName:dbPropertyName - autoremoveProperties:autoremoveProperties - dbInfo:dbInfo]; - } -} - -- (instancetype)initWithCacheDBWithName:(NSString *)dbPropertyName - dbInfo:(JFFDBInfo *)dbInfo +- (instancetype)initWithCacheDBInfo:(CacheDBInfo *)dbInfo { - NSString *filePath = [[dbInfo dbInfo] fileNameForDBWithName:dbPropertyName]; - - self = [super initWithCacheFileName:filePath]; + self = [super initWithCacheFileName:dbInfo.fileName]; if (self) { - _configPropertyName = dbPropertyName; + _cacheDBInfo = dbInfo; } return self; @@ -121,15 +94,15 @@ - (instancetype)initWithCacheDBWithName:(NSString *)dbPropertyName //JTODO check using of migrateDB method when multithreaded - (void)migrateDB { - NSDictionary *currentDbInfo = [[JFFDBInfo sharedDBInfo] currentDbInfo]; - if (!currentDbInfo) { + NSDictionary *currentDbInfo = [[JFFDBInfo sharedDBInfo] currentDbVersionsByName]; + NSNumber *currVersion = currentDbInfo[_cacheDBInfo.dbPropertyName]; + + if (!currVersion) { return; } - NSDictionary *dbInfo = [[JFFDBInfo sharedDBInfo] dbInfo]; - - NSInteger lastVersion = [dbInfo versionForDBWithName:_configPropertyName]; - NSInteger currentVersion = [currentDbInfo versionForDBWithName:_configPropertyName]; + NSInteger lastVersion = _cacheDBInfo.version; + NSInteger currentVersion = [currVersion unsignedIntegerValue]; if (lastVersion > currentVersion) { [self removeAllRecordsWithCallback:nil]; @@ -138,8 +111,8 @@ - (void)migrateDB - (NSNumber *)timeToLiveInHours { - NSDictionary *dbInfo = [[JFFDBInfo sharedDBInfo] currentDbInfo]; - NSNumber *result = [dbInfo timeToLiveInHoursForDBWithName:_configPropertyName]; + CacheDBInfoStorage *dbInfo = [[JFFDBInfo sharedDBInfo] dbInfoByNames]; + NSNumber *result = [[dbInfo infoByDBName:_cacheDBInfo.dbPropertyName] timeToLiveInHours]; return result; } @@ -162,9 +135,10 @@ @implementation JFFCaches id< JFFCacheDB > result = self.mutableCacheDbByName[dbPropertyName]; if (!result) { - result = [[self class] createCacheForName:dbPropertyName - dbInfo:dbInfo]; - self.mutableCacheDbByName[dbPropertyName] = result; + JFFInternalCacheDB *db = (JFFInternalCacheDB *)[[self class] createCacheForName:dbPropertyName]; + [db runAutoRemoveDataSchedulerIfNeeds]; + self.mutableCacheDbByName[dbPropertyName] = db; + result = db; } return result; @@ -172,7 +146,7 @@ @implementation JFFCaches - (void)setupCachesWithDBInfo:(JFFDBInfo *)dbInfo { - [dbInfo.dbInfo enumerateKeysAndObjectsUsingBlock:^(id dbName, id obj, BOOL *stop) { + [dbInfo.dbInfoByNames enumerateKeysAndObjectsUsingBlock:^(NSString *dbName, CacheDBInfo *obj, BOOL *stop) { [self registerAndCreateCacheDBWithName:dbName dbInfo:dbInfo]; }]; @@ -224,39 +198,41 @@ - (NSDictionary *)cacheDbByName return self.mutableCacheDbByName; } -- (id< JFFCacheDB >)cacheByName:(NSString *)name +- (id)cacheByName:(NSString *)name { return self.cacheDbByName[name]; } -- (id< JFFCacheDB >)thumbnailDB ++ (NSString *)thumbnailDBName { - return [self cacheByName:@"JFF_THUMBNAIL_DB"]; + return @"JFF_THUMBNAIL_DB"; } -+ (id< JFFCacheDB >)createCacheForName:(NSString *)name - dbInfo:(JFFDBInfo *)dbInfo +- (id)thumbnailDB { - id< JFFCacheDB > result = [[JFFInternalCacheDB alloc ] initWithCacheDBWithName:name - dbInfo:dbInfo]; - - [JFFInternalCacheDB runAutoremoveDataSchedulerIfNeedsWithName:name - dbInfo:dbInfo]; - - return result; + return [self cacheByName:[[self class] thumbnailDBName]]; } -+ (id< JFFCacheDB >)createCacheForName:(NSString *)name ++ (id)createCacheForName:(NSString *)name { JFFDBInfo *dbInfo = [JFFDBInfo sharedDBInfo]; - return [self createCacheForName:name - dbInfo:dbInfo]; + return [[JFFInternalCacheDB alloc] initWithCacheDBInfo:[dbInfo.dbInfoByNames infoByDBName:name]]; } -+ (id< JFFCacheDB >)createThumbnailDB ++ (id)createThumbnailDB { - return [self createCacheForName:@"JFF_THUMBNAIL_DB"]; + return [self createCacheForName:[[self class] thumbnailDBName]]; +} + +- (void)migrateDBs +{ + NSDictionary *cacheDbByName = [self cacheDbByName]; + [cacheDbByName enumerateKeysAndObjectsUsingBlock:^(id key, JFFInternalCacheDB *db, BOOL *stop) { + [db migrateDB]; + }]; + + [[JFFDBInfo sharedDBInfo] saveCurrentDBInfoVersions]; } @end diff --git a/lib/JFFCache/JFFCache/JFFDBInfo.h b/lib/JFFCache/JFFCache/JFFDBInfo.h index ba52a0f..fe9c41b 100644 --- a/lib/JFFCache/JFFCache/JFFDBInfo.h +++ b/lib/JFFCache/JFFCache/JFFDBInfo.h @@ -1,9 +1,11 @@ #import +@class CacheDBInfoStorage; + @interface JFFDBInfo : NSObject -@property (atomic, readonly) NSDictionary *dbInfo; -@property (atomic) NSDictionary *currentDbInfo; +@property (atomic, readonly) CacheDBInfoStorage *dbInfoByNames; +@property (atomic, readonly) NSDictionary *currentDbVersionsByName; - (instancetype)initWithInfoPath:(NSString *)infoPath; - (instancetype)initWithInfoDictionary:(NSDictionary *)infoDictionry; @@ -11,4 +13,6 @@ + (void)setSharedDBInfo:(JFFDBInfo *)dbInfo; + (JFFDBInfo *)sharedDBInfo; +- (void)saveCurrentDBInfoVersions; + @end diff --git a/lib/JFFCache/JFFCache/JFFDBInfo.m b/lib/JFFCache/JFFCache/JFFDBInfo.m index 6264561..fa3839e 100644 --- a/lib/JFFCache/JFFCache/JFFDBInfo.m +++ b/lib/JFFCache/JFFCache/JFFDBInfo.m @@ -1,6 +1,9 @@ #import "JFFDBInfo.h" -static JFFDBInfo* sharedInfo = nil; +#import "CacheDBInfo.h" +#import "CacheDBInfoStorage.h" + +static JFFDBInfo *sharedInfo = nil; @interface JFFDBInfo () @@ -10,8 +13,8 @@ @interface JFFDBInfo () @implementation JFFDBInfo { - NSDictionary *_currentDbInfo; - NSDictionary *_dbInfo; + NSDictionary *_currentDbVersionsByName; + CacheDBInfoStorage *_dbInfoByNames; } - (instancetype)initWithInfoPath:(NSString *)infoPath @@ -30,29 +33,30 @@ - (instancetype)initWithInfoDictionary:(NSDictionary *)infoDictionry self = [super init]; if (self) { - _currentDbInfo = infoDictionry; + _dbInfoByNames = [CacheDBInfoStorage newCacheDBInfoStorageWithPlistInfo:infoDictionry]; } return self; } -- (NSDictionary *)createDBInfo +- (CacheDBInfoStorage *)createDBInfo { - return _currentDbInfo?:[NSDictionary dictionaryWithContentsOfFile:_dbInfoPath]; + id info = [NSDictionary dictionaryWithContentsOfFile:_dbInfoPath]; + return [CacheDBInfoStorage newCacheDBInfoStorageWithPlistInfo:info]; } -- (NSDictionary *)dbInfo +- (CacheDBInfoStorage *)dbInfoByNames { - if (_dbInfo) - return _dbInfo; + if (_dbInfoByNames) + return _dbInfoByNames; @synchronized(self) { - if (_dbInfo) - return _dbInfo; + if (_dbInfoByNames) + return _dbInfoByNames; - _dbInfo = [self createDBInfo]; + _dbInfoByNames = [self createDBInfo]; } - return _dbInfo; + return _dbInfoByNames; } + (JFFDBInfo *)newDbInfo @@ -78,39 +82,48 @@ + (void)setSharedDBInfo:(JFFDBInfo *)dbInfo + (NSString *)currentDBInfoFilePath { - return [NSString documentsPathByAppendingPathComponent:@"JFFCurrentDBInfo.data"] ; + return [NSString documentsPathByAppendingPathComponent:@"JFFCurrentDBVersions.data"]; } -- (NSDictionary *)currentDbInfo +- (NSDictionary *)currentDbVersionsByName { - if (_currentDbInfo) - return _currentDbInfo; + if (_currentDbVersionsByName) + return _currentDbVersionsByName; @synchronized(self) { - if (_currentDbInfo) - return _currentDbInfo; + if (_currentDbVersionsByName) + return _currentDbVersionsByName; NSString *path = [[self class] currentDBInfoFilePath]; NSDictionary *currentDbInfo = [[NSDictionary alloc] initWithContentsOfFile:path]; - self.currentDbInfo = currentDbInfo?:@{}; + + if ([currentDbInfo count] > 0) + _currentDbVersionsByName = currentDbInfo; } - return _currentDbInfo; + return _currentDbVersionsByName; } -- (void)setCurrentDbInfo:(NSDictionary *)currentDbInfo +- (void)saveCurrentDBInfoVersions { - if (_currentDbInfo == currentDbInfo) - return; - @synchronized(self) { - if (_currentDbInfo == currentDbInfo) + + NSMutableDictionary *mutableCurrentVersions = [NSMutableDictionary new]; + + [self.dbInfoByNames enumerateKeysAndObjectsUsingBlock:^(NSString *key, CacheDBInfo *obj, BOOL *stop) { + + mutableCurrentVersions[key] = @(obj.version); + }]; + + NSDictionary *currentVersions = [mutableCurrentVersions copy]; + + if ([self.currentDbVersionsByName isEqual:currentVersions]) return; - _currentDbInfo = currentDbInfo?:@{}; + _currentDbVersionsByName = currentVersions; NSString *path = [[self class] currentDBInfoFilePath]; - [_currentDbInfo writeToFile:path atomically:YES]; + [currentVersions writeToFile:path atomically:YES]; [path addSkipBackupAttribute]; } } diff --git a/lib/JFFCache/JFFCache/JFFThumbnailStorage.m b/lib/JFFCache/JFFCache/JFFThumbnailStorage.m index 0943207..6e65e8f 100644 --- a/lib/JFFCache/JFFCache/JFFThumbnailStorage.m +++ b/lib/JFFCache/JFFCache/JFFThumbnailStorage.m @@ -1,7 +1,10 @@ #import "JFFThumbnailStorage.h" -#import "JFFCacheDB.h" #import "JFFCaches.h" +#import "JFFDBInfo.h" +#import "JFFCacheDB.h" +#import "CacheDBInfo.h" +#import "CacheDBInfoStorage.h" #import "JFFCacheNoURLError.h" #import "JFFCacheLoadImageError.h" @@ -187,7 +190,9 @@ + (void)setSharedStorage:(JFFThumbnailStorage *)storage + (NSTimeInterval)cacheDataLifeTimeInSeconds { - NSNumber *timeToLiveInHours = [[JFFCaches createThumbnailDB] timeToLiveInHours]; + CacheDBInfoStorage *dbInfoByNames = [[JFFDBInfo sharedDBInfo] dbInfoByNames]; + CacheDBInfo *info = [dbInfoByNames infoByDBName:[JFFCaches thumbnailDBName]]; + NSNumber *timeToLiveInHours = info.timeToLiveInHours; NSParameterAssert(timeToLiveInHours); return [timeToLiveInHours doubleValue]*3600.; } @@ -212,7 +217,7 @@ + (JFFAsyncOperation)onThreadLoadUrl:(NSURL *)url - (JFFAsyncOperation)cachedInDBImageDataLoaderForUrl:(NSURL *)url ignoreFreshDataLoadFail:(BOOL)ignoreFreshDataLoadFail { - JFFSmartUrlDataLoaderFields *args = [JFFSmartUrlDataLoaderFields new]; + JFFSmartDataLoaderFields *args = [JFFSmartDataLoaderFields new]; args.loadDataIdentifier = url; args.cacheDataLifeTimeInSeconds = [[self class] cacheDataLifeTimeInSeconds]; args.doesNotIgnoreFreshDataLoadFail = ignoreFreshDataLoadFail; diff --git a/lib/JFFContacts/JFFContacts.xcodeproj/project.pbxproj b/lib/JFFContacts/JFFContacts.xcodeproj/project.pbxproj index c94a653..b55ebfc 100644 --- a/lib/JFFContacts/JFFContacts.xcodeproj/project.pbxproj +++ b/lib/JFFContacts/JFFContacts.xcodeproj/project.pbxproj @@ -274,7 +274,7 @@ CE29B7FF15F60083000A05B8 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastUpgradeCheck = 0510; ORGANIZATIONNAME = EmbeddedSources; }; buildConfigurationList = CE29B80215F60083000A05B8 /* Build configuration list for PBXProject "JFFContacts" */; @@ -397,8 +397,9 @@ ../, ., ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -427,7 +428,7 @@ ../, ., ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -440,7 +441,6 @@ DSTROOT = /tmp/JFFContacts.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFContacts/JFFContacts-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -453,7 +453,6 @@ DSTROOT = /tmp/JFFContacts.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFContacts/JFFContacts-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/lib/JFFContacts/JFFContacts/JFFAddressBookFactory.mm b/lib/JFFContacts/JFFContacts/JFFAddressBookFactory.mm index e600693..bcf0db9 100755 --- a/lib/JFFContacts/JFFContacts/JFFAddressBookFactory.mm +++ b/lib/JFFContacts/JFFContacts/JFFAddressBookFactory.mm @@ -35,6 +35,7 @@ + (void)asyncAddressBookWithOnCreatedBlock:(JFFAddressBookOnCreated)callback return; } + CFRetain(result); JFFAddressBook *bookWrapper = [[JFFAddressBook alloc] initWithRawBook:result]; if (authorizationStatus != kABAuthorizationStatusNotDetermined) { @@ -58,6 +59,7 @@ + (void)asyncAddressBookWithOnCreatedBlock:(JFFAddressBookOnCreated)callback }; ABAddressBookRequestAccessWithCompletion(result, onAddressBookAccess); + CFRelease(result); } + (NSString *)bookStatusToString:(ABAuthorizationStatus)status diff --git a/lib/JFFCoreLocation/JFFCoreLocation.xcodeproj/project.pbxproj b/lib/JFFCoreLocation/JFFCoreLocation.xcodeproj/project.pbxproj index 498be67..913ec5f 100644 --- a/lib/JFFCoreLocation/JFFCoreLocation.xcodeproj/project.pbxproj +++ b/lib/JFFCoreLocation/JFFCoreLocation.xcodeproj/project.pbxproj @@ -251,7 +251,8 @@ CE206DE716414CC2002476FD /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastTestingUpgradeCheck = 0510; + LastUpgradeCheck = 0510; ORGANIZATIONNAME = EmbeddedSources; }; buildConfigurationList = CE206DEA16414CC2002476FD /* Build configuration list for PBXProject "JFFCoreLocation" */; @@ -371,8 +372,9 @@ ../, ., ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -396,7 +398,7 @@ ../, ., ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -409,7 +411,6 @@ DSTROOT = /tmp/JFFCoreLocation.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFCoreLocation/JFFCoreLocation-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -422,7 +423,6 @@ DSTROOT = /tmp/JFFCoreLocation.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFCoreLocation/JFFCoreLocation-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/lib/JFFJsonTools/JFFJsonTools.xcodeproj/project.pbxproj b/lib/JFFJsonTools/JFFJsonTools.xcodeproj/project.pbxproj index 7f9a6d2..d275e80 100644 --- a/lib/JFFJsonTools/JFFJsonTools.xcodeproj/project.pbxproj +++ b/lib/JFFJsonTools/JFFJsonTools.xcodeproj/project.pbxproj @@ -101,6 +101,13 @@ remoteGlobalIDString = 1BE0542A154826DA00270B58; remoteInfo = JFFTestTools; }; + 4C3C5BC018674D68000B235A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CE532C7016036D9A0029920A /* JFFAsyncOperations.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4C1A0F8D182577BE0020FBF6; + remoteInfo = JFFAsyncOperationsMacOS; + }; CE532C5416036D3E0029920A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CE532C4A16036D3E0029920A /* JFFScheduler.xcodeproj */; @@ -355,6 +362,7 @@ CE532C7E16036D9A0029920A /* libJFFAsyncOperations.a */, CE532C8016036D9A0029920A /* libJFFAsyncOperations-clang.a */, CE532C8216036D9A0029920A /* JFFAsyncOperationsFW.framework */, + 4C3C5BC118674D68000B235A /* libJFFAsyncOperationsMacOS.a */, ); name = Products; sourceTree = ""; @@ -432,7 +440,7 @@ CE532C0016036CE40029920A /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastUpgradeCheck = 0510; ORGANIZATIONNAME = EmbeddedSources; TargetAttributes = { 4C043A75181EA60D00246A88 = { @@ -519,6 +527,13 @@ remoteRef = 4C043AA9181EAB1E00246A88 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C3C5BC118674D68000B235A /* libJFFAsyncOperationsMacOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libJFFAsyncOperationsMacOS.a; + remoteRef = 4C3C5BC018674D68000B235A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; CE532C5516036D3E0029920A /* libJFFScheduler.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -709,7 +724,6 @@ "$(inherited)", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = ""; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; @@ -719,8 +733,9 @@ ../, ., ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; + ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; }; @@ -740,7 +755,6 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; COPY_PHASE_STRIP = YES; - GCC_VERSION = ""; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; @@ -750,7 +764,7 @@ ../, ., ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; @@ -764,7 +778,6 @@ DSTROOT = /tmp/JFFJsonTools.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFJsonTools/JFFJsonTools-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; }; @@ -776,7 +789,6 @@ DSTROOT = /tmp/JFFJsonTools.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFJsonTools/JFFJsonTools-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; }; diff --git a/lib/JFFJsonTools/JFFJsonTools/Details/NSObject+JFFJsonObjectValidator.m b/lib/JFFJsonTools/JFFJsonTools/Details/NSObject+JFFJsonObjectValidator.m index 7c1bbce..1b6b431 100644 --- a/lib/JFFJsonTools/JFFJsonTools/Details/NSObject+JFFJsonObjectValidator.m +++ b/lib/JFFJsonTools/JFFJsonTools/Details/NSObject+JFFJsonObjectValidator.m @@ -47,7 +47,9 @@ - (BOOL)validateWithJsonPatternClass:(id)jsonPattern SEL selector = isClass(self)?@selector(isSubclassOfClass:):@selector(isKindOfClass:); - if (!objc_msgSend(self, selector, checkClass)) { + typedef BOOL (*AlignMsgSendFunction)(id, SEL, id); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSend; + if (!alignFunction(self, selector, checkClass)) { if (outError) { JFFJsonValidationError *error = [JFFJsonValidationError new]; error.jsonObject = rootJsonObject ; diff --git a/lib/JFFNetwork/ContentEncodings/JNGzipErrorsLogger.m b/lib/JFFNetwork/ContentEncodings/JNGzipErrorsLogger.m index ba87278..8d7b3f5 100755 --- a/lib/JFFNetwork/ContentEncodings/JNGzipErrorsLogger.m +++ b/lib/JFFNetwork/ContentEncodings/JNGzipErrorsLogger.m @@ -17,7 +17,7 @@ + (NSString *)zipErrorMessageFromCode:(int)errorCode NSUInteger errorIndex = errorCode + abs(Z_VERSION_ERROR); NSUInteger maxErrorIndex = Z_ERRNO + abs(Z_VERSION_ERROR); - if (errorIndex > maxErrorIndex) { + if (errorIndex > maxErrorIndex || errorIndex < 0) { return @"Z_UnknownError"; } diff --git a/lib/JFFNetwork/CookiesStorage/JFFLocalCookiesStorage.h b/lib/JFFNetwork/CookiesStorage/JFFLocalCookiesStorage.h index 3be947b..44cd72a 100644 --- a/lib/JFFNetwork/CookiesStorage/JFFLocalCookiesStorage.h +++ b/lib/JFFNetwork/CookiesStorage/JFFLocalCookiesStorage.h @@ -2,6 +2,8 @@ @interface JFFLocalCookiesStorage : NSObject +- (void)setMultipleCookies:(NSArray *)cookies; + - (void)setCookie:(NSHTTPCookie *)cookie; - (NSArray *)cookiesForURL:(NSURL *)url; diff --git a/lib/JFFNetwork/Errors/JHttpError.h b/lib/JFFNetwork/Errors/JHttpError.h index 4d7bf7f..b3b3e11 100644 --- a/lib/JFFNetwork/Errors/JHttpError.h +++ b/lib/JFFNetwork/Errors/JHttpError.h @@ -11,5 +11,6 @@ - (BOOL)isHttpNotChangedError; - (BOOL)isServiceUnavailableError; - (BOOL)isInternalServerError; +- (BOOL)isNotFoundError; @end diff --git a/lib/JFFNetwork/Errors/JHttpError.m b/lib/JFFNetwork/Errors/JHttpError.m index 890b8e7..6a6ebfc 100644 --- a/lib/JFFNetwork/Errors/JHttpError.m +++ b/lib/JFFNetwork/Errors/JHttpError.m @@ -65,4 +65,9 @@ - (BOOL)isInternalServerError return (self.code == 500); } +- (BOOL)isNotFoundError +{ + return (self.code == 404); +} + @end diff --git a/lib/JFFNetwork/JFFNetwork.xcodeproj/project.pbxproj b/lib/JFFNetwork/JFFNetwork.xcodeproj/project.pbxproj index 644cdce..c784a72 100644 --- a/lib/JFFNetwork/JFFNetwork.xcodeproj/project.pbxproj +++ b/lib/JFFNetwork/JFFNetwork.xcodeproj/project.pbxproj @@ -1030,7 +1030,7 @@ 8D5AE6D213F3E6C500EB6143 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastUpgradeCheck = 0510; }; buildConfigurationList = 8D5AE6D513F3E6C500EB6143 /* Build configuration list for PBXProject "JFFNetwork" */; compatibilityVersion = "Xcode 3.2"; diff --git a/lib/JFFNetwork/JFFNetworkBlocksFunctions.m b/lib/JFFNetwork/JFFNetworkBlocksFunctions.m index 32e6c37..7c6c19d 100644 --- a/lib/JFFNetwork/JFFNetworkBlocksFunctions.m +++ b/lib/JFFNetwork/JFFNetworkBlocksFunctions.m @@ -106,7 +106,7 @@ static JFFAsyncOperation privateGenericDataURLResponseLoader(JFFURLConnectionPar doneCallbackWrapper = ^void(id result, NSError *error) { if ([responseData length] == 0 && !error) { - NSLog(@"!!!WARNING!!! request with params: %@ got an empty reponse", params); + NSLog(@"!!!WARNING!!! request with params: %@ got an empty response", params); } /*if ([skipPt all:^BOOL(id object) { return ![[params.url description] containsString:object]; diff --git a/lib/JFFNetwork/JFFURLConnection.m b/lib/JFFNetwork/JFFURLConnection.m index 65e897c..39f4053 100644 --- a/lib/JFFNetwork/JFFURLConnection.m +++ b/lib/JFFNetwork/JFFURLConnection.m @@ -79,7 +79,7 @@ static void readStreamCallback(CFReadStreamRef stream, { [connectionContext.connection handleResponseForReadStream:stream]; - UInt8 buffer[kJNMaxBufferSize]; + UInt8 buffer[kJNMaxBufferSize] = {0}; CFIndex bytesRead = CFReadStreamRead(stream, buffer, kJNMaxBufferSize); if (bytesRead > 0) { @@ -97,14 +97,23 @@ static void readStreamCallback(CFReadStreamRef stream, [connectionContext.connection handleResponseForReadStream:stream]; CFStreamError error = CFReadStreamGetError(stream); - - JFFError *wrappedError = [[JStreamError alloc] initWithStreamError:error context:connectionContext.params]; + + + + + JStreamError *wrappedError = [[JStreamError alloc] initWithStreamError:error + context:connectionContext.params]; + + // @adk : wrap into dispatch_barrier_async() if crashes [connectionContext.connection handleFinish:wrappedError]; + break; } case kCFStreamEventEndEncountered: { [connectionContext.connection handleResponseForReadStream:stream]; + + // @adk : wrap into dispatch_barrier_async() if crashes [connectionContext.connection handleFinish:nil]; break; } @@ -116,14 +125,13 @@ @implementation JFFURLConnection CFReadStreamRef _readStream; id _cookiesStorage; BOOL _responseHandled; + JFFURLResponse *_urlResponse; - // NSString* _previousContentEncoding; unsigned long long _downloadedBytesCount; unsigned long long _totalBytesCount; dispatch_queue_t _queueForCallbacks; - __strong id _selfHolder; }; @@ -183,6 +191,8 @@ - (void)applyCookiesForHTTPRequest:(CFHTTPMessageRef)httpRequest - (void)startConnectionWithPostData:(NSData *)data headers:(NSDictionary *)headers { + // TODO : use "dependency injection" based design + // pass "queueForCallbacks" to the constructor NSParameterAssert([[NSThread currentThread] isMainThread]); _queueForCallbacks = dispatch_get_main_queue(); @@ -214,9 +224,9 @@ - (void)startConnectionWithPostData:(NSData *)data }]; [self closeReadStream]; - // CFReadStreamCreateForStreamedHTTPRequest( CFAllocatorRef alloc, - // CFHTTPMessageRef requestHeaders, - // CFReadStreamRef requestBody ) + + + _readStream = CFReadStreamCreateForHTTPRequest(NULL, httpRequest); CFRelease(httpRequest); @@ -248,7 +258,6 @@ - (void)startConnectionWithPostData:(NSData *)data Boolean openResult = CFReadStreamOpen(_readStream); if (!openResult) { - NSLog(@"Error opening a socket"); } } @@ -274,6 +283,8 @@ - (void)closeReadStream CFReadStreamUnscheduleFromRunLoop(_readStream, streamRunLoop, kCFRunLoopCommonModes); + + // @adk : wrap into @synchronized if crashes. Double check NULL. CFReadStreamClose(_readStream); CFRelease(_readStream); _readStream = nil; @@ -365,11 +376,14 @@ - (void)handleFinish:(NSError *)error __weak JFFURLConnection *weakSelf = self; dispatch_queue_t queueForCallbacks = _queueForCallbacks; - + +// wait until all unzip operations are completed dispatch_barrier_async(_zipQueue, ^void(void) { +// and notify callbacks on a proper queue dispatch_sync(queueForCallbacks, ^void(void) { +// @adk : maybe dispatch_async() is a better fit? JFFDidFinishLoadingHandler didFinishLoadingBlock = weakSelf.didFinishLoadingBlock; [weakSelf cancel]; @@ -397,18 +411,19 @@ - (void)handleResponseForReadStream:(CFReadStreamRef)stream return; } - NSDictionary* allHeadersDict; - CFIndex statusCode; + NSDictionary *allHeadersDict; + CFIndex statusCode = 0; { CFHTTPMessageRef response = (CFHTTPMessageRef)CFReadStreamCopyProperty(stream, kCFStreamPropertyHTTPResponseHeader); - if (!response) + if (NULL == response) return; allHeadersDict = (__bridge_transfer NSDictionary *)CFHTTPMessageCopyAllHeaderFields(response); statusCode = CFHTTPMessageGetResponseStatusCode(response); + NSParameterAssert(NULL != response); CFRelease(response); } @@ -422,7 +437,6 @@ - (void)handleResponseForReadStream:(CFReadStreamRef)stream #ifdef USE_DD_URL_BUILDER if (![ NSUrlLocationValidator isValidLocation:location]) { - NSLog(@"[!!!WARNING!!!] JConnection : path for URL is invalid. Ignoring..."); location = @"/"; } @@ -438,16 +452,14 @@ - (void)handleResponseForReadStream:(CFReadStreamRef)stream _context.params.httpBody = nil; #else if ([location hasPrefix:@"/"]) { - _context.params.url = [_context.params.url URLWithLocation:location]; } else { - _context.params.url = [location toURL]; } if (!_context.params.url) { _context.params.url = [_context.params.url URLWithLocation:@"/"]; - } + } _context.params.httpMethod = @"GET"; _context.params.httpBody = nil; @@ -457,11 +469,8 @@ - (void)handleResponseForReadStream:(CFReadStreamRef)stream NSDebugLog(@"Done."); [self start];//TODO start it later - } - else - { + } else { _responseHandled = YES; - JFFDidReceiveResponseHandler didReceiveResponseBlock = self.didReceiveResponseBlock; self.didReceiveResponseBlock = nil; diff --git a/lib/JFFNetwork/JHttpFlagChecker.mm b/lib/JFFNetwork/JHttpFlagChecker.mm index 76a0cfa..2f6dfe1 100644 --- a/lib/JFFNetwork/JHttpFlagChecker.mm +++ b/lib/JFFNetwork/JHttpFlagChecker.mm @@ -4,19 +4,19 @@ @implementation JHttpFlagChecker -+ (BOOL)isDownloadErrorFlag:( CFIndex )statusCode ++ (BOOL)isDownloadErrorFlag:(CFIndex)statusCode { BOOL result = ![self isSuccessFlag :statusCode] && ![self isRedirectFlag:statusCode]; - + return result; } + (BOOL)isRedirectFlag:(CFIndex)statusCode { - std::set redirectFlags; - { + static std::set redirectFlags; + if (redirectFlags.size() == 0) { redirectFlags.insert(301); redirectFlags.insert(302); redirectFlags.insert(303); @@ -24,8 +24,8 @@ + (BOOL)isRedirectFlag:(CFIndex)statusCode }; auto iFlag = redirectFlags.find(statusCode); - BOOL result_ = (redirectFlags.end() != iFlag); - return result_; + BOOL result = (redirectFlags.end() != iFlag); + return result; } + (BOOL)isSuccessFlag:(CFIndex)statusCode diff --git a/lib/JFFNetwork/JNNsUrlConnection.m b/lib/JFFNetwork/JNNsUrlConnection.m index 79da17d..85bcd7e 100644 --- a/lib/JFFNetwork/JNNsUrlConnection.m +++ b/lib/JFFNetwork/JNNsUrlConnection.m @@ -68,9 +68,9 @@ - (void)processLocalFileWithPath:(NSString *)path NSError *error; //STODO read file in separate thread //STODO read big files by chunks - NSData *data_ = [[NSData alloc]initWithContentsOfFile:path - options:0 - error:&error]; + NSData *data = [[NSData alloc]initWithContentsOfFile:path + options:0 + error:&error]; if (error) { [self connection:_nativeConnection @@ -85,7 +85,7 @@ - (void)processLocalFileWithPath:(NSString *)path didReceiveResponse:response]; [self connection:_nativeConnection - didReceiveData:data_]; + didReceiveData:data]; [self connectionDidFinishLoading:_nativeConnection]; } @@ -97,9 +97,9 @@ - (void)processLocalFileWithPath:(NSString *)path - (void)start { #ifdef NSURLConnectionDoesNotWorkWithLocalFiles - if ( [ _params.url isFileURL ] ) { - NSString* path_ = [ _params.url path ]; - [ self processLocalFileWithPath: path_ ]; + if ([_params.url isFileURL]) { + NSString *path = [_params.url path]; + [self processLocalFileWithPath:path]; return; } #endif @@ -123,7 +123,7 @@ - (void)clearCallbacks if (_connectRunLoop) { [_nativeConnection unscheduleFromRunLoop:_connectRunLoop - forMode:NSDefaultRunLoopMode]; + forMode:NSDefaultRunLoopMode]; } } @@ -260,19 +260,4 @@ - (void)connection:(NSURLConnection *)connection self.didUploadDataBlock(progress); } -- (void)connection:(NSURLConnection *)connection -willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge -{ - if ([challenge previousFailureCount] == 0) { - NSURLCredential *newCredential = [NSURLCredential credentialWithUser:@"malygin" - password:@"sdftgb32" - persistence:NSURLCredentialPersistencePermanent]; - [challenge.sender useCredential:newCredential forAuthenticationChallenge:challenge]; - } else { - [challenge.sender cancelAuthenticationChallenge:challenge]; -// self.errorLabel.text = @"Invalid Username and/or Password"; -// self.imageView.image = [UIImage imageWithData:[[NSData alloc] init]]; - } -} - @end diff --git a/lib/JFFRestKit/JFFRestKit.xcodeproj/project.pbxproj b/lib/JFFRestKit/JFFRestKit.xcodeproj/project.pbxproj index 8fc3052..de7d071 100644 --- a/lib/JFFRestKit/JFFRestKit.xcodeproj/project.pbxproj +++ b/lib/JFFRestKit/JFFRestKit.xcodeproj/project.pbxproj @@ -15,8 +15,8 @@ 4C043A4F181E9D8300246A88 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C043A4E181E9D8300246A88 /* UIKit.framework */; }; 4C043A55181E9D8300246A88 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4C043A53181E9D8300246A88 /* InfoPlist.strings */; }; 4C043A57181E9D8300246A88 /* JFFRestKitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C043A56181E9D8300246A88 /* JFFRestKitTests.m */; }; - 65A0BD6A15301D890007A3B5 /* JFFSmartUrlDataLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 65A0BD6815301D890007A3B5 /* JFFSmartUrlDataLoader.h */; }; - 65A0BD6B15301D890007A3B5 /* JFFSmartUrlDataLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 65A0BD6915301D890007A3B5 /* JFFSmartUrlDataLoader.m */; }; + 65A0BD6A15301D890007A3B5 /* JFFSmartDataLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 65A0BD6815301D890007A3B5 /* JFFSmartDataLoader.h */; }; + 65A0BD6B15301D890007A3B5 /* JFFSmartDataLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 65A0BD6915301D890007A3B5 /* JFFSmartDataLoader.m */; }; 65E307BC1531E9B200E0B781 /* JFFRestKitError.h in Headers */ = {isa = PBXBuildFile; fileRef = 65E307BA1531E9B200E0B781 /* JFFRestKitError.h */; }; 65E307BD1531E9B200E0B781 /* JFFRestKitError.m in Sources */ = {isa = PBXBuildFile; fileRef = 65E307BB1531E9B200E0B781 /* JFFRestKitError.m */; }; CE19F62716AED02D005B15B4 /* JFFCacheAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = CE19F62516AED02D005B15B4 /* JFFCacheAdapter.h */; }; @@ -49,8 +49,8 @@ 4C043A54181E9D8300246A88 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 4C043A56181E9D8300246A88 /* JFFRestKitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = JFFRestKitTests.m; sourceTree = ""; }; 4C043A58181E9D8300246A88 /* JFFRestKitTests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "JFFRestKitTests-Prefix.pch"; sourceTree = ""; }; - 65A0BD6815301D890007A3B5 /* JFFSmartUrlDataLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFSmartUrlDataLoader.h; sourceTree = ""; }; - 65A0BD6915301D890007A3B5 /* JFFSmartUrlDataLoader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFSmartUrlDataLoader.m; sourceTree = ""; }; + 65A0BD6815301D890007A3B5 /* JFFSmartDataLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFSmartDataLoader.h; sourceTree = ""; }; + 65A0BD6915301D890007A3B5 /* JFFSmartDataLoader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFSmartDataLoader.m; sourceTree = ""; }; 65E307BA1531E9B200E0B781 /* JFFRestKitError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JFFRestKitError.h; sourceTree = ""; }; 65E307BB1531E9B200E0B781 /* JFFRestKitError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = JFFRestKitError.m; sourceTree = ""; }; 65E307BE1531EC3B00E0B781 /* JFFRestKitCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JFFRestKitCache.h; sourceTree = ""; }; @@ -119,8 +119,8 @@ 65E307BE1531EC3B00E0B781 /* JFFRestKitCache.h */, 65E307BA1531E9B200E0B781 /* JFFRestKitError.h */, 65E307BB1531E9B200E0B781 /* JFFRestKitError.m */, - 65A0BD6815301D890007A3B5 /* JFFSmartUrlDataLoader.h */, - 65A0BD6915301D890007A3B5 /* JFFSmartUrlDataLoader.m */, + 65A0BD6815301D890007A3B5 /* JFFSmartDataLoader.h */, + 65A0BD6915301D890007A3B5 /* JFFSmartDataLoader.m */, 1B32850C153FFDD000BE99CC /* JFFDataLoadersTools.h */, 1B32850D153FFDD000BE99CC /* JFFDataLoadersTools.m */, 1B7ABA89152D973A005DD4CA /* JFFRestKit.h */, @@ -181,7 +181,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 65A0BD6A15301D890007A3B5 /* JFFSmartUrlDataLoader.h in Headers */, + 65A0BD6A15301D890007A3B5 /* JFFSmartDataLoader.h in Headers */, 65E307BC1531E9B200E0B781 /* JFFRestKitError.h in Headers */, 1B32850E153FFDD000BE99CC /* JFFDataLoadersTools.h in Headers */, CE19F62716AED02D005B15B4 /* JFFCacheAdapter.h in Headers */, @@ -233,7 +233,7 @@ 1B7ABA78152D9739005DD4CA /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastUpgradeCheck = 0510; TargetAttributes = { 4C043A49181E9D8200246A88 = { TestTargetID = 1B7ABA80152D973A005DD4CA; @@ -274,7 +274,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 65A0BD6B15301D890007A3B5 /* JFFSmartUrlDataLoader.m in Sources */, + 65A0BD6B15301D890007A3B5 /* JFFSmartDataLoader.m in Sources */, 65E307BD1531E9B200E0B781 /* JFFRestKitError.m in Sources */, 1B32850F153FFDD000BE99CC /* JFFDataLoadersTools.m in Sources */, CE19F62816AED02D005B15B4 /* JFFCacheAdapter.m in Sources */, @@ -340,8 +340,9 @@ ../TouchXmlHelper, ../JFFCache, ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -367,7 +368,7 @@ ../TouchXmlHelper, ../JFFCache, ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -380,7 +381,6 @@ DSTROOT = /tmp/JFFRestKit.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFRestKit/JFFRestKit-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -393,7 +393,6 @@ DSTROOT = /tmp/JFFRestKit.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFRestKit/JFFRestKit-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -403,7 +402,6 @@ 4C043A5B181E9D8300246A88 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_WARN_BOOL_CONVERSION = YES; @@ -440,7 +438,6 @@ 4C043A5C181E9D8300246A88 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_WARN_BOOL_CONVERSION = YES; diff --git a/lib/JFFRestKit/JFFRestKit/JFFRestKit.h b/lib/JFFRestKit/JFFRestKit/JFFRestKit.h index 3031d14..bc27bb5 100755 --- a/lib/JFFRestKit/JFFRestKit/JFFRestKit.h +++ b/lib/JFFRestKit/JFFRestKit/JFFRestKit.h @@ -1,7 +1,7 @@ -#import -#import #import #import +#import +#import #import diff --git a/lib/JFFScheduler/Async/JFFAsyncOperationHelpers.m b/lib/JFFScheduler/Async/JFFAsyncOperationHelpers.m index da81c68..fc8b86b 100644 --- a/lib/JFFScheduler/Async/JFFAsyncOperationHelpers.m +++ b/lib/JFFScheduler/Async/JFFAsyncOperationHelpers.m @@ -57,7 +57,7 @@ - (void)doTask:(JFFAsyncOperationHandlerTask)task { switch (task) { - case JFFAsyncOperationHandlerTaskUnsubscribe: + case JFFAsyncOperationHandlerTaskUnSubscribe: case JFFAsyncOperationHandlerTaskCancel: case JFFAsyncOperationHandlerTaskSuspend: { @@ -140,7 +140,7 @@ JFFAsyncOperation repeatAsyncOperationWithDelayLoader(JFFAsyncOperation nativeLo __block JFFAsyncOperationProgressCallback progressCallbackHolder = [progressCallback copy]; __block JFFAsyncOperationChangeStateCallback stateCallbackHolder = [stateCallback copy]; - __block JFFDidFinishAsyncOperationCallback doneCallbackkHolder = [doneCallback copy]; + __block JFFDidFinishAsyncOperationCallback doneCallbackHolder = [doneCallback copy]; JFFAsyncOperationProgressCallback progressCallbackWrapper = ^(id progressInfo) { @@ -154,26 +154,35 @@ JFFAsyncOperation repeatAsyncOperationWithDelayLoader(JFFAsyncOperation nativeLo }; JFFDidFinishAsyncOperationCallback doneCallbackkWrapper = ^(id result, NSError *error) { - if (doneCallbackkHolder) { - doneCallbackkHolder(result, error); - doneCallbackkHolder = nil; + if (doneCallbackHolder) { + doneCallbackHolder(result, error); + doneCallbackHolder = nil; } }; __block NSInteger currentLeftCount = maxRepeatCount; + void (^clearCallbacks)(void) = ^() { + progressCallbackHolder = nil; + stateCallbackHolder = nil; + doneCallbackHolder = nil; + }; + JFFDidFinishAsyncOperationHook finishCallbackHook = ^(id result, NSError *error, JFFDidFinishAsyncOperationCallback doneCallback) { - if ([error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]]) { + void (^finish)(void) = ^() { finishHookHolder = nil; - doneCallbackkWrapper(nil, error); + doneCallbackkWrapper(result, error); - progressCallbackHolder = nil; - stateCallbackHolder = nil; - doneCallbackkHolder = nil; + clearCallbacks(); + }; + + if ([error isKindOfClass:[JFFAsyncOpFinishedByCancellationError class]]) { + + finish(); return; } @@ -181,13 +190,7 @@ JFFAsyncOperation repeatAsyncOperationWithDelayLoader(JFFAsyncOperation nativeLo if (!newLoader || currentLeftCount == 0) { - finishHookHolder = nil; - doneCallbackkWrapper(result, error); - - progressCallbackHolder = nil; - stateCallbackHolder = nil; - doneCallbackkHolder = nil; - + finish(); } else { currentLeftCount = currentLeftCount > 0 @@ -215,17 +218,15 @@ JFFAsyncOperation repeatAsyncOperationWithDelayLoader(JFFAsyncOperation nativeLo if (!currentLoaderHandlerHolder) return; - if (task != JFFAsyncOperationHandlerTaskUnsubscribe) + if (task != JFFAsyncOperationHandlerTaskUnSubscribe) currentLoaderHandlerHolder(task); if (task == JFFAsyncOperationHandlerTaskCancel) currentLoaderHandlerHolder = nil; - if (task == JFFAsyncOperationHandlerTaskUnsubscribe) { + if (task == JFFAsyncOperationHandlerTaskUnSubscribe) { - progressCallbackHolder = nil; - stateCallbackHolder = nil; - doneCallbackkHolder = nil; + clearCallbacks(); } }; }; diff --git a/lib/JFFScheduler/NSObject+Timer.m b/lib/JFFScheduler/NSObject+Timer.m index e352b25..df3be8d 100644 --- a/lib/JFFScheduler/NSObject+Timer.m +++ b/lib/JFFScheduler/NSObject+Timer.m @@ -33,9 +33,17 @@ - (void)performSelector:(SEL)selector cancel(); } - numOfArgs == 1 - ?objc_msgSend(unretainedSelf, selector, userInfo) - :objc_msgSend(unretainedSelf, selector); + if (numOfArgs == 1) { + + typedef void (*AlignMsgSendFunction)(id, SEL, id); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSend; + alignFunction(unretainedSelf, selector, userInfo); + } else { + + typedef void (*AlignMsgSendFunction)(id, SEL); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSend; + alignFunction(unretainedSelf, selector); + } }; JFFCancelScheduledBlock cancel = [timer addBlock:block diff --git a/lib/JFFSocial/JFFSocial.xcodeproj/project.pbxproj b/lib/JFFSocial/JFFSocial.xcodeproj/project.pbxproj index a1e714e..f075d6e 100644 --- a/lib/JFFSocial/JFFSocial.xcodeproj/project.pbxproj +++ b/lib/JFFSocial/JFFSocial.xcodeproj/project.pbxproj @@ -76,6 +76,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 4C3C5BDC18674DE8000B235A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CE4F602415F8B56300271035 /* JFFAsyncOperations.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4C1A0F8D182577BE0020FBF6; + remoteInfo = JFFAsyncOperationsMacOS; + }; CE4F602A15F8B56300271035 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CE4F602415F8B56300271035 /* JFFAsyncOperations.xcodeproj */; @@ -615,6 +622,7 @@ CE4F602B15F8B56300271035 /* libJFFAsyncOperations.a */, CE4F602D15F8B56300271035 /* libJFFAsyncOperations-clang.a */, CE4F602F15F8B56300271035 /* JFFAsyncOperationsFW.framework */, + 4C3C5BDD18674DE8000B235A /* libJFFAsyncOperationsMacOS.a */, ); name = Products; sourceTree = ""; @@ -790,7 +798,7 @@ CE4F5FFF15F8B2BB00271035 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastUpgradeCheck = 0510; ORGANIZATIONNAME = EmbeddedSources; }; buildConfigurationList = CE4F600215F8B2BB00271035 /* Build configuration list for PBXProject "JFFSocial" */; @@ -826,6 +834,13 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + 4C3C5BDD18674DE8000B235A /* libJFFAsyncOperationsMacOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libJFFAsyncOperationsMacOS.a; + remoteRef = 4C3C5BDC18674DE8000B235A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; CE4F602B15F8B56300271035 /* libJFFAsyncOperations.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1007,7 +1022,6 @@ "$(inherited)", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_VERSION = ""; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; @@ -1019,8 +1033,9 @@ ../JFFJsonTools, ../JFFRestKit, ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -1039,7 +1054,6 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_X86_VECTOR_INSTRUCTIONS = avx2; COPY_PHASE_STRIP = YES; - GCC_VERSION = ""; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES; @@ -1051,7 +1065,7 @@ ../JFFJsonTools, ../JFFRestKit, ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -1068,7 +1082,6 @@ ); GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFSocial/JFFSocial-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -1085,7 +1098,6 @@ ); GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFSocial/JFFSocial-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogin.m b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogin.m index b299080..e050a97 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogin.m +++ b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogin.m @@ -17,18 +17,23 @@ @implementation JFFAsyncFacebookLogin #pragma mark - JFFAsyncOperationInterface +- (BOOL)isValidSession:(FBSession *)session +{ + return session.isOpen && session.accessTokenData.accessToken; +} + - (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)finishCallback handlerCallback:(JFFAsyncOperationChangeStateCallback)handlerCallback progressCallback:(JFFAsyncOperationProgressCallback)progressCallback { finishCallback = [finishCallback copy]; - NSMutableSet *requstPermissions = [[NSMutableSet alloc] initWithArray:_permissions]; + NSMutableSet *requestPermissions = [[NSMutableSet alloc] initWithArray:_permissions]; NSSet *currPermissions = [[NSSet alloc] initWithArray:_facebookSession.permissions]; - if (_facebookSession.isOpen) { + if ([self isValidSession:_facebookSession]) { - BOOL hasAllPermissions = [requstPermissions isSubsetOfSet:currPermissions]; + BOOL hasAllPermissions = [requestPermissions isSubsetOfSet:currPermissions]; if (hasAllPermissions) { @@ -40,26 +45,18 @@ - (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)fin } } - [requstPermissions unionSet:currPermissions]; + [requestPermissions unionSet:currPermissions]; //exclude publich pemissions { static NSSet *publishPermissions; - // "share_item", - // "photo_upload", - // "video_upload", - // "installed", - // "status_update", - // "email", - // "user_birthday", - // "create_note", if (!publishPermissions) { - publishPermissions = [[NSSet alloc] initWithArray:@[@"publish_actions", @"publish_stream"]]; + publishPermissions = [[NSSet alloc] initWithArray:@[@"publish_actions", @"publish_stream", @"publish_checkins"]]; } - [requstPermissions minusSet:publishPermissions]; + [requestPermissions minusSet:publishPermissions]; } __block BOOL finished = NO; @@ -77,7 +74,7 @@ - (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)fin [weakSelf handleLoginWithSession:session error:libError status:status finishCallback:finishCallback]; }; - [FBSession openActiveSessionWithReadPermissions:[requstPermissions allObjects] + [FBSession openActiveSessionWithReadPermissions:[requestPermissions allObjects] allowLoginUI:YES completionHandler:fbHandler]; } @@ -92,7 +89,10 @@ - (void)handleLoginWithSession:(FBSession *)session status:(FBSessionState)status finishCallback:(JFFDidFinishAsyncOperationCallback)finishCallback { - if (!error && (!session.isOpen || !session.accessTokenData.accessToken)) { + if (status == FBSessionStateCreatedOpening) + return; + + if (!error && ![self isValidSession:session]) { error = [JFFFacebookAuthorizeError new]; } @@ -105,7 +105,7 @@ - (void)handleLoginWithSession:(FBSession *)session JFFAsyncOperation jffFacebookLogin(FBSession *facebook, NSArray *permissions) { - JFFAsyncOperationInstanceBuilder factory = ^id< JFFAsyncOperationInterface >() { + JFFAsyncOperationInstanceBuilder factory = ^id() { JFFAsyncFacebookLogin *object = [JFFAsyncFacebookLogin new]; diff --git a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLoginWithPublishPermissions.m b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLoginWithPublishPermissions.m index da52f0e..4df1db5 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLoginWithPublishPermissions.m +++ b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLoginWithPublishPermissions.m @@ -98,7 +98,7 @@ JFFAsyncOperation jffFacebookLoginWithPublishPermissions(FBSession *facebook, NS NSDictionary *mergeParams = @{ - @"method" : @"jffFacebookLoginWithPublishPermissions", + @"method" : @(__FUNCTION__), @"permissions" : [[NSSet alloc] initWithArray:permissions], @"class" : NSStringFromClass([JFFAsyncFacebookLoginWithPublishPermissions class]) }; diff --git a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogout.m b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogout.m index c505517..1c7483c 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogout.m +++ b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFAsyncFacebookLogout.m @@ -15,7 +15,7 @@ @implementation JFFAsyncFacebookLogout #pragma mark - JFFAsyncOperationInterface -- (void)logout +- (void)logOut { [_session closeAndClearTokenInformation]; @@ -33,13 +33,13 @@ - (void)asyncOperationWithResultCallback:(JFFDidFinishAsyncOperationCallback)fin [FBSession renewSystemCredentials:^(ACAccountCredentialRenewResult result, NSError *error) { - [self logout]; + [self logOut]; }]; return; } - [self logout]; + [self logOut]; } - (void)doTask:(JFFAsyncOperationHandlerTask)task diff --git a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFFacebookPublishAccessRequestAdapter.m b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFFacebookPublishAccessRequestAdapter.m index 6e5119e..09a0173 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFFacebookPublishAccessRequestAdapter.m +++ b/lib/JFFSocial/JFFSocial/Facebook/AsyncAdapters/JFFFacebookPublishAccessRequestAdapter.m @@ -113,7 +113,7 @@ JFFAsyncOperation jffFacebookPublishAccessRequest(FBSession *session, NSArray *p NSDictionary *mergeParams = @{ - @"method" : @"jffFacebookPublishAccessRequest", + @"method" : @(__FUNCTION__), @"permissions" : [[NSSet alloc] initWithArray:permissions], @"class" : NSStringFromClass([JFFFacebookPublishAccessRequestAdapter class]) }; diff --git a/lib/JFFSocial/JFFSocial/Facebook/JFFSocialFacebook.m b/lib/JFFSocial/JFFSocial/Facebook/JFFSocialFacebook.m index 82b4307..e2b3b8f 100644 --- a/lib/JFFSocial/JFFSocial/Facebook/JFFSocialFacebook.m +++ b/lib/JFFSocial/JFFSocial/Facebook/JFFSocialFacebook.m @@ -17,7 +17,6 @@ @implementation JFFSocialFacebook + (NSArray *)authPermissions { NSArray *result = @[@"email", @"user_birthday"]; - return result; } diff --git a/lib/JFFSocial/JFFSocial/Instagram/JFFSocialInstagram.m b/lib/JFFSocial/JFFSocial/Instagram/JFFSocialInstagram.m index 06401fc..a2597cc 100644 --- a/lib/JFFSocial/JFFSocial/Instagram/JFFSocialInstagram.m +++ b/lib/JFFSocial/JFFSocial/Instagram/JFFSocialInstagram.m @@ -69,7 +69,7 @@ + (JFFAsyncOperation)authedUserLoaderWithCredentials:(JFFInstagramCredentials *) NSDictionary *params = [[url query] dictionaryFromQueryComponents]; NSArray *codeParams = params[@"code"]; - if ([codeParams count]==0) { + if ([codeParams count] == 0) { JFFInvalidInstagramResponseURLError *error = [JFFInvalidInstagramResponseURLError new]; error.url = url; diff --git a/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.h b/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.h index bb6d933..acd39e6 100644 --- a/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.h +++ b/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.h @@ -10,7 +10,7 @@ typedef void(^JFFSocialTwitterDidLoginCallback)(NSString *login); + (JFFAsyncOperation)authorizationLoader; -+ (JFFAsyncOperation)usersNearbyCoordinatesLantitude:(double)latitude longitude:(double)longitude; ++ (JFFAsyncOperation)usersNearbyCoordinatesLatitude:(double)latitude longitude:(double)longitude; + (JFFAsyncOperation)followersLoader; diff --git a/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.m b/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.m index 4756b54..3b4c46f 100644 --- a/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.m +++ b/lib/JFFSocial/JFFSocial/Twitter/JFFSocialTwitter.m @@ -155,7 +155,7 @@ + (JFFAsyncOperationBinder)dataLoaderForIdentifier }; } -+ (JFFAsyncBinderForIdentifier)analyzerForDataWithAnalizer:(JFFAsyncOperationBinder)ayncAnalyzer ++ (JFFAsyncBinderForIdentifier)analyzerForDataWithAnalyzer:(JFFAsyncOperationBinder)ayncAnalyzer { ayncAnalyzer = [ayncAnalyzer copy]; @@ -219,15 +219,15 @@ + (JFFAsyncOperation)generalTwitterApiDataLoaderWithURLString:(NSString *)urlStr if (cacheDataLifeTimeInSeconds == 0.) { loader = bindSequenceOfAsyncOperations([self dataLoaderForIdentifier](loadDataIdentifier), - [self analyzerForDataWithAnalizer:ayncAnalyzer](loadDataIdentifier), + [self analyzerForDataWithAnalyzer:ayncAnalyzer](loadDataIdentifier), nil); } else { - JFFSmartUrlDataLoaderFields *args = [JFFSmartUrlDataLoaderFields new]; + JFFSmartDataLoaderFields *args = [JFFSmartDataLoaderFields new]; args.loadDataIdentifier = loadDataIdentifier; args.dataLoaderForIdentifier = [self dataLoaderForIdentifier]; - args.analyzerForData = [self analyzerForDataWithAnalizer:ayncAnalyzer]; + args.analyzerForData = [self analyzerForDataWithAnalyzer:ayncAnalyzer]; args.cacheKeyForIdentifier = [self cacheKeyForIdentifier]; args.cacheDataLifeTimeInSeconds = cacheDataLifeTimeInSeconds; args.cache = self.cache; @@ -253,7 +253,7 @@ + (JFFAsyncOperation)generalTwitterApiDataLoaderWithURLString:(NSString *)urlStr cacheDataLifeTimeInSeconds:0.]; } -+ (JFFAsyncOperation)usersNearbyCoordinatesLantitude:(double)latitude longitude:(double)longitude ++ (JFFAsyncOperation)usersNearbyCoordinatesLatitude:(double)latitude longitude:(double)longitude { static NSString *geocodeFormat = @"%f,%f,100mi"; @@ -323,9 +323,6 @@ + (JFFAsyncOperation)sendDirectMessage:(NSString *)message loader = asyncOperationWithFinishHookBlock(loader, ^(id result, NSError *error, JFFDidFinishAsyncOperationCallback doneCallback) { - if (!doneCallback) - return; - if ([error isKindOfClass:[JFFTwitterDirectMessageAlreadySentError class]]) { result = [NSNull new]; diff --git a/lib/JFFStoreKit/JFFStoreKit.xcodeproj/project.pbxproj b/lib/JFFStoreKit/JFFStoreKit.xcodeproj/project.pbxproj index 46befeb..f248adc 100644 --- a/lib/JFFStoreKit/JFFStoreKit.xcodeproj/project.pbxproj +++ b/lib/JFFStoreKit/JFFStoreKit.xcodeproj/project.pbxproj @@ -357,7 +357,8 @@ CED002251619A33E00368E7D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastTestingUpgradeCheck = 0510; + LastUpgradeCheck = 0510; ORGANIZATIONNAME = EmbeddedSources; }; buildConfigurationList = CED002281619A33E00368E7D /* Build configuration list for PBXProject "JFFStoreKit" */; @@ -557,8 +558,9 @@ ../, ., ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; + ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; name = Debug; @@ -582,7 +584,7 @@ ../, ., ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -595,7 +597,6 @@ DSTROOT = /tmp/JFFStoreKit.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFStoreKit/JFFStoreKit-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -608,7 +609,6 @@ DSTROOT = /tmp/JFFStoreKit.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "JFFStoreKit/JFFStoreKit-Prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKFinishTransaction.m b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKFinishTransaction.m index cb8e094..5d621f6 100644 --- a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKFinishTransaction.m +++ b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKFinishTransaction.m @@ -78,7 +78,7 @@ - (void)doTask:(JFFAsyncOperationHandlerTask)task { NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); - if (task == JFFAsyncOperationHandlerTaskUnsubscribe) + if (task == JFFAsyncOperationHandlerTaskUnSubscribe) [self unsubscribeFromObservervation]; } diff --git a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPaymentQueue.m b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPaymentQueue.m index 97205b4..96e6823 100644 --- a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPaymentQueue.m +++ b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPaymentQueue.m @@ -79,7 +79,7 @@ - (void)doTask:(JFFAsyncOperationHandlerTask)task { NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); - if (task == JFFAsyncOperationHandlerTaskUnsubscribe) + if (task == JFFAsyncOperationHandlerTaskUnSubscribe) [self unsubscribeFromObservervation]; } diff --git a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPendingTransactions.m b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPendingTransactions.m index 8d75ed2..dc54896 100644 --- a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPendingTransactions.m +++ b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKPendingTransactions.m @@ -67,22 +67,21 @@ - (void)doTask:(JFFAsyncOperationHandlerTask)task { NSParameterAssert(task <= JFFAsyncOperationHandlerTaskCancel); - if (task == JFFAsyncOperationHandlerTaskUnsubscribe) + if (task == JFFAsyncOperationHandlerTaskUnSubscribe) [self unsubscribeFromObservervation]; } - (void)finishWithTransactions:(NSArray *)transactions { - transactions = [self pendingTransactionsForTransactions:transactions]?:@[]; + transactions = [self restoredTransactionsForTransactions:transactions]?:@[]; if (_finishCallback) _finishCallback(transactions, nil); } -- (NSArray *)pendingTransactionsForTransactions:(NSArray *)transactions +- (NSArray *)restoredTransactionsForTransactions:(NSArray *)transactions { NSArray *result = [transactions select:^BOOL(SKPaymentTransaction *transaction) { - return transaction.transactionState == SKPaymentTransactionStateRestored; }]; @@ -93,27 +92,24 @@ - (NSArray *)pendingTransactionsForTransactions:(NSArray *)transactions - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { - if (!_finishCallback) { - return; - } - - //TODO fix workaround for IOS 6.0 - [self performSelector:@selector(doNothing:) withObject:self afterDelay:1.]; - - [self finishWithTransactions:transactions]; - [self unsubscribeFromObservervation]; } - (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { - if (_finishCallback) - _finishCallback(@[], nil); + JFFAsyncSKPendingTransactions *self_ = self; + + [self_ finishWithTransactions:queue.transactions]; + [self_ unsubscribeFromObservervation]; } - (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error { + JFFAsyncSKPendingTransactions *self_ = self; + if (_finishCallback) _finishCallback(nil, error); + + [self_ unsubscribeFromObservervation]; } @end diff --git a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKProductRequest.m b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKProductRequest.m index b3a65ec..03711d4 100644 --- a/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKProductRequest.m +++ b/lib/JFFStoreKit/JFFStoreKit/asyncAdapters/asyncSKProductRequest.m @@ -61,7 +61,6 @@ - (void)requestDidFinish:(SKRequest *)request if ([products hasElements]) { SKProduct *product = [products firstMatch:^BOOL(SKProduct *product) { - return [product.productIdentifier isEqualToString:_productIdentifier]; }]; diff --git a/lib/JFFTestTools/JFFTestTools/GHAsyncTestCase+MainThreadTests.h b/lib/JFFTestTools/JFFTestTools/GHAsyncTestCase+MainThreadTests.h index 988b231..db136bf 100755 --- a/lib/JFFTestTools/JFFTestTools/GHAsyncTestCase+MainThreadTests.h +++ b/lib/JFFTestTools/JFFTestTools/GHAsyncTestCase+MainThreadTests.h @@ -6,14 +6,14 @@ typedef void (^TestAsyncRequestBlock)(JFFSimpleBlock); //GHAsyncTestCase category @interface NSObject (MainThreadTests) -- (void)performAsyncRequestOnMainThreadWithBlock:(void(^)(JFFSimpleBlock))block +- (void)performAsyncRequestOnMainThreadWithBlock:(TestAsyncRequestBlock)block selector:(SEL)selector; -- (void)waitForeverForAsyncRequestOnMainThreadWithBlock:(void (^)(JFFSimpleBlock))block - selector:(SEL)selector; +-(void)waitForeverForAsyncRequestOnMainThreadWithBlock:(TestAsyncRequestBlock)block + selector:(SEL)selector; -- (void)performAsyncRequestOnMainThreadWithBlock:(void (^)(JFFSimpleBlock))block - selector:(SEL)selector - timeout:(NSTimeInterval)timeout; +-(void)performAsyncRequestOnMainThreadWithBlock:(TestAsyncRequestBlock)block + selector:(SEL)selector + timeout:(NSTimeInterval)timeout; @end diff --git a/lib/JFFTestTools/JFFTestTools/GHAsyncTestCase+MainThreadTests.m b/lib/JFFTestTools/JFFTestTools/GHAsyncTestCase+MainThreadTests.m index 36172c3..27d984c 100755 --- a/lib/JFFTestTools/JFFTestTools/GHAsyncTestCase+MainThreadTests.m +++ b/lib/JFFTestTools/JFFTestTools/GHAsyncTestCase+MainThreadTests.m @@ -33,24 +33,26 @@ - (void)performAsyncRequestOnMainThreadWithBlock:(void (^)(JFFSimpleBlock))block void (^didFinishCallback)(void) = ^void() { - objc_msgSend(self, - @selector(notify:forSelector:), - kGHUnitWaitStatusSuccess, - selector); + typedef void (*AlignMsgSendFunction)(id, SEL, NSInteger, SEL); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSend; + alignFunction(self, @selector(notify:forSelector:), kGHUnitWaitStatusSuccess, selector); }; block([didFinishCallback copy]); } }; - objc_msgSend(self, @selector(prepare), nil); + { + typedef void (*AlignMsgSendFunction)(id, SEL); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSend; + alignFunction(self, @selector(prepare)); + } dispatch_async(dispatch_get_main_queue(), autoreleaseBlock); - objc_msgSend(self, - @selector(waitForStatus:timeout:), - kGHUnitWaitStatusSuccess, - timeout); + typedef void (*AlignMsgSendFunction)(id, SEL, NSInteger, NSTimeInterval); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSend; + alignFunction(self, @selector(waitForStatus:timeout:), kGHUnitWaitStatusSuccess, timeout); } + (void)load diff --git a/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.h b/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.h index 984d22e..ba4e982 100644 --- a/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.h +++ b/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.h @@ -2,13 +2,12 @@ #import -typedef enum { - +typedef NS_ENUM(NSUInteger, JFFCancelAsyncOperationManagerType) +{ JFFDoNotCancelAsyncOperationManager, JFFCancelAsyncOperationManagerWithNoFlag, JFFCancelAsyncOperationManagerWithYesFlag - -} JFFCancelAsyncOperationManagerType; +}; @interface JFFAsyncOperationManager : NSObject diff --git a/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.m b/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.m index b4e6631..f1d565b 100644 --- a/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.m +++ b/lib/JFFTestTools/JFFTestTools/JFFAsyncOperationManager.m @@ -57,7 +57,7 @@ - (JFFAsyncOperation)loader if (doneCallback) { JFFAsyncOperationHandlerTask task = (self.cancelAtLoading == JFFCancelAsyncOperationManagerWithNoFlag) - ?JFFAsyncOperationHandlerTaskUnsubscribe + ?JFFAsyncOperationHandlerTaskUnSubscribe :JFFAsyncOperationHandlerTaskCancel; NSError *error = [JFFAsyncOperationAbstractFinishError newAsyncOperationAbstractFinishErrorWithHandlerTask:task]; doneCallback(nil, error); diff --git a/lib/JFFUI/AlertView/Detail/JFFWaitAlertView.mm b/lib/JFFUI/AlertView/Detail/JFFWaitAlertView.mm index 07c2abe..3894965 100644 --- a/lib/JFFUI/AlertView/Detail/JFFWaitAlertView.mm +++ b/lib/JFFUI/AlertView/Detail/JFFWaitAlertView.mm @@ -23,18 +23,21 @@ - (void)showActivityIndicatorView #pragma mark UIAlertViewDelegate -- (void)willPresentAlertView:(UIAlertView *)alertView_ +- (void)willPresentAlertView:(UIAlertView *)alertView { - SEL selector_ = @selector( willPresentAlertView: ); - if ( [ [ self superclass ] hasInstanceMethodWithSelector: selector_ ] ) - { - struct objc_super superTarget_; - superTarget_.receiver = self; - superTarget_.super_class = [ self superclass ]; - objc_msgSendSuper( &superTarget_, selector_, alertView_ ); + SEL selector = @selector(willPresentAlertView:); + if ([[self superclass] hasInstanceMethodWithSelector:selector]) { + + struct objc_super superTarget; + superTarget.receiver = self; + superTarget.super_class = [self superclass]; + + typedef void (*AlignMsgSendFunction)(struct objc_super *super, SEL, UIView *); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSendSuper; + alignFunction(&superTarget, selector, alertView); } - [ self showActivityIndicatorView ]; + [self showActivityIndicatorView]; } @end diff --git a/lib/JFFUI/JFFUI.h b/lib/JFFUI/JFFUI.h index df4ac49..1d7d9a6 100644 --- a/lib/JFFUI/JFFUI.h +++ b/lib/JFFUI/JFFUI.h @@ -42,8 +42,6 @@ #import #import #import -#import -#import #import #import diff --git a/lib/JFFUI/JFFUI.xcodeproj/project.pbxproj b/lib/JFFUI/JFFUI.xcodeproj/project.pbxproj index 15b6521..721bd5c 100644 --- a/lib/JFFUI/JFFUI.xcodeproj/project.pbxproj +++ b/lib/JFFUI/JFFUI.xcodeproj/project.pbxproj @@ -591,7 +591,7 @@ 0867D690FE84028FC02AAC07 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastUpgradeCheck = 0510; }; buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "JFFUI" */; compatibilityVersion = "Xcode 3.2"; @@ -699,7 +699,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = JFFUI_Prefix.pch; INSTALL_PATH = /usr/local/lib; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; PRODUCT_NAME = JFFUI; SKIP_INSTALL = YES; }; @@ -715,7 +714,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = JFFUI_Prefix.pch; INSTALL_PATH = /usr/local/lib; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; PRODUCT_NAME = JFFUI; SKIP_INSTALL = YES; }; @@ -736,8 +734,9 @@ ../, "../../lib-third-party/libturbojpeg-ios", ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; + ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; }; @@ -757,7 +756,7 @@ ../, "../../lib-third-party/libturbojpeg-ios", ); - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; @@ -768,7 +767,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_ENABLE_OBJC_ARC = YES; COPY_PHASE_STRIP = NO; DSTROOT = /tmp/JFFUI.dst; @@ -790,7 +788,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_ENABLE_OBJC_ARC = YES; DSTROOT = /tmp/JFFUI.dst; GCC_MODEL_TUNING = G5; diff --git a/lib/JFFUI/JFFUI_Prefix.pch b/lib/JFFUI/JFFUI_Prefix.pch index 2df276a..4f58906 100755 --- a/lib/JFFUI/JFFUI_Prefix.pch +++ b/lib/JFFUI/JFFUI_Prefix.pch @@ -2,6 +2,10 @@ // Prefix header for all source files of the 'CocoaTouchStaticLibrary' target in the 'CocoaTouchStaticLibrary' project. // +#ifdef __cplusplus + #include +#endif + #ifdef __OBJC__ #import #import diff --git a/lib/JFFUI/PhotoCamera/JFFPhotoCamera.m b/lib/JFFUI/PhotoCamera/JFFPhotoCamera.m index 0f49ef0..c05b93c 100644 --- a/lib/JFFUI/PhotoCamera/JFFPhotoCamera.m +++ b/lib/JFFUI/PhotoCamera/JFFPhotoCamera.m @@ -175,17 +175,17 @@ - (JFFAVCaptureVideoOrientation)videoOrientation - (void)setVideoOrientation:(JFFAVCaptureVideoOrientation)videoOrientation { AVCaptureConnection *videoConnection = [self videoConnectionFromImageOutput:_camImageOutput]; - videoConnection.videoOrientation = videoOrientation; + videoConnection.videoOrientation = (AVCaptureVideoOrientation)videoOrientation; } - (JFFCameraFlashModeType)flashMode { //TODO check is front camera return _backCameraDevice.flashMode == AVCaptureFlashModeAuto - ? JFFCameraFlashModeAuto - : _backCameraDevice.flashMode == AVCaptureFlashModeOn - ? JFFCameraFlashModeOn - : JFFCameraFlashModeOff; + ?JFFCameraFlashModeAuto + :_backCameraDevice.flashMode == AVCaptureFlashModeOn + ?JFFCameraFlashModeOn + :JFFCameraFlashModeOff; } - (void)setFlashMode:(JFFCameraFlashModeType)flashMode diff --git a/lib/JFFUI/StripeView/JFFPageSlider.m b/lib/JFFUI/StripeView/JFFPageSlider.m index e36df87..ac5b5a7 100644 --- a/lib/JFFUI/StripeView/JFFPageSlider.m +++ b/lib/JFFUI/StripeView/JFFPageSlider.m @@ -18,7 +18,7 @@ @implementation JFFPageSlider { NSInteger _previousIndex; NSInteger _cachedNumberOfElements; - NSRange _previousVisiableIndexesRange; + NSRange _previousVisibleIndexesRange; } - (void)dealloc @@ -54,8 +54,8 @@ - (void)initialize _scrollView.scrollEnabled = YES; [self addSubviewAndScale:_scrollView]; - NSRange range_ = { 0, 1 }; - _previousVisiableIndexesRange = range_; + NSRange range = { 0, 1 }; + _previousVisibleIndexesRange = range; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) @@ -229,11 +229,11 @@ - (void)slideToIndex:( NSInteger )index_ [ self slideToIndex: index_ animated: NO ]; } -- (NSRange)visiableIndexesRange +- (NSRange)visibleIndexesRange { if (_scrollView.bounds.size.width == 0) { NSLog(@"[!!!ERROR!!!] division by zero"); - return _previousVisiableIndexesRange; + return _previousVisibleIndexesRange; } NSInteger firstIndex = floorf( _scrollView.contentOffset.x / _scrollView.bounds.size.width ) + _firstIndex; @@ -242,9 +242,9 @@ - (NSRange)visiableIndexesRange firstIndex = firstIndex > 0 ?: 0; - NSRange range_ = { firstIndex, lastIndex - firstIndex + 1 }; - _previousVisiableIndexesRange = range_; - return _previousVisiableIndexesRange; + NSRange range = { firstIndex, lastIndex - firstIndex + 1 }; + _previousVisibleIndexesRange = range; + return _previousVisibleIndexesRange; } - (NSInteger)lastIndex @@ -300,8 +300,8 @@ - (void)pushBackElement - (void)scrollViewDidScroll:(UIScrollView *)scrollView { - NSRange previuosRange = _previousVisiableIndexesRange; - NSRange indexRange = [self visiableIndexesRange]; + NSRange previuosRange = _previousVisibleIndexesRange; + NSRange indexRange = [self visibleIndexesRange]; if (NSEqualRanges(previuosRange, indexRange)) return; diff --git a/lib/JFFUtils/JFFUtils.xcodeproj/project.pbxproj b/lib/JFFUtils/JFFUtils.xcodeproj/project.pbxproj index 9acdf33..a6bf4a2 100644 --- a/lib/JFFUtils/JFFUtils.xcodeproj/project.pbxproj +++ b/lib/JFFUtils/JFFUtils.xcodeproj/project.pbxproj @@ -1601,7 +1601,8 @@ 0867D690FE84028FC02AAC07 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0500; + LastTestingUpgradeCheck = 0510; + LastUpgradeCheck = 0510; }; buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "JFFUtils" */; compatibilityVersion = "Xcode 3.2"; @@ -2178,7 +2179,6 @@ GCC_PREFIX_HEADER = JFFUtils_Prefix.pch; HEADER_SEARCH_PATHS = ../; INSTALL_PATH = /usr/local/lib; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; PRODUCT_NAME = JFFUtils; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -2195,7 +2195,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = JFFUtils_Prefix.pch; INSTALL_PATH = /usr/local/lib; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; PRODUCT_NAME = JFFUtils; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -2214,8 +2213,9 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ../; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; + ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; }; @@ -2232,7 +2232,7 @@ GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ../; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LLVM_VECTORIZE_LOOPS = YES; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; @@ -2243,7 +2243,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_ENABLE_OBJC_ARC = YES; COPY_PHASE_STRIP = NO; DSTROOT = /tmp/JFFUtils.dst; @@ -2266,7 +2265,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; CLANG_ENABLE_OBJC_ARC = YES; DSTROOT = /tmp/JFFUtils.dst; GCC_MODEL_TUNING = G5; @@ -2285,7 +2283,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_ARC = YES; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; @@ -2316,7 +2313,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_ARC = YES; COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = YES; diff --git a/lib/JFFUtils/JFFUtilsTest/DateDifferenceStringFromDateTest.h b/lib/JFFUtils/JFFUtilsTest/DateDifferenceStringFromDateTest.h index e0e0e9d..622503c 100644 --- a/lib/JFFUtils/JFFUtilsTest/DateDifferenceStringFromDateTest.h +++ b/lib/JFFUtils/JFFUtilsTest/DateDifferenceStringFromDateTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface DateDifferenceStringFromDateTest : SenTestCase +@interface DateDifferenceStringFromDateTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/DateDifferenceStringFromDateTest.m b/lib/JFFUtils/JFFUtilsTest/DateDifferenceStringFromDateTest.m index 4c17a0c..42eebcf 100644 --- a/lib/JFFUtils/JFFUtilsTest/DateDifferenceStringFromDateTest.m +++ b/lib/JFFUtils/JFFUtilsTest/DateDifferenceStringFromDateTest.m @@ -19,7 +19,7 @@ - (void)testEqulatDateDifferenceDatesThrowsException NSDate *date = [_formatter dateFromString: @"2012-12-01 12:00:00"]; NSDate *fromDate = [_formatter dateFromString: @"2012-12-01 12:00:00"]; - STAssertThrows + XCTAssertThrows ( [date dateDifferenceStringFromDate: fromDate] , @"assert expected" @@ -31,7 +31,7 @@ - (void)testInvalidFromDateThrowsException NSDate *date = [_formatter dateFromString: @"2012-12-01 12:00:00"]; NSDate *fromDate = [_formatter dateFromString: @"2012-12-01 12:00:01"]; - STAssertThrows + XCTAssertThrows ( [date dateDifferenceStringFromDate: fromDate] , @"assert expected" @@ -45,7 +45,7 @@ - (void)testOneSecondDifference NSString *result = [date dateDifferenceStringFromDate: fromDate]; - STAssertEqualObjects(@"1 SECOND", result, @"date difference mismatch"); + XCTAssertEqualObjects(@"1 SECOND", result, @"date difference mismatch"); } - (void)testSeveralSecondDifference @@ -55,7 +55,7 @@ - (void)testSeveralSecondDifference NSString *result = [date dateDifferenceStringFromDate: fromDate]; - STAssertEqualObjects(@"22 SECONDS", result, @"date difference mismatch"); + XCTAssertEqualObjects(@"22 SECONDS", result, @"date difference mismatch"); } - (void)testOneMinuteDifference @@ -65,7 +65,7 @@ - (void)testOneMinuteDifference NSString *result = [date dateDifferenceStringFromDate: fromDate]; - STAssertEqualObjects(@"1 MINUTE", result, @"date difference mismatch"); + XCTAssertEqualObjects(@"1 MINUTE", result, @"date difference mismatch"); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/DelegateProxyTest.h b/lib/JFFUtils/JFFUtilsTest/DelegateProxyTest.h index 8cfe010..6518b78 100644 --- a/lib/JFFUtils/JFFUtilsTest/DelegateProxyTest.h +++ b/lib/JFFUtils/JFFUtilsTest/DelegateProxyTest.h @@ -1,6 +1,6 @@ -#import +#import #import -@interface DelegateProxyTest : SenTestCase +@interface DelegateProxyTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/DelegateProxyTest.m b/lib/JFFUtils/JFFUtilsTest/DelegateProxyTest.m index c12375f..6dda787 100644 --- a/lib/JFFUtils/JFFUtilsTest/DelegateProxyTest.m +++ b/lib/JFFUtils/JFFUtilsTest/DelegateProxyTest.m @@ -104,7 +104,7 @@ - (void)performBlockWithMemoryTest:(JFFSimpleBlock)block [[self classesToTestOnLeaks]enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSNumber *num = initialInstancesCouns[idx]; - STAssertEqualObjects(num, @([obj instancesCount]), @"we got a leak"); + XCTAssertEqualObjects(num, @([obj instancesCount]), @"we got a leak"); }]; } @@ -122,7 +122,7 @@ - (void)testSetProxyDelegate object.delegate = delegate; - STAssertTrue(object.delegate != delegate, @"not the same object"); + XCTAssertTrue(object.delegate != delegate, @"not the same object"); }]; } @@ -147,9 +147,9 @@ - (void)testProxyDelegateMessageGot id sentObject = [NSObject new]; [object.delegate someDelegateMethod:sentObject]; - STAssertTrue(delegate.methodCallArgument == sentObject, @"method was called"); - STAssertTrue(proxyDelegate1.methodCallArgument == sentObject, @"method was called"); - STAssertTrue(proxyDelegate2.methodCallArgument == sentObject, @"method was called"); + XCTAssertTrue(delegate.methodCallArgument == sentObject, @"method was called"); + XCTAssertTrue(proxyDelegate1.methodCallArgument == sentObject, @"method was called"); + XCTAssertTrue(proxyDelegate2.methodCallArgument == sentObject, @"method was called"); }]; } @@ -172,7 +172,7 @@ -(void)testProxyDelegateAfterRemoveFromMemory id sentObject = [NSObject new]; [object.delegate someDelegateMethod:sentObject]; - STAssertTrue(delegate.methodCallArgument == sentObject, @"method was called"); + XCTAssertTrue(delegate.methodCallArgument == sentObject, @"method was called"); }]; } @@ -195,9 +195,9 @@ -(void)testProxyDelegateAfterRemoveFromObservers id sentObject = [NSNull null]; [object.delegate someDelegateMethod:[NSNull null]]; - STAssertTrue(delegate.methodCallArgument == sentObject, @"method was called"); + XCTAssertTrue(delegate.methodCallArgument == sentObject, @"method was called"); - STAssertTrue(object.delegate == delegate, @"method was called"); + XCTAssertTrue(object.delegate == delegate, @"method was called"); }]; } diff --git a/lib/JFFUtils/JFFUtilsTest/EmptyStringTest.h b/lib/JFFUtils/JFFUtilsTest/EmptyStringTest.h index e2d9200..a8c441c 100644 --- a/lib/JFFUtils/JFFUtilsTest/EmptyStringTest.h +++ b/lib/JFFUtils/JFFUtilsTest/EmptyStringTest.h @@ -1,5 +1,5 @@ -#import +#import -@interface EmptyStringTest : SenTestCase +@interface EmptyStringTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/EmptyStringTest.m b/lib/JFFUtils/JFFUtilsTest/EmptyStringTest.m index 558dca1..dc423b4 100644 --- a/lib/JFFUtils/JFFUtilsTest/EmptyStringTest.m +++ b/lib/JFFUtils/JFFUtilsTest/EmptyStringTest.m @@ -5,33 +5,33 @@ @implementation EmptyStringTest - (void)testNilStringIsEmpty { NSString *str; - STAssertFalse([str hasSymbols], @"Nil String[%@] should have no symbols", str); + XCTAssertFalse([str hasSymbols], @"Nil String[%@] should have no symbols", str); } - (void)testEmptyStringIsEmpty { { NSString *str = @""; - STAssertFalse([str hasSymbols], @"Nil String[%@] should have no symbols", str); + XCTAssertFalse([str hasSymbols], @"Nil String[%@] should have no symbols", str); } { NSMutableString* empty = [NSMutableString stringWithString:@""]; NSString* str = [empty copy]; - STAssertFalse([str hasSymbols], @"Nil String[%@] should have no symbols", str); + XCTAssertFalse([str hasSymbols], @"Nil String[%@] should have no symbols", str); } { NSMutableString* empty = [NSMutableString stringWithString:@""]; NSString *str = [empty copy]; - STAssertFalse( [str hasSymbols], @"Nil String[%@] should have no symbols", str); + XCTAssertFalse( [str hasSymbols], @"Nil String[%@] should have no symbols", str); } } - (void)testStringWithCharactersIsNotEmpty { NSString *str = @"abrakadabre"; - STAssertTrue([str hasSymbols], @"The String[%@] should have some symbols", str); + XCTAssertTrue([str hasSymbols], @"The String[%@] should have some symbols", str); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFAssignProxyTest.h b/lib/JFFUtils/JFFUtilsTest/JFFAssignProxyTest.h index 794b450..0a894e8 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFAssignProxyTest.h +++ b/lib/JFFUtils/JFFUtilsTest/JFFAssignProxyTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface JFFAssignProxyTest : SenTestCase +@interface JFFAssignProxyTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFAssignProxyTest.m b/lib/JFFUtils/JFFUtilsTest/JFFAssignProxyTest.m index a1f03bc..77ed3be 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFAssignProxyTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JFFAssignProxyTest.m @@ -31,7 +31,7 @@ -(void)testAssignProxyDealloc proxy = [[JFFAssignProxy alloc] initWithTarget:target]; } - STAssertTrue(targetDeallocated, @"Target should be dealloced"); + XCTAssertTrue(targetDeallocated, @"Target should be dealloced"); } -(void)testAssignProxyMethodCalls @@ -39,7 +39,7 @@ -(void)testAssignProxyMethodCalls ProxyTargetTest *target_ = [ProxyTargetTest new]; id proxy_ = [[JFFAssignProxy alloc] initWithTarget:target_ ]; - STAssertTrue( 5 == [ proxy_ justReturnFiveNumber ], @"Target should be dealloced" ); + XCTAssertTrue( 5 == [ proxy_ justReturnFiveNumber ], @"Target should be dealloced" ); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFMeaningClassTest.h b/lib/JFFUtils/JFFUtilsTest/JFFMeaningClassTest.h index a78962f..eee4ad6 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFMeaningClassTest.h +++ b/lib/JFFUtils/JFFUtilsTest/JFFMeaningClassTest.h @@ -1,5 +1,5 @@ -#import +#import -@interface JFFMeaningClassTest : SenTestCase +@interface JFFMeaningClassTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFMeaningClassTest.m b/lib/JFFUtils/JFFUtilsTest/JFFMeaningClassTest.m index 5d75bc6..9770292 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFMeaningClassTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JFFMeaningClassTest.m @@ -4,8 +4,8 @@ @implementation JFFMeaningClassTest - (void)testJffMeaningClass:(Class)aClass { - STAssertTrue([[aClass class] jffMeaningClass] == aClass, nil); - STAssertTrue([[aClass new ] jffMeaningClass] == aClass, nil); + XCTAssertTrue([[aClass class] jffMeaningClass] == aClass); + XCTAssertTrue([[aClass new ] jffMeaningClass] == aClass); } - (void)testJFFMeaningClass @@ -23,21 +23,21 @@ - (void)testJFFMeaningClass ); //fails TODO fix - //STAssertTrue( [[(__bridge id)arrayRef class] jffMeaningClass] == [NSArray class], nil); + //XCTAssertTrue( [[(__bridge id)arrayRef class] jffMeaningClass] == [NSArray class], nil); //!!! memory fail - //STAssertTrue( [[[(__bridge id)arrayRef class] new] jffMeaningClass] == [NSArray class], nil); + //XCTAssertTrue( [[[(__bridge id)arrayRef class] new] jffMeaningClass] == [NSArray class], nil); //!!! [[[(__bridge id)arrayRef mutableCopy] class] == [(__bridge id)arrayRef class] :-( - //STAssertTrue( [[[(__bridge id)arrayRef mutableCopy] class] jffMeaningClass] == [NSMutableArray class], nil); + //XCTAssertTrue( [[[(__bridge id)arrayRef mutableCopy] class] jffMeaningClass] == [NSMutableArray class], nil); // - STAssertTrue([[[@[] class] new] jffMeaningClass] == [NSArray class], nil); + XCTAssertTrue([[[@[] class] new] jffMeaningClass] == [NSArray class]); - STAssertTrue( [[@[] class] jffMeaningClass] == [NSArray class], nil); - STAssertTrue([[[@[] class] new] jffMeaningClass] == [NSArray class], nil); + XCTAssertTrue( [[@[] class] jffMeaningClass] == [NSArray class]); + XCTAssertTrue([[[@[] class] new] jffMeaningClass] == [NSArray class]); - STAssertTrue( [[[@[] mutableCopy] class] jffMeaningClass] == [NSMutableArray class], nil); - STAssertTrue([[[[@[] mutableCopy] class] new] jffMeaningClass] == [NSMutableArray class], nil); + XCTAssertTrue( [[[@[] mutableCopy] class] jffMeaningClass] == [NSMutableArray class]); + XCTAssertTrue([[[[@[] mutableCopy] class] new] jffMeaningClass] == [NSMutableArray class]); CFRelease(arrayRef); } @@ -54,24 +54,24 @@ - (void)testJFFMeaningClass NULL ); - STAssertTrue( [[(__bridge id)dictRef class] jffMeaningClass] == [NSDictionary class], nil); + XCTAssertTrue( [[(__bridge id)dictRef class] jffMeaningClass] == [NSDictionary class]); //!!! runtime fail - //STAssertTrue( [[[(__bridge id)dictRef class] new] jffMeaningClass] == [NSDictionary class], nil); + //XCTAssertTrue( [[[(__bridge id)dictRef class] new] jffMeaningClass] == [NSDictionary class], nil); //!!! - //STAssertTrue( [[[(__bridge id)dictRef mutableCopy] class] jffMeaningClass] == [NSDictionary class], nil); + //XCTAssertTrue( [[[(__bridge id)dictRef mutableCopy] class] jffMeaningClass] == [NSDictionary class], nil); CFRelease(dictRef); NSMutableDictionary *dict = [NSMutableDictionary new]; - STAssertTrue( [[[dict copy] class] jffMeaningClass] == [NSDictionary class], nil); + XCTAssertTrue( [[[dict copy] class] jffMeaningClass] == [NSDictionary class]); - STAssertTrue( [[@{} class] jffMeaningClass] == [NSDictionary class], nil); + XCTAssertTrue( [[@{} class] jffMeaningClass] == [NSDictionary class]); //!!! runtime fail when call new for [[@{} mutableCopy] class] -// STAssertTrue([[[@{} class] new] jffMeaningClass] == [NSDictionary class], nil); +// XCTAssertTrue([[[@{} class] new] jffMeaningClass] == [NSDictionary class], nil); //!!! [[[@{} mutableCopy] class] == [@{} class] :-( -// STAssertTrue( [[[@{} mutableCopy] class] jffMeaningClass] == [NSMutableDictionary class], nil); -// STAssertTrue([[[[@{} mutableCopy] class] new] jffMeaningClass] == [NSMutableDictionary class], nil); +// XCTAssertTrue( [[[@{} mutableCopy] class] jffMeaningClass] == [NSMutableDictionary class], nil); +// XCTAssertTrue([[[[@{} mutableCopy] class] new] jffMeaningClass] == [NSMutableDictionary class], nil); } { @@ -82,24 +82,24 @@ - (void)testJFFMeaningClass kCFStringEncodingUTF8 ); - STAssertTrue( [[(__bridge id)stringRef class] jffMeaningClass] == [NSString class], nil); + XCTAssertTrue( [[(__bridge id)stringRef class] jffMeaningClass] == [NSString class]); CFRelease(stringRef); - STAssertTrue( [[@"a" class] jffMeaningClass] == [NSString class], nil); - STAssertTrue( [[[@"a" class] new] jffMeaningClass] == [NSString class], nil); + XCTAssertTrue( [[@"a" class] jffMeaningClass] == [NSString class]); + XCTAssertTrue( [[[@"a" class] new] jffMeaningClass] == [NSString class]); //!!! the same as empty CFString -// STAssertTrue( [[[@"" mutableCopy] class] jffMeaningClass] == [NSMutableString class], nil); +// XCTAssertTrue( [[[@"" mutableCopy] class] jffMeaningClass] == [NSMutableString class], nil); //!!! runtime fail when call new for [[@"" mutableCopy] class] -// STAssertTrue([[[[@"" mutableCopy] class] new] jffMeaningClass] == [NSMutableString class], nil); +// XCTAssertTrue([[[[@"" mutableCopy] class] new] jffMeaningClass] == [NSMutableString class], nil); } { - STAssertTrue( [[@1 class] jffMeaningClass] == [NSNumber class], nil); + XCTAssertTrue( [[@1 class] jffMeaningClass] == [NSNumber class]); //!!! strange fails :-( -// STAssertTrue( [[[[@1 class] alloc] initWithBool:NO] jffMeaningClass] == [NSString class], nil); +// XCTAssertTrue( [[[[@1 class] alloc] initWithBool:NO] jffMeaningClass] == [NSString class], nil); const double value; CFNumberRef numberRef = CFNumberCreate ( @@ -108,9 +108,9 @@ - (void)testJFFMeaningClass &value ); - STAssertTrue( [[(__bridge id)numberRef class] jffMeaningClass] == [NSNumber class], nil); + XCTAssertTrue( [[(__bridge id)numberRef class] jffMeaningClass] == [NSNumber class]); //!!! strange fails :-( -// STAssertTrue( [[[[(__bridge id)numberRef class] alloc] initWithBool:NO] jffMeaningClass] == [NSNumber class], nil); +// XCTAssertTrue( [[[[(__bridge id)numberRef class] alloc] initWithBool:NO] jffMeaningClass] == [NSNumber class], nil); CFRelease(numberRef); diff --git a/lib/JFFUtils/JFFUtilsTest/JFFMulticastDelegateTest.h b/lib/JFFUtils/JFFUtilsTest/JFFMulticastDelegateTest.h index 3666deb..b524cfa 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFMulticastDelegateTest.h +++ b/lib/JFFUtils/JFFUtilsTest/JFFMulticastDelegateTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface JFFMulticastDelegateTest : SenTestCase +@interface JFFMulticastDelegateTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFMulticastDelegateTest.m b/lib/JFFUtils/JFFUtilsTest/JFFMulticastDelegateTest.m index 913bb03..3c26e5d 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFMulticastDelegateTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JFFMulticastDelegateTest.m @@ -44,11 +44,11 @@ - (void)testMutableAssignArrayAssignIssue [multicast addDelegate:delegate]; - STAssertTrue( initState_ == [ multicast justReturnFiveNumber ], @"Contains 1 object" ); + XCTAssertTrue( initState_ == [ multicast justReturnFiveNumber ], @"Contains 1 object" ); } - STAssertTrue(delegateDeallocated, @"Target should be dealloced"); - STAssertTrue(0 == [multicast justReturnFiveNumber], @"Empty array"); + XCTAssertTrue( delegateDeallocated, @"Target should be dealloced" ); + XCTAssertTrue( 0 == [ multicast justReturnFiveNumber ], @"Empty array" ); } - (void)testMulticastDelegateFirstRelease @@ -66,7 +66,7 @@ - (void)testMulticastDelegateFirstRelease [multicast addDelegate:delegate]; } - STAssertTrue( multicast_deallocated_, @"Target should be dealloced" ); + XCTAssertTrue( multicast_deallocated_, @"Target should be dealloced" ); } - (void)testAddDelegateTwice @@ -79,7 +79,7 @@ - (void)testAddDelegateTwice [multicast addDelegate:delegate]; - STAssertTrue(5 == [multicast justReturnFiveNumber], @"Contains 1 object"); + XCTAssertTrue(5 == [multicast justReturnFiveNumber], @"Contains 1 object"); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignArrayTest.h b/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignArrayTest.h index 4a5161a..fc86ce4 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignArrayTest.h +++ b/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignArrayTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface JFFMutableAssignArrayTest : SenTestCase +@interface JFFMutableAssignArrayTest : XCTestCase @end \ No newline at end of file diff --git a/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignArrayTest.m b/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignArrayTest.m index b1181fb..39a16b9 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignArrayTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignArrayTest.m @@ -17,12 +17,12 @@ - (void)testMutableAssignArrayAssignIssue JFFMutableAssignArray *array = [JFFMutableAssignArray new]; [array addObject:target]; - STAssertTrue(1 == [array count], @"Contains 1 object"); + XCTAssertTrue(1 == [array count], @"Contains 1 object"); } - STAssertNil(weakTarget, @"Target should be dealloced"); + XCTAssertNil(weakTarget, @"Target should be dealloced"); } - STAssertTrue(0 == [array count], @"Empty array"); + XCTAssertTrue(0 == [array count], @"Empty array"); } - (void)testMutableAssignArrayFirstRelease @@ -37,7 +37,7 @@ - (void)testMutableAssignArrayFirstRelease [array addObject:target]; } - STAssertNil(weakArray, @"Target should be dealloced"); + XCTAssertNil(weakArray, @"Target should be dealloced"); } - (void)testLastObject @@ -47,7 +47,7 @@ - (void)testLastObject NSObject *object = [NSObject new]; [array addObject:object]; - STAssertTrue(object == [array lastObject], @"Target should be dealloced"); + XCTAssertTrue(object == [array lastObject], @"Target should be dealloced"); } - (void)testContainsObject @@ -69,13 +69,13 @@ - (void)testContainsObject NSObject *object2 = [NSObject new]; [array addObject: object1]; - STAssertTrue ([array containsObject:object1], @"Array contains object1" ); - STAssertFalse([array containsObject:object2], @"Array no contains object2"); + XCTAssertTrue ([array containsObject:object1], @"Array contains object1" ); + XCTAssertFalse([array containsObject:object2], @"Array no contains object2"); } - STAssertTrue(onDeallocBlockCalled, @"EonDeallocBlock called"); - STAssertTrue(0 == [array count], @"Empty array"); - STAssertNil(object1Ptr, @"Empty array"); + XCTAssertTrue(onDeallocBlockCalled, @"EonDeallocBlock called"); + XCTAssertTrue(0 == [array count], @"Empty array"); + XCTAssertNil(object1Ptr, @"Empty array"); } } diff --git a/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignDictionaryTest.h b/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignDictionaryTest.h index ff38477..e2c95f8 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignDictionaryTest.h +++ b/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignDictionaryTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface JFFMutableAssignDictionaryTest : SenTestCase +@interface JFFMutableAssignDictionaryTest : XCTestCase @end \ No newline at end of file diff --git a/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignDictionaryTest.m b/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignDictionaryTest.m index acecfba..89787e2 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignDictionaryTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignDictionaryTest.m @@ -21,14 +21,14 @@ - (void)testMutableAssignDictionaryAssignIssue dict2 = [JFFMutableAssignDictionary new]; [dict2 setObject:target forKey:@"1"]; [dict2 setObject:target forKey:@"2"]; - - STAssertTrue(1 == [dict1 count], @"Contains 1 object"); - STAssertTrue(2 == [dict2 count], @"Contains 1 object"); + + XCTAssertTrue(1 == [dict1 count], @"Contains 1 object"); + XCTAssertTrue(2 == [dict2 count], @"Contains 1 object"); } - STAssertTrue(targetDeallocated, @"Target should be dealloced"); - STAssertTrue(0 == [dict1 count], @"Empty array"); - STAssertTrue(0 == [dict2 count], @"Empty array"); + XCTAssertTrue(targetDeallocated, @"Target should be dealloced"); + XCTAssertTrue(0 == [dict1 count], @"Empty array"); + XCTAssertTrue(0 == [dict2 count], @"Empty array"); } - (void)testMutableAssignDictionaryFirstRelease @@ -58,8 +58,8 @@ - (void)testMutableAssignDictionaryFirstRelease dict2[@"2"] = target; } - STAssertTrue(dictDeallocated1, @"Target should be dealloced"); - STAssertTrue(dictDeallocated2, @"Target should be dealloced"); + XCTAssertTrue(dictDeallocated1, @"Target should be dealloced"); + XCTAssertTrue(dictDeallocated2, @"Target should be dealloced"); } } @@ -80,29 +80,29 @@ -(void)testObjectForKey [dict setObject:object1 forKey:@"1"]; [dict setObject:object2 forKey:@"2"]; - STAssertTrue(dict[@"1" ] == object1, @"Dict contains object_"); - STAssertTrue(dict[@"2" ] == object2, @"Dict contains object_"); - STAssertTrue(dict[@"3" ] == nil, @"Dict no contains object for key \"2\""); + XCTAssertTrue(dict[@"1" ] == object1, @"Dict contains object_"); + XCTAssertTrue(dict[@"2" ] == object2, @"Dict contains object_"); + XCTAssertTrue(dict[@"3" ] == nil, @"Dict no contains object for key \"2\""); __block NSUInteger count = 0; [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { - if ([ key isEqualToString:@"1"]) { - STAssertTrue(obj == object1, nil); + if ( [ key isEqualToString: @"1" ] ) { + XCTAssertTrue(obj == object1); ++count; } else if ([key isEqualToString:@"2"]) { - STAssertTrue(obj == object2, nil); + XCTAssertTrue(obj == object2); ++count; } else { - STFail( @"should not be reached" ); + XCTFail( @"should not be reached" ); } } ]; - STAssertTrue( count == 2, @"Dict no contains object for key \"2\"" ); + XCTAssertTrue( count == 2, @"Dict no contains object for key \"2\"" ); } - STAssertTrue(target_deallocated, @"Target should be dealloced"); - STAssertTrue(0 == [dict count], @"Empty dict"); + XCTAssertTrue(target_deallocated, @"Target should be dealloced"); + XCTAssertTrue(0 == [dict count], @"Empty dict"); } } @@ -124,20 +124,20 @@ -(void)testReplaceObjectInDict dict[@"1"] = replacedObject; - STAssertTrue(dict[@"1"] == replacedObject, @"Dict contains object_"); - STAssertTrue(dict[@"2"] == nil, @"Dict no contains object for key \"2\""); + XCTAssertTrue(dict[@"1"] == replacedObject, @"Dict contains object_"); + XCTAssertTrue(dict[@"2"] == nil, @"Dict no contains object for key \"2\""); dict[@"1"] = object; - STAssertTrue([dict objectForKey:@"1"] == object, @"Dict contains object_"); + XCTAssertTrue([dict objectForKey:@"1"] == object, @"Dict contains object_"); } - STAssertTrue(replacedObjectDealloced, nil); + XCTAssertTrue(replacedObjectDealloced); NSObject *currentObject = [dict objectForKey:@"1"]; - STAssertTrue(currentObject == object, nil); + XCTAssertTrue(currentObject == object); } - STAssertTrue(0 == [dict count], @"Empty dict"); + XCTAssertTrue(0 == [dict count], @"Empty dict"); } - (void)testMapMethod @@ -153,23 +153,23 @@ - (void)testMapMethod return @(num * [key integerValue]); }]; - STAssertTrue([result count] == 3, nil); + XCTAssertTrue([result count] == 3); if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 6.) - STAssertFalse([result isKindOfClass:[NSMutableDictionary class]], nil); - STAssertTrue([result isKindOfClass:[NSDictionary class]], nil); + XCTAssertFalse([result isKindOfClass:[NSMutableDictionary class]]); + XCTAssertTrue([result isKindOfClass:[NSDictionary class]]); - STAssertEqualObjects(@1, result[@"1"], nil); - STAssertEqualObjects(@4, result[@"2"], nil); - STAssertEqualObjects(@9, result[@"3"], nil); + XCTAssertEqualObjects(@1, result[@"1"]); + XCTAssertEqualObjects(@4, result[@"2"]); + XCTAssertEqualObjects(@9, result[@"3"]); - STAssertThrows({ + XCTAssertThrows({ [dict map:^id(id key, id object) { NSUInteger num = [object unsignedIntegerValue]; if (num == 3) return nil; return @(num * 2); }]; - }, nil); + }); } - (void)testEnumerateKeysAndObjectsUsingBlock @@ -192,11 +192,11 @@ - (void)testEnumerateKeysAndObjectsUsingBlock [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { ++count; resultDict[key] = obj; - STAssertEqualObjects(obj, patternDict[key], nil); + XCTAssertEqualObjects(obj, patternDict[key]); }]; - STAssertTrue(count == 3, nil); - STAssertEqualObjects(resultDict, patternDict, nil); + XCTAssertTrue(count == 3); + XCTAssertEqualObjects(resultDict, patternDict); count = 0; @@ -206,7 +206,7 @@ - (void)testEnumerateKeysAndObjectsUsingBlock *stop = YES; }]; - STAssertTrue(count == 2, nil); + XCTAssertTrue(count == 2); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignKeyDictionaryTest.h b/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignKeyDictionaryTest.h index ed74fc7..504519c 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignKeyDictionaryTest.h +++ b/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignKeyDictionaryTest.h @@ -1,7 +1,4 @@ -#import - -#import - -@interface JFFMutableAssignKeyDictionaryTest : SenTestCase +#import +@interface JFFMutableAssignKeyDictionaryTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignKeyDictionaryTest.m b/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignKeyDictionaryTest.m index ae05b0f..b473b98 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignKeyDictionaryTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JFFMutableAssignKeyDictionaryTest.m @@ -29,13 +29,13 @@ -(void)testMutableAssignDictionaryAssignIssue dict2[target] = [NSObject new]; dict2[target] = [NSObject new]; - STAssertTrue(1 == [dict1 count], @"Contains 1 object"); - STAssertTrue(1 == [dict2 count], @"Contains 1 object"); + XCTAssertTrue(1 == [dict1 count], @"Contains 1 object"); + XCTAssertTrue(1 == [dict2 count], @"Contains 1 object"); } - STAssertTrue(targetDeallocated, @"Target should be dealloced"); - STAssertTrue(0 == [dict1 count], @"Empty array"); - STAssertTrue(0 == [dict2 count], @"Empty array"); + XCTAssertTrue(targetDeallocated, @"Target should be dealloced"); + XCTAssertTrue(0 == [dict1 count], @"Empty array"); + XCTAssertTrue(0 == [dict2 count], @"Empty array"); } - (void)testMutableAssignDictionaryFirstRelease @@ -66,8 +66,8 @@ - (void)testMutableAssignDictionaryFirstRelease dict2[target] = [NSObject new]; } - STAssertTrue(dictDeallocated1, @"Target should be dealloced"); - STAssertTrue(dictDeallocated2, @"Target should be dealloced"); + XCTAssertTrue(dictDeallocated1, @"Target should be dealloced"); + XCTAssertTrue(dictDeallocated2, @"Target should be dealloced"); } } @@ -94,29 +94,29 @@ -(void)testObjectForKey dict[key1] = object1; [dict setObject:object2 forKey:key2]; - STAssertTrue(dict[key1] == object1, @"Dict contains object_"); - STAssertTrue(dict[key2] == object2, @"Dict contains object_"); - STAssertTrue(dict[key3] == nil, @"Dict no contains object for key \"2\""); + XCTAssertTrue(dict[key1] == object1, @"Dict contains object_"); + XCTAssertTrue(dict[key2] == object2, @"Dict contains object_"); + XCTAssertTrue(dict[key3] == nil, @"Dict no contains object for key \"2\""); __block NSUInteger count = 0; [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { if ([key isEqual:key1]) { - STAssertTrue(obj == object1, nil); + XCTAssertTrue(obj == object1, @"pointers must be equal" ); ++count; } else if ([key isEqual:key2]) { - STAssertTrue(obj == object2, nil); + XCTAssertTrue(obj == object2, @"pointers must be equal"); ++count; } else { - STFail( @"should not be reached" ); + XCTFail( @"should not be reached" ); } }]; - STAssertTrue(count == 2, @"Dict no contains object for key \"2\""); + XCTAssertTrue(count == 2, @"Dict no contains object for key \"2\""); } - STAssertTrue(targetDeallocated, @"Target should be dealloced"); - STAssertTrue(0 == [dict count], @"Empty dict"); + XCTAssertTrue(targetDeallocated, @"Target should be dealloced"); + XCTAssertTrue(0 == [dict count], @"Empty dict"); } } @@ -138,26 +138,26 @@ - (void)testMapMethod return @(num * [key integerValue]); }]; - STAssertTrue([result count] == 3, nil); + XCTAssertTrue([result count] == 3, @"count mismatch"); if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 6.) { - STAssertFalse([result isKindOfClass:[NSMutableDictionary class]], nil); + XCTAssertFalse([result isKindOfClass:[NSMutableDictionary class]], @"dictionary class mismatch"); } - STAssertTrue([result isKindOfClass:[NSDictionary class]], nil); + XCTAssertTrue([result isKindOfClass:[NSDictionary class]], @"dictionary class mismatch"); - STAssertEqualObjects(@1, result[key1], nil); - STAssertEqualObjects(@4, result[key2], nil); - STAssertEqualObjects(@9, result[key3], nil); + XCTAssertEqualObjects(@1, result[key1], @"key1 mismatch"); + XCTAssertEqualObjects(@4, result[key2], @"key2 mismatch"); + XCTAssertEqualObjects(@9, result[key3], @"key3 mismatch"); - STAssertThrows({ + XCTAssertThrows({ [dict map:^id(id key, id object) { NSUInteger num = [object unsignedIntegerValue]; if (num == 3) return nil; return @(num * 2); }]; - }, nil); + }, @"assert expected"); } - (void)testEnumerateKeysAndObjectsUsingBlock @@ -185,11 +185,11 @@ - (void)testEnumerateKeysAndObjectsUsingBlock [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { ++count; resultDict[key] = obj; - STAssertEqualObjects(obj, patternDict[key], nil); + XCTAssertEqualObjects(obj, patternDict[key], @"incorrect pattern match"); }]; - STAssertTrue(count == 3, nil); - STAssertEqualObjects(resultDict, patternDict, nil); + XCTAssertTrue(count == 3, @"incorrect pattern count"); + XCTAssertEqualObjects(resultDict, patternDict, @"incorrect pattern dict"); count = 0; @@ -199,7 +199,7 @@ - (void)testEnumerateKeysAndObjectsUsingBlock *stop = YES; }]; - STAssertTrue(count == 2, nil); + XCTAssertTrue(count == 2, @"incorrect pattern count"); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFOnDeallocBlockOwnerTest.h b/lib/JFFUtils/JFFUtilsTest/JFFOnDeallocBlockOwnerTest.h index 0c988fb..0619fc4 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFOnDeallocBlockOwnerTest.h +++ b/lib/JFFUtils/JFFUtilsTest/JFFOnDeallocBlockOwnerTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface JFFOnDeallocBlockOwnerTest : SenTestCase +@interface JFFOnDeallocBlockOwnerTest : XCTestCase @end \ No newline at end of file diff --git a/lib/JFFUtils/JFFUtilsTest/JFFOnDeallocBlockOwnerTest.m b/lib/JFFUtils/JFFUtilsTest/JFFOnDeallocBlockOwnerTest.m index f69c495..9078d0d 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFOnDeallocBlockOwnerTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JFFOnDeallocBlockOwnerTest.m @@ -20,12 +20,12 @@ - (void)testOnDeallocBlockOwnerBehavior blockCalled = YES; } ]; - STAssertFalse(blockContextDeallocated && owner, @"Block context should not be dealloced"); - STAssertFalse(blockCalled, @"block should not be called here"); + XCTAssertFalse(blockContextDeallocated && owner, @"Block context should not be dealloced"); + XCTAssertFalse(blockCalled, @"block should not be called here"); } - STAssertTrue(blockContextDeallocated, @"Block context should be dealloced"); - STAssertTrue(blockCalled, @"block should be called here"); + XCTAssertTrue(blockContextDeallocated, @"Block context should be dealloced"); + XCTAssertTrue(blockCalled, @"block should be called here"); } - (void)testDoNotCallOnDeallocBlockAfterRemoveIt @@ -41,12 +41,12 @@ - (void)testDoNotCallOnDeallocBlockAfterRemoveIt [owner addOnDeallocBlock:onDeallocBloc]; - STAssertFalse(blockCalled, nil); + XCTAssertFalse(blockCalled); [owner removeOnDeallocBlock:onDeallocBloc]; } - STAssertFalse(blockCalled, nil); + XCTAssertFalse(blockCalled); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFRuntimeAddiotionsTest.h b/lib/JFFUtils/JFFUtilsTest/JFFRuntimeAddiotionsTest.h index 5abc5cb..843fa3b 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFRuntimeAddiotionsTest.h +++ b/lib/JFFUtils/JFFUtilsTest/JFFRuntimeAddiotionsTest.h @@ -1,5 +1,5 @@ -#import +#import -@interface JFFRuntimeAddiotionsTest : SenTestCase +@interface JFFRuntimeAddiotionsTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFRuntimeAddiotionsTest.m b/lib/JFFUtils/JFFUtilsTest/JFFRuntimeAddiotionsTest.m index 7ff87c3..3b98293 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFRuntimeAddiotionsTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JFFRuntimeAddiotionsTest.m @@ -28,7 +28,7 @@ - (void)testWeakOwnerDynamicProperty { TestWeakOwnerClass *owner = [TestWeakOwnerClass new]; - STAssertNil(owner.dynamicWeakOwnedObject, nil); + XCTAssertNil(owner.dynamicWeakOwnedObject, @"memory leak"); @autoreleasepool { @@ -36,14 +36,14 @@ - (void)testWeakOwnerDynamicProperty NSObject *owned2 = [NSObject new]; owner.dynamicWeakOwnedObject = owned; - STAssertNotNil(owner.dynamicWeakOwnedObject, nil); + XCTAssertNotNil(owner.dynamicWeakOwnedObject, @"memory leak"); owner.normalWeakOwnedObject = owned2; - STAssertNotNil(owner.normalWeakOwnedObject, nil); + XCTAssertNotNil(owner.normalWeakOwnedObject, @"memory management issue"); } - STAssertNil(owner.dynamicWeakOwnedObject, nil); - STAssertNil(owner.normalWeakOwnedObject, nil); + XCTAssertNil(owner.dynamicWeakOwnedObject, @"memory leak"); + XCTAssertNil(owner.normalWeakOwnedObject, @"memory leak"); } @autoreleasepool @@ -53,10 +53,10 @@ - (void)testWeakOwnerDynamicProperty @autoreleasepool { TestWeakOwnerClass *owner = [TestWeakOwnerClass new]; - STAssertNil(owner.dynamicWeakOwnedObject, nil); + XCTAssertNil(owner.dynamicWeakOwnedObject, @"memory leak"); owner.dynamicWeakOwnedObject = owned; - STAssertNotNil(owner.dynamicWeakOwnedObject, nil); + XCTAssertNotNil(owner.dynamicWeakOwnedObject, @"memory leak"); } } } diff --git a/lib/JFFUtils/JFFUtilsTest/JFFSimpleBlockHolderTest.h b/lib/JFFUtils/JFFUtilsTest/JFFSimpleBlockHolderTest.h index 44e7904..1b43c31 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFSimpleBlockHolderTest.h +++ b/lib/JFFUtils/JFFUtilsTest/JFFSimpleBlockHolderTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface JFFSimpleBlockHolderTest : SenTestCase +@interface JFFSimpleBlockHolderTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFSimpleBlockHolderTest.m b/lib/JFFUtils/JFFUtilsTest/JFFSimpleBlockHolderTest.m index c3914f7..390baff 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFSimpleBlockHolderTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JFFSimpleBlockHolderTest.m @@ -10,8 +10,8 @@ -(void)setUp -(void)testSimpleBlockHolderBehavior { @autoreleasepool { - JFFSimpleBlockHolder* holder = [ JFFSimpleBlockHolder new ]; - STAssertTrue( 0 != [ JFFSimpleBlockHolder instancesCount ], @"Block holder should exists" ); + JFFSimpleBlockHolder *holder = [JFFSimpleBlockHolder new]; + XCTAssertTrue( 0 != [ JFFSimpleBlockHolder instancesCount ], @"Block holder should exists" ); __block BOOL blockContextDeallocated = NO; __block NSUInteger performBlockCount = 0; @@ -36,12 +36,12 @@ -(void)testSimpleBlockHolderBehavior holder.onceSimpleBlock(); } - STAssertTrue(blockContextDeallocated, @"Block context should be dealloced"); - STAssertTrue(1 == performBlockCount, @"Block was called once"); - STAssertTrue(nil == holder.simpleBlock, @"Block is nil after call"); + XCTAssertTrue(blockContextDeallocated, @"Block context should be dealloced"); + XCTAssertTrue(1 == performBlockCount, @"Block was called once"); + XCTAssertTrue(nil == holder.simpleBlock, @"Block is nil after call"); } - STAssertTrue( 0 == [ JFFSimpleBlockHolder instancesCount ], @"Block holder should be dealloced" ); + XCTAssertTrue( 0 == [ JFFSimpleBlockHolder instancesCount ], @"Block holder should be dealloced" ); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFStringFormatTest.h b/lib/JFFUtils/JFFUtilsTest/JFFStringFormatTest.h index 7eca27c..f327ef5 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFStringFormatTest.h +++ b/lib/JFFUtils/JFFUtilsTest/JFFStringFormatTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface JFFStringFormatTest : SenTestCase +@interface JFFStringFormatTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFStringFormatTest.m b/lib/JFFUtils/JFFUtilsTest/JFFStringFormatTest.m index ec59220..c2de1d9 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFStringFormatTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JFFStringFormatTest.m @@ -9,7 +9,7 @@ - (void)testNotAllParamsPresent NSString *param2 = @"2"; NSString *result = [NSString stringWithFormatCheckNill:format, param1, param2, nil]; - STAssertTrue(result != nil, @"Should NOT be nil value"); + XCTAssertTrue(result != nil, @"Should NOT be nil value"); } - (void)testOneMoreParam @@ -20,7 +20,7 @@ - (void)testOneMoreParam NSString *param3 = @"3"; NSString *result = [NSString stringWithFormatCheckNill:format, param1, param2, param3, nil]; - STAssertTrue(result != nil, @"Should NOT be nil value"); + XCTAssertTrue(result != nil, @"Should NOT be nil value"); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/JFFUtilsTest-Info.plist b/lib/JFFUtils/JFFUtilsTest/JFFUtilsTest-Info.plist index b80638c..69e7088 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFUtilsTest-Info.plist +++ b/lib/JFFUtils/JFFUtilsTest/JFFUtilsTest-Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.EmbeddedSources.${PRODUCT_NAME:rfc1034identifier} + org.iAsync.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType diff --git a/lib/JFFUtils/JFFUtilsTest/JFFUtilsTest-Prefix.pch b/lib/JFFUtils/JFFUtilsTest/JFFUtilsTest-Prefix.pch index 2451aaa..e0203b6 100644 --- a/lib/JFFUtils/JFFUtilsTest/JFFUtilsTest-Prefix.pch +++ b/lib/JFFUtils/JFFUtilsTest/JFFUtilsTest-Prefix.pch @@ -1,10 +1,12 @@ // -// Prefix header for all source files of the 'JFFUtilsTest' target in the 'JFFUtilsTest' project +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. // #ifdef __OBJC__ - #import #import + #import #import #import diff --git a/lib/JFFUtils/JFFUtilsTest/JUArrayAdditionsTest.h b/lib/JFFUtils/JFFUtilsTest/JUArrayAdditionsTest.h index 018d2f8..c46b1dc 100644 --- a/lib/JFFUtils/JFFUtilsTest/JUArrayAdditionsTest.h +++ b/lib/JFFUtils/JFFUtilsTest/JUArrayAdditionsTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface JUArrayAdditionsTest : SenTestCase +@interface JUArrayAdditionsTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/JUArrayAdditionsTest.m b/lib/JFFUtils/JFFUtilsTest/JUArrayAdditionsTest.m index 972d5f4..5545bb6 100644 --- a/lib/JFFUtils/JFFUtilsTest/JUArrayAdditionsTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JUArrayAdditionsTest.m @@ -24,7 +24,7 @@ -(void)testIsEqualVersionWorksCorrectly , @"habra" , @"ABra"]; - STAssertTrue( [ received isEqualToArray: expected ], @"Arrays mismatch" ); + XCTAssertTrue( [ received isEqualToArray: expected ], @"Arrays mismatch" ); } { @@ -44,7 +44,7 @@ -(void)testIsEqualVersionWorksCorrectly , @"four" , @"five" ]; - STAssertTrue( [ received isEqualToArray: expected ], @"Arrays mismatch" ); + XCTAssertTrue( [ received isEqualToArray: expected ], @"Arrays mismatch" ); } } @@ -60,7 +60,7 @@ -(void)testIsEqualVersionWorksWithEmptyArray received = [items unique]; expected = items; - STAssertTrue( [ received isEqualToArray: expected], @"Arrays mismatch" ); + XCTAssertTrue( [ received isEqualToArray: expected], @"Arrays mismatch" ); } } @@ -97,7 +97,7 @@ -(void)testBlockVersionWorksCorrectly , @"kadabra" , @"habra" ]; - STAssertTrue( [ received_ isEqualToArray: expected_ ], @"Arrays mismatch" ); + XCTAssertTrue( [ received_ isEqualToArray: expected_ ], @"Arrays mismatch" ); } { @@ -117,7 +117,7 @@ -(void)testBlockVersionWorksCorrectly , @"four" , @"five" ]; - STAssertTrue( [ received_ isEqualToArray: expected_ ], @"Arrays mismatch" ); + XCTAssertTrue( [ received_ isEqualToArray: expected_ ], @"Arrays mismatch" ); } } diff --git a/lib/JFFUtils/JFFUtilsTest/JUMutableArrayTest.h b/lib/JFFUtils/JFFUtilsTest/JUMutableArrayTest.h index ad0c391..e344190 100644 --- a/lib/JFFUtils/JFFUtilsTest/JUMutableArrayTest.h +++ b/lib/JFFUtils/JFFUtilsTest/JUMutableArrayTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface JUMutableArrayTest : SenTestCase +@interface JUMutableArrayTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/JUMutableArrayTest.m b/lib/JFFUtils/JFFUtilsTest/JUMutableArrayTest.m index c2a12dd..8b6a04c 100644 --- a/lib/JFFUtils/JFFUtilsTest/JUMutableArrayTest.m +++ b/lib/JFFUtils/JFFUtilsTest/JUMutableArrayTest.m @@ -6,12 +6,12 @@ -(void)testEmptyArrayRemainsEmptyOnShrink { NSMutableArray* items_ = [ @[] mutableCopy ]; - STAssertNotNil( items_ , @"Array should be empty" ); - STAssertTrue ( 0 == [ items_ count ], @"Array should be empty" ); + XCTAssertNotNil( items_ , @"Array should be empty" ); + XCTAssertTrue ( 0 == [ items_ count ], @"Array should be empty" ); [ items_ shrinkToSize: 234 ]; - STAssertNotNil( items_ , @"Array should be empty" ); - STAssertTrue ( 0 == [ items_ count ], @"Array should be empty" ); + XCTAssertNotNil( items_ , @"Array should be empty" ); + XCTAssertTrue ( 0 == [ items_ count ], @"Array should be empty" ); } -(void)testArrayBecomesEmptyForZeroArg @@ -24,12 +24,12 @@ -(void)testArrayBecomesEmptyForZeroArg , @"six" , @"seven" ] mutableCopy ]; - STAssertNotNil( items_ , @"Array should be valid" ); - STAssertTrue ( 7 == [ items_ count ], @"Array should have 7 items" ); + XCTAssertNotNil( items_ , @"Array should be valid" ); + XCTAssertTrue ( 7 == [ items_ count ], @"Array should have 7 items" ); [ items_ shrinkToSize: 0 ]; - STAssertNotNil( items_ , @"Array should be empty" ); - STAssertTrue ( 0 == [ items_ count ], @"Array should be empty" ); + XCTAssertNotNil( items_ , @"Array should be empty" ); + XCTAssertTrue ( 0 == [ items_ count ], @"Array should be empty" ); } -(void)testArrayDoesNotGrowOnShrinks @@ -45,14 +45,14 @@ -(void)testArrayDoesNotGrowOnShrinks , @"six" , @"seven" ] mutableCopy ]; - STAssertNotNil( items_ , @"Array should be valid" ); - STAssertTrue ( 7 == [ items_ count ], @"Array should have 7 items" ); + XCTAssertNotNil( items_ , @"Array should be valid" ); + XCTAssertTrue ( 7 == [ items_ count ], @"Array should have 7 items" ); [ items_ shrinkToSize: 100 ]; - STAssertNotNil( items_ , @"Array should be valid" ); - STAssertTrue ( 7 == [ items_ count ], @"Array should have 7 items" ); + XCTAssertNotNil( items_ , @"Array should be valid" ); + XCTAssertTrue ( 7 == [ items_ count ], @"Array should have 7 items" ); - STAssertTrue( [ [ items_ lastObject ] isEqualToString: @"seven" ], @"Last item mismatch" ); + XCTAssertTrue( [ [ items_ lastObject ] isEqualToString: @"seven" ], @"Last item mismatch" ); } } @@ -68,15 +68,15 @@ -(void)testArrayShrinksCorrectly , @"five" , @"six" , @"seven" ] mutableCopy ]; + + XCTAssertNotNil( items , @"Array should be valid" ); + XCTAssertTrue ( 7 == [ items count ], @"Array should have 7 items" ); - STAssertNotNil( items , @"Array should be valid" ); - STAssertTrue ( 7 == [ items count ], @"Array should have 7 items" ); - - [items shrinkToSize:3]; - STAssertNotNil( items , @"Array should be valid" ); - STAssertTrue ( 3 == [ items count ], @"Array should have 3 items" ); + [ items shrinkToSize: 3 ]; + XCTAssertNotNil( items , @"Array should be valid" ); + XCTAssertTrue ( 3 == [ items count ], @"Array should have 3 items" ); - STAssertTrue( [ [ items lastObject ] isEqualToString: @"three" ], @"Last item mismatch" ); + XCTAssertTrue( [ [ items lastObject ] isEqualToString: @"three" ], @"Last item mismatch" ); } { @@ -87,15 +87,15 @@ -(void)testArrayShrinksCorrectly , @"five" , @"six" , @"seven" ] mutableCopy ]; - - STAssertNotNil( items , @"Array should be valid" ); - STAssertTrue ( 7 == [ items count ], @"Array should have 7 items" ); + + XCTAssertNotNil( items , @"Array should be valid" ); + XCTAssertTrue ( 7 == [ items count ], @"Array should have 7 items" ); [ items shrinkToSize: 5 ]; - STAssertNotNil( items , @"Array should be valid" ); - STAssertTrue ( 5 == [ items count ], @"Array should have 5 items" ); + XCTAssertNotNil( items , @"Array should be valid" ); + XCTAssertTrue ( 5 == [ items count ], @"Array should have 5 items" ); - STAssertTrue( [ [ items lastObject ] isEqualToString: @"five" ], @"Last item mismatch" ); + XCTAssertTrue( [ [ items lastObject ] isEqualToString: @"five" ], @"Last item mismatch" ); } } diff --git a/lib/JFFUtils/JFFUtilsTest/MethodObserverTest.h b/lib/JFFUtils/JFFUtilsTest/MethodObserverTest.h index 95b6944..abe1243 100644 --- a/lib/JFFUtils/JFFUtilsTest/MethodObserverTest.h +++ b/lib/JFFUtils/JFFUtilsTest/MethodObserverTest.h @@ -1,5 +1,5 @@ -#import +#import -@interface MethodObserverTest : SenTestCase +@interface MethodObserverTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/MethodObserverTest.m b/lib/JFFUtils/JFFUtilsTest/MethodObserverTest.m index 6f76650..c9b2d5c 100644 --- a/lib/JFFUtils/JFFUtilsTest/MethodObserverTest.m +++ b/lib/JFFUtils/JFFUtilsTest/MethodObserverTest.m @@ -49,12 +49,15 @@ - (NSString *)returnObjectForArg1:(NSRange)arg1 arg3:(float)arg3 arg4:(double)arg4 { - return [[NSString alloc] initWithFormat:@"arg1: %@ arg2: %@ arg3: %f arg4: %f", + NSString* result = + [[NSString alloc] initWithFormat:@"arg1: %@ arg2: {%.1f, %.1f} arg3: %1f arg4: %1f", NSStringFromRange(arg1), - NSStringFromCGPoint(arg2), + arg2.x, arg2.y, arg3, arg4 ]; + + return result; } - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event @@ -316,8 +319,8 @@ - (void)testPointInsideWithEventMethod return ^BOOL(id _self, CGPoint point, UIEvent *event) { - STAssertEqualObjects(NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(point), nil); - STAssertTrue(originalEvent == event, nil); + XCTAssertEqualObjects(NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(point), @"points mismatch"); + XCTAssertTrue(originalEvent == event, @"pointer mismatch" ); hookWasCalled = YES; @@ -325,10 +328,10 @@ - (void)testPointInsideWithEventMethod BOOL previousResult = previousImplementation(_self, point, event); - STAssertEqualObjects(NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(weakTestObject.point), nil); - STAssertTrue(originalEvent == weakTestObject.event, nil); + XCTAssertEqualObjects(NSStringFromCGPoint(originalPoint), NSStringFromCGPoint(weakTestObject.point), @"points mismatch"); + XCTAssertTrue(originalEvent == weakTestObject.event, @"pointer mismatch"); - STAssertTrue(previousResult, nil); + XCTAssertTrue(previousResult, @"previousResult mismatch"); return NO; }; @@ -342,9 +345,9 @@ - (void)testPointInsideWithEventMethod BOOL result = [testObject pointInside:originalPoint withEvent:originalEvent]; - STAssertFalse(result, nil); + XCTAssertFalse(result, @"point must be outside" ); - STAssertTrue(hookWasCalled, nil); + XCTAssertTrue(hookWasCalled, @"hook call missed" ); } //test normal call @@ -356,9 +359,9 @@ - (void)testPointInsideWithEventMethod BOOL result = [testObject pointInside:originalPoint withEvent:originalEvent]; - STAssertTrue(result, nil); + XCTAssertTrue(result, @"point inside musmatch"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory management issue"); } } @@ -380,8 +383,8 @@ - (void)testVoidReturnTypeCall previousImplementation(_self, arg, str); - STAssertEquals((NSUInteger)24, *arg, nil); - STAssertEqualObjects(@"32", str, nil); + XCTAssertEqual((NSUInteger)24, *arg, @"unexpected arg"); + XCTAssertEqualObjects(@"32", str, @"unexpected arg"); *arg = 11; }; @@ -398,9 +401,9 @@ - (void)testVoidReturnTypeCall [testObject mutStateOnArgPtr:&originalArg str:@"32"]; - STAssertEquals((NSUInteger)11, originalArg, nil); + XCTAssertEqual((NSUInteger)11, originalArg, @"unexpected arg"); - STAssertTrue(hookWasCalled, nil); + XCTAssertTrue(hookWasCalled, @"hook call missed"); } //test normal call @@ -418,9 +421,9 @@ - (void)testVoidReturnTypeCall id result = [testObject returnObjectForIntegerPoint:NSMakeRange(2, 3) arg:originalArg]; - STAssertEqualObjects(@(originalArg * originalState), result, nil); + XCTAssertEqualObjects(@(originalArg * originalState), result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } } @@ -445,9 +448,9 @@ - (void)testSimpleExample NSUInteger previousResult = previousImplementation(_self, arg); - STAssertEquals((NSUInteger)24, previousResult, nil); + XCTAssertEqual((NSUInteger)24, previousResult, @"unexpected arg"); - STAssertEquals((NSUInteger)12, arg, nil); + XCTAssertEqual((NSUInteger)12, arg, @"unexpected arg"); return 11; }; }; @@ -461,9 +464,9 @@ - (void)testSimpleExample NSUInteger result = [testObject mutStateOnArg:originalArg]; - STAssertEquals((NSUInteger)11, result, nil); + XCTAssertEqual((NSUInteger)11, result, @"unexpected arg"); - STAssertTrue(hookWasCalled, nil); + XCTAssertTrue(hookWasCalled, @"hook call missed"); } //test normal call @@ -481,15 +484,15 @@ - (void)testSimpleExample NSUInteger result = [testObject mutStateOnArg:originalArg]; - STAssertEquals((NSUInteger)30, result, nil); + XCTAssertEqual((NSUInteger)30, result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } } - (void)testSignatures { - id block = ^NSObject *(id _self, NSUInteger arg, NSRange point) { + id block = ^id(id _self, NSUInteger arg, NSRange point) { return nil; }; @@ -500,13 +503,13 @@ - (void)testSignatures NSMethodSignature *methodSig = [NSMethodSignature signatureWithObjCTypes:methodSinature]; NSMethodSignature *blockSig = [NSMethodSignature signatureWithObjCTypes:blockSinature ]; - STAssertTrue(strcmp(methodSig.methodReturnType, blockSig.methodReturnType) == 0, nil); - STAssertTrue(methodSig.numberOfArguments == blockSig.numberOfArguments, nil); - STAssertTrue(methodSig.frameLength == blockSig.frameLength, nil); + XCTAssertTrue(strcmp(methodSig.methodReturnType, blockSig.methodReturnType) == 0, @"methodReturnType mismatch"); + XCTAssertTrue(methodSig.numberOfArguments == blockSig.numberOfArguments, @"numberOfArguments mismatch"); + XCTAssertTrue(methodSig.frameLength == blockSig.frameLength, @"frameLength mismatch"); for (NSUInteger index = 2; index < methodSig.numberOfArguments; ++index) { - STAssertTrue(strcmp([methodSig getArgumentTypeAtIndex:index], [blockSig getArgumentTypeAtIndex:index]) == 0, @"parameter mismatch"); + XCTAssertTrue(strcmp([methodSig getArgumentTypeAtIndex:index], [blockSig getArgumentTypeAtIndex:index]) == 0, @"parameter mismatch"); } } @@ -517,11 +520,11 @@ - (void)testDynamicBlockInvocation_DynamicArgumentsOrder NSObject *(^block)(id _self, NSRange point, NSRange point2) = ^NSObject *(id _self, NSRange point, NSRange point2) { - STAssertEquals(originalRange1.length, point.length, nil); - STAssertEquals(originalRange1.location, point.location, nil); + XCTAssertEqual(originalRange1.length, point.length, @"length mismatch"); + XCTAssertEqual(originalRange1.location, point.location, @"location mismatch"); - STAssertEquals(originalRange2.length, point2.length, nil); - STAssertEquals(originalRange2.location, point2.location, nil); + XCTAssertEqual(originalRange2.length, point2.length, @"length mismatch"); + XCTAssertEqual(originalRange2.location, point2.location, @"location mismatch"); //return (__bridge NSObject *)(CFRetain((__bridge_retained CFTypeRef)@3)); return @"12"; @@ -559,7 +562,7 @@ - (void)testDynamicBlockInvocation_DynamicArgumentsOrder id result = [obj returnObjectForIntegerPoint:originalRange1 point:originalRange2]; - STAssertEqualObjects(@"12", result, nil); + XCTAssertEqualObjects(@"12", result, @"unexpected arg"); } //- (NSObject *)returnObjectForIntegerPoint:(NSRange)point @@ -590,7 +593,7 @@ - (void)testHookExistedMethodWithLotOfArgs { id previousResult = previousBlock(_self, arg1, arg2, arg3, arg4); - STAssertEqualObjects(@"arg1: {7, 8} arg2: {4.5, 6.7} arg3: 3.200000 arg4: 2.300000", previousResult, nil); + XCTAssertEqualObjects(@"arg1: {7, 8} arg2: {4.5, 6.7} arg3: 3.200000 arg4: 2.300000", previousResult, @"unexpected format"); } return @"1"; @@ -613,11 +616,11 @@ - (void)testHookExistedMethodWithLotOfArgs arg3:3.2 arg4:2.3]; - STAssertEqualObjects(@"1", result, nil); + XCTAssertEqualObjects(@"1", result, @"bad result"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); } - (void)testHookExistedMethodWithObjectPointerReturnType @@ -642,10 +645,10 @@ - (void)testHookExistedMethodWithObjectPointerReturnType { id previousResult = previousBlock(_self, point, arg); - STAssertEqualObjects(@(originalArg * originalState), previousResult, nil); + XCTAssertEqualObjects(@(originalArg * originalState), previousResult, @"unexpected arg"); } - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"unexpected arg"); return @(originalArg); }; }; @@ -663,11 +666,11 @@ - (void)testHookExistedMethodWithObjectPointerReturnType id result = [testObject returnObjectForIntegerPoint:NSMakeRange(2, 3) arg:originalArg]; - STAssertEqualObjects(@(originalArg), result, nil); + XCTAssertEqualObjects(@(originalArg), result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); } //test normal call { @@ -684,9 +687,9 @@ - (void)testHookExistedMethodWithObjectPointerReturnType id result = [testObject returnObjectForIntegerPoint:NSMakeRange(2, 3) arg:originalArg]; - STAssertEqualObjects(@(originalArg * originalState), result, nil); + XCTAssertEqualObjects(@(originalArg * originalState), result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } } @@ -708,9 +711,9 @@ - (void)testHookNotExistedMethodWithObjectPointerReturnType BlockObserver previousBlock = previousBlockGetter(); - STAssertNil(previousBlock, @"no original method"); + XCTAssertNil(previousBlock, @"no original method"); - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(originalArg) stringValue]; }; }; @@ -726,11 +729,11 @@ - (void)testHookNotExistedMethodWithObjectPointerReturnType id result = [testObject returnObjectForIntegerPoint2:NSMakeRange(2, 3) arg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg" ); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); } //test normal call @@ -747,16 +750,16 @@ - (void)testHookNotExistedMethodWithObjectPointerReturnType testObject.state = originalState; //todo fix? - STAssertTrue([testObject respondsToSelector:@selector(returnObjectForIntegerPoint2:arg:)], nil); + XCTAssertTrue([testObject respondsToSelector:@selector(returnObjectForIntegerPoint2:arg:)], @"method missing"); - STAssertThrows({ + XCTAssertThrows({ [testObject returnObjectForIntegerPoint2:NSMakeRange(2, 3) arg:originalArg]; - }, nil); + }, @"method missing"); - //STAssertEqualObjects([@(originalArg * originalState) stringValue], result, nil); + //XCTAssertEqualObjects([@(originalArg * originalState) stringValue], result, nil); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } } @@ -779,9 +782,9 @@ - (void)testCase1_a BlockObserver previousBlock = previousBlockGetter(); - STAssertNil(previousBlock, @"no original method"); + XCTAssertNil(previousBlock, @"no original method"); - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(originalArg) stringValue]; }; }; @@ -797,11 +800,11 @@ - (void)testCase1_a id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); } //test normal call for child @@ -815,14 +818,14 @@ - (void)testCase1_a weakTestObject = testObject; //todo fix? - STAssertTrue([testObject respondsToSelector:@selector(returnObjectForArg:)], nil); + XCTAssertTrue([testObject respondsToSelector:@selector(returnObjectForArg:)], @"method missing"); - STAssertThrows({ + XCTAssertThrows({ [testObject returnObjectForArg:originalArg]; - }, nil); + }, @"unexpected arg"); - //STAssertEqualObjects([@(originalArg * originalState) stringValue], result, nil); + //XCTAssertEqualObjects([@(originalArg * originalState) stringValue], result, nil); } } @@ -836,14 +839,14 @@ - (void)testCase1_a ParentTestClassCase1_a *testObject = [ParentTestClassCase1_a new]; weakTestObject = testObject; - STAssertFalse([testObject respondsToSelector:@selector(returnObjectForArg:)], nil); + XCTAssertFalse([testObject respondsToSelector:@selector(returnObjectForArg:)], @"method missing"); - STAssertThrows({ + XCTAssertThrows({ [testObject returnObjectForArg:originalArg]; - }, nil); + }, @"unexpected arg"); - //STAssertEqualObjects([@(originalArg * originalState) stringValue], result, nil); + //XCTAssertEqualObjects([@(originalArg * originalState) stringValue], result, nil); } } } @@ -868,9 +871,9 @@ - (void)testCase1_b BlockObserver previousBlock = previousBlockGetter(); - STAssertNil(previousBlock, @"no original method"); + XCTAssertNil(previousBlock, @"no original method"); - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(originalArg) stringValue]; }; }; @@ -886,11 +889,11 @@ - (void)testCase1_b id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); }; hookTest(); @@ -907,12 +910,12 @@ - (void)testCase1_b weakTestObject = testObject; //todo fix? - STAssertTrue([testObject respondsToSelector:@selector(returnObjectForArg:)], nil); + XCTAssertTrue([testObject respondsToSelector:@selector(returnObjectForArg:)], @"missing method"); - STAssertThrows({ + XCTAssertThrows({ [testObject returnObjectForArg:originalArg]; - }, nil); + }, @"assert expected"); } } @@ -927,12 +930,12 @@ - (void)testCase1_b weakTestObject = testObject; //todo fix? - STAssertTrue([testObject respondsToSelector:@selector(returnObjectForArg:)], nil); + XCTAssertTrue([testObject respondsToSelector:@selector(returnObjectForArg:)], @"missing method"); - STAssertThrows({ + XCTAssertThrows({ [testObject returnObjectForArg:originalArg]; - }, nil); + }, @"assert expected"); } } } @@ -961,10 +964,10 @@ - (void)testCase2_a { id previousResult = previousBlock(_self, arg); - STAssertEqualObjects([@(originalArg) stringValue], previousResult, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], previousResult, @"arg mismatch"); } - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(internalResult) stringValue]; }; }; @@ -980,11 +983,11 @@ - (void)testCase2_a id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(internalResult) stringValue], result, nil); + XCTAssertEqualObjects([@(internalResult) stringValue], result, @"arg mismatch"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); }; firstHookTest(); @@ -1000,9 +1003,9 @@ - (void)testCase2_a id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } //test normal call { @@ -1014,12 +1017,12 @@ - (void)testCase2_a ParentTestClassCase2_a *testObject = [ParentTestClassCase2_a new]; weakTestObject = testObject; - STAssertThrows({ + XCTAssertThrows({ [testObject returnObjectForArg:originalArg]; - }, nil); + }, @"assert expected"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } //hook parent @@ -1037,9 +1040,9 @@ - (void)testCase2_a hookWasCalled = YES; BlockObserver previousBlock = previousBlockGetter(); - STAssertNil(previousBlock, nil); + XCTAssertNil(previousBlock, @"previous block missing"); - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(arg) stringValue]; }; }; @@ -1055,11 +1058,11 @@ - (void)testCase2_a id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); } firstHookTest(); @@ -1085,9 +1088,9 @@ - (void)testCase2_b hookWasCalled = YES; BlockObserver previousBlock = previousBlockGetter(); - STAssertNil(previousBlock, nil); + XCTAssertNil(previousBlock, @"previous block missing"); - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(internalResult) stringValue]; }; }; @@ -1103,11 +1106,11 @@ - (void)testCase2_b id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(internalResult) stringValue], result, nil); + XCTAssertEqualObjects([@(internalResult) stringValue], result, @"arg mismatch"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); }; firstHookTest(); @@ -1123,9 +1126,9 @@ - (void)testCase2_b id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } //test normal call { @@ -1137,12 +1140,12 @@ - (void)testCase2_b ParentTestClassCase2_a *testObject = [ParentTestClassCase2_a new]; weakTestObject = testObject; - STAssertThrows({ + XCTAssertThrows({ [testObject returnObjectForArg:originalArg]; - }, nil); + }, @"assert expected"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } //hook child @@ -1164,10 +1167,10 @@ - (void)testCase2_b { id previousResult = previousBlock(_self, arg); - STAssertEqualObjects([@(originalArg) stringValue], previousResult, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], previousResult, @"arg mismatch"); } - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(arg) stringValue]; }; }; @@ -1183,11 +1186,11 @@ - (void)testCase2_b id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); } firstHookTest(); @@ -1217,10 +1220,10 @@ - (void)testCase3_a { id previousResult = previousBlock(_self, arg); - STAssertEqualObjects([@(originalArg) stringValue], previousResult, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], previousResult, @"arg mismatch"); } - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(internalResult) stringValue]; }; }; @@ -1236,11 +1239,11 @@ - (void)testCase3_a id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(internalResult) stringValue], result, nil); + XCTAssertEqualObjects([@(internalResult) stringValue], result, @"arg mismatch"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); }; firstHookTest(); @@ -1256,9 +1259,9 @@ - (void)testCase3_a id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } //test normal call { @@ -1272,9 +1275,9 @@ - (void)testCase3_a id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } //hook parent @@ -1296,10 +1299,10 @@ - (void)testCase3_a { id previousResult = previousBlock(_self, arg); - STAssertEqualObjects([@(originalArg) stringValue], previousResult, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], previousResult, @"arg mismatch"); } - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(arg) stringValue]; }; }; @@ -1315,11 +1318,11 @@ - (void)testCase3_a id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); } firstHookTest(); @@ -1349,10 +1352,10 @@ - (void)testCase3_b { id previousResult = previousBlock(_self, arg); - STAssertEqualObjects([@(originalArg) stringValue], previousResult, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], previousResult, @"arg mismatch"); } - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(internalResult) stringValue]; }; }; @@ -1368,11 +1371,11 @@ - (void)testCase3_b id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(internalResult) stringValue], result, nil); + XCTAssertEqualObjects([@(internalResult) stringValue], result, @"arg mismatch"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); }; firstHookTest(); @@ -1388,9 +1391,9 @@ - (void)testCase3_b id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } //test normal call { @@ -1404,9 +1407,9 @@ - (void)testCase3_b id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } //hook parent @@ -1428,10 +1431,10 @@ - (void)testCase3_b { id previousResult = previousBlock(_self, arg); - STAssertEqualObjects([@(originalArg) stringValue], previousResult, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], previousResult, @"arg mismatch"); } - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(arg) stringValue]; }; }; @@ -1447,11 +1450,11 @@ - (void)testCase3_b id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); } firstHookTest(); @@ -1481,10 +1484,10 @@ - (void)testCase4_a { id previousResult = previousBlock(_self, arg); - STAssertEqualObjects([@(originalArg * 2) stringValue], previousResult, nil); + XCTAssertEqualObjects([@(originalArg * 2) stringValue], previousResult, @"arg mismatch"); } - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(internalResult) stringValue]; }; }; @@ -1500,11 +1503,11 @@ - (void)testCase4_a id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(internalResult) stringValue], result, nil); + XCTAssertEqualObjects([@(internalResult) stringValue], result, @"arg mismatch"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); }; firstHookTest(); @@ -1520,9 +1523,9 @@ - (void)testCase4_a id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg * 2) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg * 2) stringValue], result, @"arg mismatch"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } //test normal call { @@ -1536,9 +1539,9 @@ - (void)testCase4_a id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } //hook child @@ -1560,10 +1563,10 @@ - (void)testCase4_a { id previousResult = previousBlock(_self, arg); - STAssertEqualObjects([@(originalArg) stringValue], previousResult, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], previousResult, @"arg mismatch"); } - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(arg) stringValue]; }; }; @@ -1579,11 +1582,11 @@ - (void)testCase4_a id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); } firstHookTest(); @@ -1613,10 +1616,10 @@ - (void)testCase4_b { id previousResult = previousBlock(_self, arg); - STAssertEqualObjects([@(originalArg) stringValue], previousResult, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], previousResult, @"arg mismatch"); } - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(internalResult) stringValue]; }; }; @@ -1632,11 +1635,11 @@ - (void)testCase4_b id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(internalResult) stringValue], result, nil); + XCTAssertEqualObjects([@(internalResult) stringValue], result, @"arg mismatch"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); }; firstHookTest(); @@ -1652,9 +1655,9 @@ - (void)testCase4_b id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg * 2) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg * 2) stringValue], result, @"arg mismatch"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } //test normal call { @@ -1668,9 +1671,9 @@ - (void)testCase4_b id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); + XCTAssertNil(weakTestObject, @"memory leak"); } //hook child @@ -1692,10 +1695,10 @@ - (void)testCase4_b { id previousResult = previousBlock(_self, arg); - STAssertEqualObjects([@(originalArg * 2) stringValue], previousResult, nil); + XCTAssertEqualObjects([@(originalArg * 2) stringValue], previousResult, @"arg mismatch"); } - STAssertEquals(originalArg, arg, nil); + XCTAssertEqual(originalArg, arg, @"arg mismatch"); return [@(arg) stringValue]; }; }; @@ -1711,11 +1714,11 @@ - (void)testCase4_b id result = [testObject returnObjectForArg:originalArg]; - STAssertEqualObjects([@(originalArg) stringValue], result, nil); + XCTAssertEqualObjects([@(originalArg) stringValue], result, @"unexpected arg"); } - STAssertNil(weakTestObject, nil); - STAssertTrue(hookWasCalled, nil); + XCTAssertNil(weakTestObject, @"memory leak"); + XCTAssertTrue(hookWasCalled, @"hook call missed"); } firstHookTest(); diff --git a/lib/JFFUtils/JFFUtilsTest/NSArray+ExpandArrayTest.h b/lib/JFFUtils/JFFUtilsTest/NSArray+ExpandArrayTest.h index 40c2c74..8f0f540 100644 --- a/lib/JFFUtils/JFFUtilsTest/NSArray+ExpandArrayTest.h +++ b/lib/JFFUtils/JFFUtilsTest/NSArray+ExpandArrayTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface NSArray_ExpandArrayTest : SenTestCase +@interface NSArray_ExpandArrayTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/NSArray+ExpandArrayTest.m b/lib/JFFUtils/JFFUtilsTest/NSArray+ExpandArrayTest.m index 47fba0e..28585ab 100644 --- a/lib/JFFUtils/JFFUtilsTest/NSArray+ExpandArrayTest.m +++ b/lib/JFFUtils/JFFUtilsTest/NSArray+ExpandArrayTest.m @@ -23,7 +23,7 @@ - (void)testExpandArray ]; NSArray *result = [array expandArray]; - STAssertEqualObjects(expectedResult, result, nil); + XCTAssertEqualObjects(expectedResult, result); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/NSDictionary+BlocksAdditionsTest.h b/lib/JFFUtils/JFFUtilsTest/NSDictionary+BlocksAdditionsTest.h index a6a24a8..2c65853 100644 --- a/lib/JFFUtils/JFFUtilsTest/NSDictionary+BlocksAdditionsTest.h +++ b/lib/JFFUtils/JFFUtilsTest/NSDictionary+BlocksAdditionsTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface NSDictionary_BlocksAdditionsTest : SenTestCase +@interface NSDictionary_BlocksAdditionsTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/NSDictionary+BlocksAdditionsTest.m b/lib/JFFUtils/JFFUtilsTest/NSDictionary+BlocksAdditionsTest.m index c6ff298..232d26b 100644 --- a/lib/JFFUtils/JFFUtilsTest/NSDictionary+BlocksAdditionsTest.m +++ b/lib/JFFUtils/JFFUtilsTest/NSDictionary+BlocksAdditionsTest.m @@ -15,23 +15,23 @@ - (void)testMapMethod return @(num * [key integerValue]); }]; - STAssertTrue([result count] == 3, nil); + XCTAssertTrue([result count] == 3); if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 6.) - STAssertFalse([result isKindOfClass:[NSMutableDictionary class]], nil); - STAssertTrue ([result isKindOfClass:[NSDictionary class]], nil); + XCTAssertFalse([result isKindOfClass:[NSMutableDictionary class]]); + XCTAssertTrue ([result isKindOfClass:[NSDictionary class]]); - STAssertEqualObjects(@1, result[@"1"], nil); - STAssertEqualObjects(@4, result[@"2"], nil); - STAssertEqualObjects(@9, result[@"3"], nil); + XCTAssertEqualObjects(@1, result[@"1"]); + XCTAssertEqualObjects(@4, result[@"2"]); + XCTAssertEqualObjects(@9, result[@"3"]); - STAssertThrows({ + XCTAssertThrows({ [dict map:^id(id key, id object) { NSUInteger num = [object unsignedIntegerValue]; if (num == 3) return nil; return @(num * 2); }]; - }, nil); + }); } - (void)testEachMethod @@ -50,16 +50,16 @@ - (void)testEachMethod [objects addObject:object]; }]; - STAssertTrue([keys count] == 3, nil); + XCTAssertTrue([keys count] == 3); for (id key in [dict allKeys]) { - STAssertTrue([keys containsObject:key], nil); + XCTAssertTrue([keys containsObject:key]); } - STAssertTrue([objects count] == 3, nil); + XCTAssertTrue([objects count] == 3); for (id value in [dict allValues]) { - STAssertTrue([objects containsObject:value], nil); + XCTAssertTrue([objects containsObject:value]); } } @@ -75,7 +75,7 @@ - (void)testCountMethod return [@2 isEqualToNumber:object] && [@"2" isEqualToString:key]; }]; - STAssertTrue(count == 1, nil); + XCTAssertTrue(count == 1); } - (void)testKeyMethod @@ -90,23 +90,23 @@ - (void)testKeyMethod return [[key uppercaseString] stringByAppendingFormat:@"%@", object]; }]; - STAssertTrue([result count] == 3, nil); + XCTAssertTrue([result count] == 3); if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 6.) - STAssertFalse([result isKindOfClass:[NSMutableDictionary class]], nil); - STAssertTrue([result isKindOfClass:[NSDictionary class]], nil); + XCTAssertFalse([result isKindOfClass:[NSMutableDictionary class]]); + XCTAssertTrue([result isKindOfClass:[NSDictionary class]]); - STAssertEqualObjects(@1, result[@"ONE1" ], nil); - STAssertEqualObjects(@2, result[@"TWO2" ], nil); - STAssertEqualObjects(@3, result[@"THREE3"], nil); + XCTAssertEqualObjects(@1, result[@"ONE1" ]); + XCTAssertEqualObjects(@2, result[@"TWO2" ]); + XCTAssertEqualObjects(@3, result[@"THREE3"]); - STAssertThrows({ + XCTAssertThrows({ [dict map:^id(id key, id object) { NSUInteger num = [object unsignedIntegerValue]; if (num == 3) return nil; return [key uppercaseString]; }]; - }, nil); + }); } - (void)testMapAndErrorMethodWithoutError @@ -120,21 +120,21 @@ - (void)testMapAndErrorMethodWithoutError NSError *error; NSDictionary *result = [dict map:^id(id key, id object, NSError **outError) { - STAssertTrue(outError != NULL, nil); + XCTAssertTrue(outError != NULL); NSUInteger num = [object unsignedIntegerValue]; return @(num * [key integerValue]); } error:&error]; - STAssertNil(error, nil); + XCTAssertNil(error); - STAssertTrue([result count] == 3, nil); + XCTAssertTrue([result count] == 3); if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 6.) - STAssertFalse([result isKindOfClass:[NSMutableDictionary class]], nil); - STAssertTrue([result isKindOfClass:[NSDictionary class]], nil); + XCTAssertFalse([result isKindOfClass:[NSMutableDictionary class]]); + XCTAssertTrue([result isKindOfClass:[NSDictionary class]]); - STAssertEqualObjects(@1, result[@"1"], nil); - STAssertEqualObjects(@4, result[@"2"], nil); - STAssertEqualObjects(@9, result[@"3"], nil); + XCTAssertEqualObjects(@1, result[@"1"]); + XCTAssertEqualObjects(@4, result[@"2"]); + XCTAssertEqualObjects(@9, result[@"3"]); } - (void)testMapAndErrorMethodWithError @@ -150,7 +150,7 @@ - (void)testMapAndErrorMethodWithError NSError *errorForMap = [JFFError newErrorWithDescription:@"test error"]; NSDictionary *result = [dict map:^id(id key, id object, NSError **outError) { - STAssertTrue(outError != NULL, nil); + XCTAssertTrue(outError != NULL); NSUInteger num = [object unsignedIntegerValue]; if (num == 3) { *outError = errorForMap; @@ -159,44 +159,44 @@ - (void)testMapAndErrorMethodWithError return @(num * [key integerValue]); } error:&error]; - STAssertNil(result, nil); - STAssertNotNil(error , nil); + XCTAssertNil(result); + XCTAssertNotNil(error ); - STAssertTrue(errorForMap == error, nil); + XCTAssertTrue(errorForMap == error); } - (void)testAny { NSArray *arr = @[@"a", @"b", @"c"]; - STAssertTrue([arr any:^BOOL(NSString *str) { + XCTAssertTrue([arr any:^BOOL(NSString *str) { return [str isEqualToString:@"a"]; - }], nil); + }]); - STAssertTrue([arr any:^BOOL(NSString *str) { + XCTAssertTrue([arr any:^BOOL(NSString *str) { return [str isEqualToString:@"b"]; - }], nil); + }]); - STAssertTrue([arr any:^BOOL(NSString *str) { + XCTAssertTrue([arr any:^BOOL(NSString *str) { return [str isEqualToString:@"c"]; - }], nil); + }]); - STAssertFalse([arr any:^BOOL(NSString *str) { + XCTAssertFalse([arr any:^BOOL(NSString *str) { return [str isEqualToString:@"d"]; - }], nil); + }]); } - (void)testAll { NSArray *arr = @[@"a", @"b", @"c"]; - STAssertTrue([arr all:^BOOL(NSString *str) { + XCTAssertTrue([arr all:^BOOL(NSString *str) { return [str length] == 1; - }], nil); + }]); - STAssertFalse([arr all:^BOOL(NSString *str) { + XCTAssertFalse([arr all:^BOOL(NSString *str) { return [str isEqualToString:@"a"] || [str isEqualToString:@"b"]; - }], nil); + }]); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/NSObject+OwnershipsTest.h b/lib/JFFUtils/JFFUtilsTest/NSObject+OwnershipsTest.h index acbcca3..24212b9 100644 --- a/lib/JFFUtils/JFFUtilsTest/NSObject+OwnershipsTest.h +++ b/lib/JFFUtils/JFFUtilsTest/NSObject+OwnershipsTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface NSObjectOwnershipsExtensionTest : SenTestCase +@interface NSObjectOwnershipsExtensionTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/NSObject+OwnershipsTest.m b/lib/JFFUtils/JFFUtilsTest/NSObject+OwnershipsTest.m index d2db009..47f4aa6 100644 --- a/lib/JFFUtils/JFFUtilsTest/NSObject+OwnershipsTest.m +++ b/lib/JFFUtils/JFFUtilsTest/NSObject+OwnershipsTest.m @@ -16,9 +16,9 @@ - (void)testObjectOwnershipsExtension [owner addOwnedObject:owned]; } - STAssertNotNil(ownedDeallocated, @"Owned should not be dealloced"); + XCTAssertNotNil(ownedDeallocated, @"Owned should not be dealloced"); } - STAssertNil(ownedDeallocated, @"Owned should be dealloced"); + XCTAssertNil(ownedDeallocated, @"Owned should be dealloced"); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/NSObjectInstancesCountTest.h b/lib/JFFUtils/JFFUtilsTest/NSObjectInstancesCountTest.h index c526102..7e14db4 100644 --- a/lib/JFFUtils/JFFUtilsTest/NSObjectInstancesCountTest.h +++ b/lib/JFFUtils/JFFUtilsTest/NSObjectInstancesCountTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface NSObjectInstancesCountTest : SenTestCase +@interface NSObjectInstancesCountTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/NSObjectInstancesCountTest.m b/lib/JFFUtils/JFFUtilsTest/NSObjectInstancesCountTest.m index 6fea422..b4caf2c 100644 --- a/lib/JFFUtils/JFFUtilsTest/NSObjectInstancesCountTest.m +++ b/lib/JFFUtils/JFFUtilsTest/NSObjectInstancesCountTest.m @@ -25,9 +25,9 @@ - (void)testObjectInstancesCount NSUInteger initialInsancesCount = [TestClassA instancesCount]; @autoreleasepool { TestClassA *a = [TestClassA new]; - STAssertTrue(1 == [TestClassA instancesCount] && a, @"We have instances of TestClassA"); + XCTAssertTrue(1 == [TestClassA instancesCount] && a, @"We have instances of TestClassA"); } - STAssertTrue(initialInsancesCount == [TestClassA instancesCount], @"We have no instances of TestClassA" ); + XCTAssertTrue(initialInsancesCount == [TestClassA instancesCount], @"We have no instances of TestClassA" ); } - (void)testObjectInstancesCountWithInheritance @@ -36,20 +36,20 @@ - (void)testObjectInstancesCountWithInheritance NSUInteger initialInsancesCountB = [TestClassB instancesCount]; @autoreleasepool { id b = [TestClassB new]; - STAssertTrue(1 == [TestClassB instancesCount] && b, @"We have instances of TestClassB class"); + XCTAssertTrue(1 == [TestClassB instancesCount] && b, @"We have instances of TestClassB class"); @autoreleasepool { id a = [TestClassA new]; - STAssertTrue(1 == [TestClassA instancesCount], @"We have instances of TestClassA class"); - STAssertTrue(1 == [TestClassB instancesCount] && a, @"We have instances of TestClassB class"); + XCTAssertTrue(1 == [TestClassA instancesCount], @"We have instances of TestClassA class"); + XCTAssertTrue(1 == [TestClassB instancesCount] && a, @"We have instances of TestClassB class"); } - STAssertTrue(0 == [TestClassA instancesCount], @"We have no instances of TestClassA class"); - STAssertTrue(1 == [TestClassB instancesCount], @"We have instances of TestClassB class"); + XCTAssertTrue(0 == [TestClassA instancesCount], @"We have no instances of TestClassA class"); + XCTAssertTrue(1 == [TestClassB instancesCount], @"We have instances of TestClassB class"); } - STAssertTrue(initialInsancesCountA == [TestClassA instancesCount], @"We have no instances of TestClassA class"); - STAssertTrue(initialInsancesCountB == [TestClassB instancesCount], @"We have no instances of TestClassB class"); + XCTAssertTrue(initialInsancesCountA == [TestClassA instancesCount], @"We have no instances of TestClassA class"); + XCTAssertTrue(initialInsancesCountB == [TestClassB instancesCount], @"We have no instances of TestClassB class"); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/NSObjectRuntimeExtensionsTest.h b/lib/JFFUtils/JFFUtilsTest/NSObjectRuntimeExtensionsTest.h index 6cbe8a2..229bcda 100644 --- a/lib/JFFUtils/JFFUtilsTest/NSObjectRuntimeExtensionsTest.h +++ b/lib/JFFUtils/JFFUtilsTest/NSObjectRuntimeExtensionsTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface NSObjectRuntimeExtensionsTest : SenTestCase +@interface NSObjectRuntimeExtensionsTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/NSObjectRuntimeExtensionsTest.m b/lib/JFFUtils/JFFUtilsTest/NSObjectRuntimeExtensionsTest.m index 65e9b2d..5f31821 100644 --- a/lib/JFFUtils/JFFUtilsTest/NSObjectRuntimeExtensionsTest.m +++ b/lib/JFFUtils/JFFUtilsTest/NSObjectRuntimeExtensionsTest.m @@ -5,6 +5,9 @@ static const NSUInteger testClassMethodResult = 34;//just rendomize number static const NSUInteger testInstanceMethodResult = 35;//just rendomize number +typedef NSUInteger (*UIntPropertyGetterMsgSendFunction)(id, SEL); +static const UIntPropertyGetterMsgSendFunction FPropertyGetter = (UIntPropertyGetterMsgSendFunction)objc_msgSend; + @interface NSTestClass : NSObject @end @@ -121,14 +124,14 @@ @implementation NSObjectRuntimeExtensionsTest - (void)testHookInstanceMethodAssertPrototypeAndTargetSelectors { - STAssertThrows({ + XCTAssertThrows({ [[HookMethodsClass class] hookInstanceMethodForClass:[NSTestClass class] withSelector:@selector(instanceMethodWithLongNameForUniquenessPurposes) prototypeMethodSelector:@selector(instanceMethodWithLongNameForUniquenessPurposes) hookMethodSelector:@selector(hookMethod)]; }, @"no prototypeMethodSelector asert expected" ); - STAssertThrows({ + XCTAssertThrows({ [[HookMethodsClass class] hookInstanceMethodForClass:[NSTestClass class] withSelector:@selector(instanceMethodWithLongNameForUniquenessPurposes2) prototypeMethodSelector:@selector(prototypeMethod) @@ -145,7 +148,7 @@ - (void)testHookInstanceMethod NSTestClass *instance_ = [NSTestClass new]; - STAssertEquals(testInstanceMethodResult, + XCTAssertEqual(testInstanceMethodResult, [instance_ instanceMethodWithLongNameForUniquenessPurposes], @"result mismatch"); @@ -154,21 +157,21 @@ - (void)testHookInstanceMethod prototypeMethodSelector:@selector(prototypeMethod) hookMethodSelector:@selector(hookMethod)]; - STAssertEquals( testInstanceMethodResult * 2 + XCTAssertEqual( testInstanceMethodResult * 2 , [ instance_ instanceMethodWithLongNameForUniquenessPurposes ] , @"result mismatch" ); } -(void)testHookClassMethodAssertPrototypeAndTargetSelectors { - STAssertThrows({ + XCTAssertThrows({ [[HookMethodsClass class] hookClassMethodForClass:[NSTestClass class] withSelector:@selector(classMethodWithLongNameForUniquenessPurposes) prototypeMethodSelector:@selector(classMethodWithLongNameForUniquenessPurposes) hookMethodSelector:@selector(hookMethod)]; }, @"no prototypeMethodSelector asert expected" ); - STAssertThrows({ + XCTAssertThrows({ [[HookMethodsClass class] hookClassMethodForClass:[NSTestClass class] withSelector:@selector(classMethodWithLongNameForUniquenessPurposes2) prototypeMethodSelector:@selector(prototypeMethod) @@ -185,7 +188,7 @@ - (void)testHookClassMethod Class class = [NSTestClass class]; - STAssertEquals(testClassMethodResult, + XCTAssertEqual(testClassMethodResult, [class classMethodWithLongNameForUniquenessPurposes], @"result mismatch" ); @@ -194,30 +197,30 @@ - (void)testHookClassMethod prototypeMethodSelector:@selector(prototypeMethod) hookMethodSelector:@selector(hookMethod)]; - STAssertEquals( testClassMethodResult * 3 + XCTAssertEqual( testClassMethodResult * 3 , [ class classMethodWithLongNameForUniquenessPurposes ] , @"result mismatch" ); } - (void)testHasClassMethodWithSelector { - STAssertTrue([NSObject hasClassMethodWithSelector:@selector(allocWithZone:)], @"NSOBject has allocWithZone: method"); - STAssertFalse([NSObject hasClassMethodWithSelector:@selector(allocWithZone2:)], @"NSOBject has no allocWithZone2: method"); + XCTAssertTrue([NSObject hasClassMethodWithSelector:@selector(allocWithZone:)], @"NSOBject has allocWithZone: method"); + XCTAssertFalse([NSObject hasClassMethodWithSelector:@selector(allocWithZone2:)], @"NSOBject has no allocWithZone2: method"); - STAssertTrue([NSTestClass hasClassMethodWithSelector:@selector(allocWithZone:)], + XCTAssertTrue([NSTestClass hasClassMethodWithSelector:@selector(allocWithZone:)], @"NSTestClass has allocWithZone: method" ); - STAssertFalse( [ NSTestClass hasClassMethodWithSelector: @selector( alloc ) ] + XCTAssertFalse( [ NSTestClass hasClassMethodWithSelector: @selector( alloc ) ] , @"NSTestClass has no alloc method" ); } - (void)testHasInstanceMethodWithSelector { - STAssertTrue([NSObject hasInstanceMethodWithSelector:@selector(isEqual:)], @"NSOBject has isEqual: method"); - STAssertFalse([NSObject hasInstanceMethodWithSelector:@selector(isEqual2:)], @"NSOBject has no isEqual2: method"); + XCTAssertTrue([NSObject hasInstanceMethodWithSelector:@selector(isEqual:)], @"NSOBject has isEqual: method"); + XCTAssertFalse([NSObject hasInstanceMethodWithSelector:@selector(isEqual2:)], @"NSOBject has no isEqual2: method"); - STAssertTrue([NSTestClass hasInstanceMethodWithSelector:@selector(isEqual:)], + XCTAssertTrue([NSTestClass hasInstanceMethodWithSelector:@selector(isEqual:)], @"NSTestClass has isEqual: method"); - STAssertFalse([NSTestClass hasInstanceMethodWithSelector:@selector(description)], + XCTAssertFalse([NSTestClass hasInstanceMethodWithSelector:@selector(description)], @"NSTestClass has no description method" ); } @@ -231,13 +234,19 @@ - (void)testAddClassMethodIfNeedWithSelector toClass:[NSTestClass class] newMethodSelector:@selector(classMethodWithLongNameForUniquenessPurposes2)]; - STAssertTrue(result, @"method added"); + + XCTAssertTrue(result, @"method added"); + + + + XCTAssertTrue( [ NSTestClass hasClassMethodWithSelector: @selector( classMethodWithLongNameForUniquenessPurposes2 ) ] + , @"NSTestClass has classMethodWithLongNameForUniquenessPurposes2 method" ); + - STAssertTrue([NSTestClass hasClassMethodWithSelector:@selector(classMethodWithLongNameForUniquenessPurposes2)], - @"NSTestClass has classMethodWithLongNameForUniquenessPurposes2 method"); + NSUInteger method_result_ = FPropertyGetter( + [ NSTestClass class ], @selector( classMethodWithLongNameForUniquenessPurposes2 ) ); - NSUInteger methodResult = (NSUInteger)objc_msgSend([NSTestClass class], @selector(classMethodWithLongNameForUniquenessPurposes2)); - STAssertTrue(testClassMethodResult == methodResult, @"check implementation of new method"); + XCTAssertTrue( testClassMethodResult == method_result_, @"check implementation of new method" ); firstTestRun = NO; } @@ -255,14 +264,16 @@ -(void)testAddInstanceMethodIfNeedWithSelector toClass:[NSTestClass class] newMethodSelector:newMethodSelector]; - STAssertTrue(result, @"method added"); + XCTAssertTrue(result, @"method added"); - STAssertTrue([NSTestClass hasInstanceMethodWithSelector:newMethodSelector], + + XCTAssertTrue([NSTestClass hasInstanceMethodWithSelector:newMethodSelector], @"NSTestClass has instanceMethodWithLongNameForUniquenessPurposes2 method"); + + NSTestClass* instance_ = [ NSTestClass new ]; - NSTestClass *instance = [NSTestClass new]; - NSUInteger methodResult = (NSUInteger)objc_msgSend(instance, newMethodSelector); - STAssertTrue(testInstanceMethodResult == methodResult, @"check implementation of new method" ); + NSUInteger method_result_ = FPropertyGetter( instance_, newMethodSelector ); + XCTAssertTrue( testInstanceMethodResult == method_result_, @"check implementation of new method" ); firstTestRun = NO; } @@ -277,7 +288,7 @@ -(void)testTwiceHookInstanceMethod NSTwiceTestClass *instance = [ NSTwiceTestClass new ]; - STAssertEquals(testInstanceMethodResult, + XCTAssertEqual(testInstanceMethodResult, [instance instanceMethodWithLongNameForUniquenessPurposes], @"result mismatch" ); @@ -286,11 +297,11 @@ -(void)testTwiceHookInstanceMethod prototypeMethodSelector:@selector(twicePrototypeMethod) hookMethodSelector:@selector(twiceHookMethod)]; - STAssertEquals(testInstanceMethodResult * 2, + XCTAssertEqual(testInstanceMethodResult * 2, [instance instanceMethodWithLongNameForUniquenessPurposes], @"result mismatch"); - STAssertThrows( { + XCTAssertThrows( { [[TwiceHookMethodsClass class] hookInstanceMethodForClass:[NSTwiceTestClass class] withSelector:@selector(instanceMethodWithLongNameForUniquenessPurposes) prototypeMethodSelector:@selector(twicePrototypeMethod) @@ -307,7 +318,7 @@ -(void)testTwiceHookClassMethod Class class = [NSTwiceTestClass class]; - STAssertEquals(testClassMethodResult, + XCTAssertEqual(testClassMethodResult, [class classMethodWithLongNameForUniquenessPurposes], @"result mismatch"); @@ -316,11 +327,11 @@ -(void)testTwiceHookClassMethod prototypeMethodSelector:@selector(twicePrototypeMethod) hookMethodSelector:@selector(twiceHookMethod)]; - STAssertEquals(testClassMethodResult * 3, + XCTAssertEqual(testClassMethodResult * 3, [class classMethodWithLongNameForUniquenessPurposes], @"result mismatch" ); - STAssertThrows({ + XCTAssertThrows({ [[TwiceHookMethodsClass class]hookClassMethodForClass:[NSTwiceTestClass class] withSelector:@selector(classMethodWithLongNameForUniquenessPurposes) prototypeMethodSelector:@selector(twicePrototypeMethod) diff --git a/lib/JFFUtils/JFFUtilsTest/NSObject_IsEqualTwoObjectsTest.h b/lib/JFFUtils/JFFUtilsTest/NSObject_IsEqualTwoObjectsTest.h index 354e006..e0d9659 100644 --- a/lib/JFFUtils/JFFUtilsTest/NSObject_IsEqualTwoObjectsTest.h +++ b/lib/JFFUtils/JFFUtilsTest/NSObject_IsEqualTwoObjectsTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface NSObject_IsEqualTwoObjectsTest : SenTestCase +@interface NSObject_IsEqualTwoObjectsTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/NSObject_IsEqualTwoObjectsTest.m b/lib/JFFUtils/JFFUtilsTest/NSObject_IsEqualTwoObjectsTest.m index b6ac9be..68828d2 100644 --- a/lib/JFFUtils/JFFUtilsTest/NSObject_IsEqualTwoObjectsTest.m +++ b/lib/JFFUtils/JFFUtilsTest/NSObject_IsEqualTwoObjectsTest.m @@ -8,48 +8,48 @@ -(void)testIsEqualTwoObjects NSObject *object1; NSObject *object2; - STAssertTrue([NSObject object: object1 - isEqualTo: object2], nil); + XCTAssertTrue([NSObject object: object1 + isEqualTo: object2]); } { NSObject *object1 = [NSObject new]; NSObject *object2 = [NSObject new]; - STAssertFalse([NSObject object: object1 - isEqualTo: object2], nil); + XCTAssertFalse([NSObject object: object1 + isEqualTo: object2]); } { NSObject *object1 = [NSObject new]; NSObject *object2 = object1; - STAssertTrue([NSObject object: object1 - isEqualTo: object2], nil); + XCTAssertTrue([NSObject object: object1 + isEqualTo: object2]); } { NSObject *object1; NSObject *object2 = @""; - STAssertFalse([NSObject object: object1 - isEqualTo: object2], nil); + XCTAssertFalse([NSObject object: object1 + isEqualTo: object2]); } { NSObject *object1 = @""; NSObject *object2; - STAssertFalse([NSObject object: object1 - isEqualTo: object2], nil); + XCTAssertFalse([NSObject object: object1 + isEqualTo: object2]); } { NSObject *object1 = @""; NSObject *object2 = @""; - STAssertTrue([NSObject object: object1 - isEqualTo: object2], nil ); + XCTAssertTrue([NSObject object: object1 + isEqualTo: object2]); } } diff --git a/lib/JFFUtils/JFFUtilsTest/NumberOfCharacterFromStringTest.h b/lib/JFFUtils/JFFUtilsTest/NumberOfCharacterFromStringTest.h index 49abd5e..6d825e1 100644 --- a/lib/JFFUtils/JFFUtilsTest/NumberOfCharacterFromStringTest.h +++ b/lib/JFFUtils/JFFUtilsTest/NumberOfCharacterFromStringTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface NumberOfCharacterFromStringTest : SenTestCase +@interface NumberOfCharacterFromStringTest : XCTestCase @end diff --git a/lib/JFFUtils/JFFUtilsTest/NumberOfCharacterFromStringTest.m b/lib/JFFUtils/JFFUtilsTest/NumberOfCharacterFromStringTest.m index 6608397..fdc203f 100644 --- a/lib/JFFUtils/JFFUtilsTest/NumberOfCharacterFromStringTest.m +++ b/lib/JFFUtils/JFFUtilsTest/NumberOfCharacterFromStringTest.m @@ -4,32 +4,32 @@ @implementation NumberOfCharacterFromStringTest -(void)testNumberOfCharacterFromString { - STAssertEquals((NSUInteger)0, [@"" numberOfCharacterFromString: @""], nil); + XCTAssertEqual((NSUInteger)0, [@"" numberOfCharacterFromString: @""]); - STAssertEquals((NSUInteger)0, [@"" numberOfCharacterFromString: @"1"], nil); + XCTAssertEqual((NSUInteger)0, [@"" numberOfCharacterFromString: @"1"]); - STAssertEquals((NSUInteger)2, [@"11" numberOfCharacterFromString: @"1"], nil); + XCTAssertEqual((NSUInteger)2, [@"11" numberOfCharacterFromString: @"1"]); - STAssertEquals((NSUInteger)2, [@"21212" numberOfCharacterFromString: @"1"], nil); + XCTAssertEqual((NSUInteger)2, [@"21212" numberOfCharacterFromString: @"1"]); - STAssertEquals((NSUInteger)5, [@"00021212000" numberOfCharacterFromString: @"21"], nil); + XCTAssertEqual((NSUInteger)5, [@"00021212000" numberOfCharacterFromString: @"21"]); - STAssertEquals((NSUInteger)7, [@"00032123120000" numberOfCharacterFromString: @"213"], nil); + XCTAssertEqual((NSUInteger)7, [@"00032123120000" numberOfCharacterFromString: @"213"]); } -(void)testNumberOfStringsFromString { - STAssertEquals((NSUInteger)3, [@"aaa" numberOfStringsFromString: @"a" ], nil); + XCTAssertEqual((NSUInteger)3, [@"aaa" numberOfStringsFromString: @"a" ]); - STAssertEquals((NSUInteger)1, [@"aaa" numberOfStringsFromString: @"aa" ], nil); + XCTAssertEqual((NSUInteger)1, [@"aaa" numberOfStringsFromString: @"aa" ]); - STAssertEquals((NSUInteger)1, [@"ab a" numberOfStringsFromString: @"ab" ], nil); + XCTAssertEqual((NSUInteger)1, [@"ab a" numberOfStringsFromString: @"ab" ]); - STAssertEquals((NSUInteger)1, [@"a abc" numberOfStringsFromString: @"abc" ], nil); + XCTAssertEqual((NSUInteger)1, [@"a abc" numberOfStringsFromString: @"abc" ]); - STAssertEquals((NSUInteger)0, [@"a ab c" numberOfStringsFromString: @"abc" ], nil); + XCTAssertEqual((NSUInteger)0, [@"a ab c" numberOfStringsFromString: @"abc" ]); - STAssertEquals((NSUInteger)3, [@"ababab" numberOfStringsFromString: @"ab" ], nil); + XCTAssertEqual((NSUInteger)3, [@"ababab" numberOfStringsFromString: @"ab" ]); } @end diff --git a/lib/JFFUtils/JFFUtilsTest/ObjcDynamicCastTest.h b/lib/JFFUtils/JFFUtilsTest/ObjcDynamicCastTest.h index a233e32..e75d8e4 100644 --- a/lib/JFFUtils/JFFUtilsTest/ObjcDynamicCastTest.h +++ b/lib/JFFUtils/JFFUtilsTest/ObjcDynamicCastTest.h @@ -1,7 +1,7 @@ -#import +#import #import -@interface ObjcDynamicCastTest : SenTestCase +@interface ObjcDynamicCastTest : XCTestCase @end \ No newline at end of file diff --git a/lib/JFFUtils/JFFUtilsTest/ObjcDynamicCastTest.mm b/lib/JFFUtils/JFFUtilsTest/ObjcDynamicCastTest.mm index 367a45f..067fb7e 100644 --- a/lib/JFFUtils/JFFUtilsTest/ObjcDynamicCastTest.mm +++ b/lib/JFFUtils/JFFUtilsTest/ObjcDynamicCastTest.mm @@ -13,7 +13,7 @@ - (void)testDynamicCastReturnsNilForNil { result = objc_dynamic_cast(parent); - STAssertNil(result, @"nil expected"); + XCTAssertNil(result, @"nil expected"); } } @@ -24,7 +24,7 @@ - (void)testDynamicCastReturnsNilForChildren { result = objc_dynamic_cast(parent); - STAssertNil(result, @"nil expected"); + XCTAssertNil(result, @"nil expected"); } } @@ -35,8 +35,8 @@ -(void)testDynamicCastToSameTypeReturnsSameObject { result = objc_dynamic_cast(parent); - STAssertNotNil(result, @"nil expected"); - STAssertTrue(result == parent, @"same object expected"); + XCTAssertNotNil(result, @"nil expected"); + XCTAssertTrue(result == parent, @"same object expected"); } } @@ -51,18 +51,18 @@ -(void)testDynamicCastReturnsSameObjectForValidHierarchy { result = objc_dynamic_cast(p_child); - STAssertNotNil(result, @"nil expected"); - STAssertTrue(result == p_child, @"same object expected"); + XCTAssertNotNil(result, @"nil expected"); + XCTAssertTrue(result == p_child, @"same object expected"); } { result = objc_dynamic_cast(o_child); - STAssertNotNil(result, @"nil expected" ); - STAssertTrue(result == p_child, @"same object expected"); + XCTAssertNotNil(result, @"nil expected" ); + XCTAssertTrue(result == p_child, @"same object expected"); result = objc_dynamic_cast(o_child); - STAssertNotNil(result, @"nil expected" ); - STAssertTrue(result == p_child, @"same object expected"); + XCTAssertNotNil(result, @"nil expected" ); + XCTAssertTrue(result == p_child, @"same object expected"); } } diff --git a/lib/JFFUtils/JFFUtilsTest/StringFromTemplateString.h b/lib/JFFUtils/JFFUtilsTest/StringFromTemplateString.h index ea05c64..0773c55 100644 --- a/lib/JFFUtils/JFFUtilsTest/StringFromTemplateString.h +++ b/lib/JFFUtils/JFFUtilsTest/StringFromTemplateString.h @@ -1,5 +1,5 @@ -#import - -@interface StringFromTemplateString : SenTestCase +#import +@interface StringFromTemplateString : XCTestCase @end + diff --git a/lib/JFFUtils/JFFUtilsTest/StringFromTemplateString.m b/lib/JFFUtils/JFFUtilsTest/StringFromTemplateString.m index e026375..4048e6e 100644 --- a/lib/JFFUtils/JFFUtilsTest/StringFromTemplateString.m +++ b/lib/JFFUtils/JFFUtilsTest/StringFromTemplateString.m @@ -13,7 +13,7 @@ - (void)testStringFromTemplateString @"price" : @"$23", }]; - STAssertEqualObjects(@"3 months for $23/month", resultString, nil); + XCTAssertEqualObjects(@"3 months for $23/month", resultString, @"unexpected template result" ); } { @@ -25,7 +25,7 @@ - (void)testStringFromTemplateString @"price" : @"$23", }]; - STAssertEqualObjects(@"$23 months for 3/month", resultString, nil); + XCTAssertEqualObjects(@"$23 months for 3/month", resultString, @"unexpected template result"); } { @@ -37,7 +37,7 @@ - (void)testStringFromTemplateString @"price" : @"$23", }]; - STAssertEqualObjects(@"cc 3 months for $23", resultString, nil); + XCTAssertEqualObjects(@"cc 3 months for $23", resultString, @"unexpected template result"); } { @@ -49,7 +49,7 @@ - (void)testStringFromTemplateString @"price" : @"$23", }]; - STAssertEqualObjects(@"3$23", resultString, nil); + XCTAssertEqualObjects(@"3$23", resultString, @"unexpected template result"); } { @@ -60,7 +60,7 @@ - (void)testStringFromTemplateString @"monthCount" : @3, }]; - STAssertEqualObjects(@"${monthCount", resultString, nil); + XCTAssertEqualObjects(@"${monthCount", resultString, @"unexpected template result"); } { @@ -71,7 +71,7 @@ - (void)testStringFromTemplateString @"monthCount2" : @3, }]; - STAssertEqualObjects(@"${monthCount}", resultString, nil); + XCTAssertEqualObjects(@"${monthCount}", resultString, @"unexpected template result"); } } diff --git a/lib/JFFUtils/JFFUtilsTest/TypeSignatureTest.h b/lib/JFFUtils/JFFUtilsTest/TypeSignatureTest.h index 6e08bb6..a368afa 100644 --- a/lib/JFFUtils/JFFUtilsTest/TypeSignatureTest.h +++ b/lib/JFFUtils/JFFUtilsTest/TypeSignatureTest.h @@ -1,5 +1,5 @@ -#import - -@interface TypeSignatureTest : SenTestCase +#import +@interface TypeSignatureTest : XCTestCase @end + diff --git a/lib/JFFUtils/JFFUtilsTest/TypeSignatureTest.m b/lib/JFFUtils/JFFUtilsTest/TypeSignatureTest.m index cd98e6a..291e3c1 100644 --- a/lib/JFFUtils/JFFUtilsTest/TypeSignatureTest.m +++ b/lib/JFFUtils/JFFUtilsTest/TypeSignatureTest.m @@ -46,7 +46,7 @@ - (void)testGetReturnType char returnType[strlen(sinature) + 1]; sscanf(sinature, typeSignatureScanFormat, returnType); - STAssertTrue(strcmp(returnType, sig.methodReturnType) == 0, nil); + XCTAssertTrue(strcmp(returnType, sig.methodReturnType) == 0, @"methodReturnType mismatch"); } //"void *" return type @@ -65,7 +65,7 @@ - (void)testGetReturnType char returnType[strlen(sinature) + 1]; sscanf(sinature, typeSignatureScanFormat, returnType); - STAssertTrue(strcmp(returnType, sig.methodReturnType) == 0, nil); + XCTAssertTrue(strcmp(returnType, sig.methodReturnType) == 0, @"methodReturnType mismatch"); } //"BOOL" return type @@ -84,7 +84,7 @@ - (void)testGetReturnType char returnType[strlen(sinature) + 1]; sscanf(sinature, typeSignatureScanFormat, returnType); - STAssertTrue(strcmp(returnType, sig.methodReturnType) == 0, nil); + XCTAssertTrue(strcmp(returnType, sig.methodReturnType) == 0, @"methodReturnType mismatch"); } //"NSUInteger" return type @@ -107,7 +107,7 @@ - (void)testGetReturnType // NSLog(@"ret1: %s", returnType); // NSLog(@"ret2: %s", sig.methodReturnType); - STAssertTrue(strcmp(returnType, sig.methodReturnType) == 0, nil); + XCTAssertTrue(strcmp(returnType, sig.methodReturnType) == 0, @"methodReturnType mismatch"); } } @@ -124,7 +124,7 @@ - (void)testGetOffsets NSArray *arr = @[@20, @0, @4, @8, @12]; - STAssertEqualObjects(arr, typeEncodingOffsets(sinature), nil); + XCTAssertEqualObjects(arr, typeEncodingOffsets(sinature), @"method signature musmatch"); } { @@ -138,7 +138,7 @@ - (void)testGetOffsets NSArray *arr = @[@12, @0, @4, @8]; - STAssertEqualObjects(arr, typeEncodingOffsets(sinature), nil); + XCTAssertEqualObjects(arr, typeEncodingOffsets(sinature), @"method signature musmatch"); } { @@ -152,7 +152,7 @@ - (void)testGetOffsets NSArray *arr = @[@20, @0, @4, @8, @12]; - STAssertEqualObjects(arr, typeEncodingOffsets(sinature), nil); + XCTAssertEqualObjects(arr, typeEncodingOffsets(sinature), @"method signature musmatch"); } } diff --git a/lib/JFFUtils/JGCDAdditions.h b/lib/JFFUtils/JGCDAdditions.h index e931a6d..c97658d 100755 --- a/lib/JFFUtils/JGCDAdditions.h +++ b/lib/JFFUtils/JGCDAdditions.h @@ -6,11 +6,23 @@ #ifdef __cplusplus extern "C" { #endif - + dispatch_queue_t dispatch_queue_get_or_create(const char *label, dispatch_queue_attr_t attr); void dispatch_queue_release_by_label(const char *label); + + + // @adk : for XCTest where dispatch_creqte_queue() returns main queue + void dispatch_sync_check_queue(dispatch_queue_t queue, dispatch_queue_t currentQueue, dispatch_block_t block); + void dispatch_barrier_sync_check_queue(dispatch_queue_t queue, dispatch_queue_t currentQueue,dispatch_block_t block); + + // @adk : legacy + void safe_dispatch_sync(dispatch_queue_t queue, dispatch_block_t block); + + void safe_dispatch_barrier_sync(dispatch_queue_t queue, dispatch_block_t block); + + #ifdef __cplusplus } /* closing brace for extern "C" */ #endif diff --git a/lib/JFFUtils/JGCDAdditions.mm b/lib/JFFUtils/JGCDAdditions.mm index d15636d..ba625eb 100644 --- a/lib/JFFUtils/JGCDAdditions.mm +++ b/lib/JFFUtils/JGCDAdditions.mm @@ -30,3 +30,35 @@ void dispatch_queue_release_by_label(const char *label) dispatchByLabel.erase(label); } } + + +#pragma mark - +#pragma mark Legacy +void dispatch_sync_check_queue(dispatch_queue_t queue, dispatch_queue_t currentQueue, dispatch_block_t block) +{ + if (currentQueue != queue) { + dispatch_sync(queue, block); + } else { + block(); + } +} + +void dispatch_barrier_sync_check_queue(dispatch_queue_t queue, dispatch_queue_t currentQueue,dispatch_block_t block) +{ + if (currentQueue != queue) { + dispatch_barrier_sync(queue, block); + } else { + block(); + } +} + +void safe_dispatch_sync(dispatch_queue_t queue, dispatch_block_t block) +{ + dispatch_sync_check_queue(queue, dispatch_get_main_queue(), block); +} + +void safe_dispatch_barrier_sync(dispatch_queue_t queue, dispatch_block_t block) +{ + dispatch_barrier_sync_check_queue(queue, dispatch_get_main_queue(), block); +} + diff --git a/lib/JFFUtils/JSignedRange.h b/lib/JFFUtils/JSignedRange.h index f4038da..1d27053 100755 --- a/lib/JFFUtils/JSignedRange.h +++ b/lib/JFFUtils/JSignedRange.h @@ -8,6 +8,18 @@ typedef struct { NSInteger length; } JSignedRange; +#ifdef __cplusplus +extern "C" +{ +#endif + +#ifndef __cplusplus +extern +#endif JSignedRange JSignedRangeMake(NSInteger location, NSInteger length); + +#ifdef __cplusplus +} +#endif #endif //JFFUTILS_JSIGNED_RANGE_H_INCLUDED diff --git a/lib/JFFUtils/Logger/JFFLogger.h b/lib/JFFUtils/Logger/JFFLogger.h index c6fb120..932eb58 100644 --- a/lib/JFFUtils/Logger/JFFLogger.h +++ b/lib/JFFUtils/Logger/JFFLogger.h @@ -2,7 +2,7 @@ @class JFFLogInfo; -typedef void(^JFFLogHandler)(NSString *log, NSString *level); +typedef void(^JFFLogHandler)(NSString *log, NSString *level, id context); @interface JFFLogger : NSObject @@ -10,6 +10,8 @@ typedef void(^JFFLogHandler)(NSString *log, NSString *level); + (void)logErrorWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); ++ (void)logErrorWithContext:(id)context format:(NSString *)format, ... NS_FORMAT_FUNCTION(2,3); + + (void)logInfoWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2); @end diff --git a/lib/JFFUtils/Logger/JFFLogger.m b/lib/JFFUtils/Logger/JFFLogger.m index 1dc8db8..f199724 100644 --- a/lib/JFFUtils/Logger/JFFLogger.m +++ b/lib/JFFUtils/Logger/JFFLogger.m @@ -7,7 +7,7 @@ @implementation JFFLogger + (JFFLogHandler)logHandler { if (!logHandler) { - logHandler = ^(NSString *log, NSString *level) { + logHandler = ^(NSString *log, NSString *level, id context) { NSLog(@"%@: %@", level, log); }; } @@ -26,6 +26,21 @@ + (void)logErrorWithFormat:(NSString *)format, ... va_start(args, format); [self logInfoWithLevel:@"error" + context:nil + format:format + argList:args]; + + va_end(args); +} + ++ (void)logErrorWithContext:(id)context + format:(NSString *)format, ... +{ + va_list args; + va_start(args, format); + + [self logInfoWithLevel:@"error" + context:context format:format argList:args]; @@ -38,6 +53,7 @@ + (void)logInfoWithFormat:(NSString *)format, ... va_start(args, format); [self logInfoWithLevel:@"info" + context:nil format:format argList:args]; @@ -45,11 +61,12 @@ + (void)logInfoWithFormat:(NSString *)format, ... } + (void)logInfoWithLevel:(NSString *)level + context:(id)context format:(NSString *)format argList:(va_list)argList { NSString *str = [[NSString alloc] initWithFormat:format arguments:argList]; - [self logHandler](str, level); + [self logHandler](str, level, context); } @end diff --git a/lib/JFFUtils/NSDate/NSDate+DateDifference.m b/lib/JFFUtils/NSDate/NSDate+DateDifference.m index cc82f66..6df06a7 100644 --- a/lib/JFFUtils/NSDate/NSDate+DateDifference.m +++ b/lib/JFFUtils/NSDate/NSDate+DateDifference.m @@ -30,32 +30,33 @@ - (NSString *)dateDifferenceStringFromDate:(NSDate *)fromDate if ([components year]) { dateComponent = [components year]; result = dateComponent == 1 - ? NSLocalizedString(@"YEAR", nil) - : NSLocalizedString(@"YEARS", nil); + ?NSLocalizedString(@"YEAR" , nil) + :NSLocalizedString(@"YEARS", nil); } else if ([components month]) { dateComponent = [components month]; result = dateComponent == 1 - ? NSLocalizedString(@"MONTH", nil) - : NSLocalizedString(@"MONTHS", nil); + ?NSLocalizedString(@"MONTH" , nil) + :NSLocalizedString(@"MONTHS", nil); } else if ([components day]) { dateComponent = [components day]; result = dateComponent == 1 - ? NSLocalizedString(@"DAY", nil) - : NSLocalizedString(@"DAYS", nil); + ?NSLocalizedString(@"DAY" , nil) + :NSLocalizedString(@"DAYS", nil); } else if ([components minute]) { dateComponent = [components minute]; result = dateComponent == 1 - ? NSLocalizedString(@"MINUTE", nil) - : NSLocalizedString(@"MINUTES", nil); + ?NSLocalizedString(@"MINUTE" , nil) + :NSLocalizedString(@"MINUTES", nil); } else { dateComponent = [components second]; dateComponent = dateComponent < 1 ? 1 : dateComponent; result = dateComponent == 1 - ? NSLocalizedString(@"SECOND", nil) - : NSLocalizedString(@"SECONDS", nil); + ?NSLocalizedString(@"SECOND" , nil) + :NSLocalizedString(@"SECONDS", nil); } - NSString *numberStr = [[NSString alloc] initWithFormat:@"%lu ", (unsigned long)dateComponent]; + NSString *numberStr = [@(dateComponent) descriptionWithLocale:nil]; + numberStr = [numberStr stringByAppendingString:@" "]; result = [numberStr stringByAppendingString:result]; return result; diff --git a/lib/JFFUtils/NSObject/Details/DelegateProxy/JFFDelegateProxyClassMethods.m b/lib/JFFUtils/NSObject/Details/DelegateProxy/JFFDelegateProxyClassMethods.m index 3c8b24c..be2be0b 100644 --- a/lib/JFFUtils/NSObject/Details/DelegateProxy/JFFDelegateProxyClassMethods.m +++ b/lib/JFFUtils/NSObject/Details/DelegateProxy/JFFDelegateProxyClassMethods.m @@ -30,7 +30,9 @@ - (id)delegateGetterHookMethod if (proxy) return proxy; - return objc_msgSend(self, NSSelectorFromString(hookedGetterName)); + typedef id (*AlignMsgSendFunction)(id, SEL); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSend; + return alignFunction(self, NSSelectorFromString(hookedGetterName)); } @end diff --git a/lib/JFFUtils/NSObject/NSObject+DelegateProxy.m b/lib/JFFUtils/NSObject/NSObject+DelegateProxy.m index c74be19..a736328 100644 --- a/lib/JFFUtils/NSObject/NSObject+DelegateProxy.m +++ b/lib/JFFUtils/NSObject/NSObject+DelegateProxy.m @@ -57,7 +57,9 @@ - (JFFProxyDelegatesDispatcher *)proxyDelegatesDispatcherForHookedGetterName:(NS return nil; } - id realDelegate = objc_msgSend(self, NSSelectorFromString(hookedGetterName)); + typedef id (*AlignMsgSendFunction)(id, SEL); + AlignMsgSendFunction alignFunction = (AlignMsgSendFunction)objc_msgSend; + id realDelegate = alignFunction(self, NSSelectorFromString(hookedGetterName)); JFFProxyDelegatesDispatcher *dispatcher = [JFFProxyDelegatesDispatcher newProxyDelegatesDispatcherWithRealDelegate:realDelegate diff --git a/scripts/simulator/CleanTestReports.sh b/scripts/simulator/CleanTestReports.sh index 6f419f5..fe204a5 100755 --- a/scripts/simulator/CleanTestReports.sh +++ b/scripts/simulator/CleanTestReports.sh @@ -5,6 +5,6 @@ ## rm -r -f "$TEST_RESULTS_DIR" -cd ~/Library/Application\ Support/iPhone\ Simulator/7.0/ +cd ~/Library/Application\ Support/iPhone\ Simulator/7.0.3/ rm -rf Applications mkdir -p Applications diff --git a/scripts/simulator/CopyTestReports.sh b/scripts/simulator/CopyTestReports.sh index 5d4ccb6..43cc135 100755 --- a/scripts/simulator/CopyTestReports.sh +++ b/scripts/simulator/CopyTestReports.sh @@ -18,7 +18,7 @@ rm -r -f "$TEST_PUBLISH_DIR" mkdir -p "$TEST_PUBLISH_DIR" -cd ~/Library/Application\ Support/iPhone\ Simulator/7.0/Applications +cd ~/Library/Application\ Support/iPhone\ Simulator/7.0.3/Applications for directory in $( ls -1 ); do echo "$directory/tmp/test-results" ls -1 "$directory/tmp/test-results" diff --git a/test/JFFStoreKitTest/JFFStoreKitTest.xcodeproj/project.pbxproj b/test/JFFStoreKitTest/JFFStoreKitTest.xcodeproj/project.pbxproj index 72d8ad7..978697a 100644 --- a/test/JFFStoreKitTest/JFFStoreKitTest.xcodeproj/project.pbxproj +++ b/test/JFFStoreKitTest/JFFStoreKitTest.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 7E72C9E817FBEFDB0081F306 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E72C9E717FBEFDB0081F306 /* QuartzCore.framework */; }; CEBCBE6D1619C923007F805F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBCBE6C1619C923007F805F /* UIKit.framework */; }; CEBCBE6F1619C923007F805F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBCBE6E1619C923007F805F /* Foundation.framework */; }; CEBCBE711619C923007F805F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEBCBE701619C923007F805F /* CoreGraphics.framework */; }; @@ -27,6 +28,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 7E72C9F417FBEFDB0081F306 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CEBCBEA11619CC83007F805F /* JFFUtils.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 7ED3CB1516E6387B00E5A00F; + remoteInfo = "JFFUtilsTest-CI"; + }; CEBCBE9F1619CC7D007F805F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CEBCBE981619CC7D007F805F /* JFFTestTools.xcodeproj */; @@ -170,6 +178,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 7E72C9E717FBEFDB0081F306 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; CEBCBE681619C923007F805F /* JFFStoreKitTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = JFFStoreKitTest.app; sourceTree = BUILT_PRODUCTS_DIR; }; CEBCBE6C1619C923007F805F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; CEBCBE6E1619C923007F805F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -197,6 +206,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 7E72C9E817FBEFDB0081F306 /* QuartzCore.framework in Frameworks */, CEBCBEFD1619CF7A007F805F /* StoreKit.framework in Frameworks */, CEBCBEFB1619CF6B007F805F /* libJFFStoreKit.a in Frameworks */, CEBCBEEA1619CCC2007F805F /* libstdc++.dylib in Frameworks */, @@ -235,6 +245,7 @@ CEBCBE6B1619C923007F805F /* Frameworks */ = { isa = PBXGroup; children = ( + 7E72C9E717FBEFDB0081F306 /* QuartzCore.framework */, CEBCBEE91619CCC2007F805F /* libstdc++.dylib */, CEBCBEFC1619CF7A007F805F /* StoreKit.framework */, CEBCBE921619CB36007F805F /* GHUnitIOS.framework */, @@ -296,6 +307,7 @@ CEBCBEB21619CC83007F805F /* libJFFUtils-clang.a */, CEBCBEB41619CC83007F805F /* JFFUtilsFW.framework */, CEBCBEB61619CC83007F805F /* JFFUtilsTest.octest */, + 7E72C9F517FBEFDB0081F306 /* JFFUtilsTest-CI.octest */, ); name = Products; sourceTree = ""; @@ -404,6 +416,13 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + 7E72C9F517FBEFDB0081F306 /* JFFUtilsTest-CI.octest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = "JFFUtilsTest-CI.octest"; + remoteRef = 7E72C9F417FBEFDB0081F306 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; CEBCBEA01619CC7D007F805F /* libJFFTestTools.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; From 16f41e75523c1a4ea959daa2e5a4f7afdcd52333 Mon Sep 17 00:00:00 2001 From: volodg Date: Thu, 29 May 2014 10:47:28 +0300 Subject: [PATCH 3/3] code style fyx --- lib/JFFNetwork/JNNsUrlConnection.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/JFFNetwork/JNNsUrlConnection.m b/lib/JFFNetwork/JNNsUrlConnection.m index 85bcd7e..ee20b75 100644 --- a/lib/JFFNetwork/JNNsUrlConnection.m +++ b/lib/JFFNetwork/JNNsUrlConnection.m @@ -52,7 +52,7 @@ - (instancetype)initWithURLConnectionParams:(JFFURLConnectionParams *)params NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; if (runLoop != [NSRunLoop mainRunLoop]) { _connectRunLoop = runLoop; - [nativeConnection scheduleInRunLoop:runLoop forMode: NSDefaultRunLoopMode]; + [nativeConnection scheduleInRunLoop:runLoop forMode:NSDefaultRunLoopMode]; } _nativeConnection = nativeConnection;

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 z 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 TsUlei- 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%0ABaw)v+>oS9Z)UPx(i6#X3 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

;quYN`%X9y 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 {Bbs4FBo+v1= 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