···11+/*
22+ This file is part of Darling.
33+44+ Copyright (C) 2020 Lubos Dolezel
55+66+ Darling is free software: you can redistribute it and/or modify
77+ it under the terms of the GNU General Public License as published by
88+ the Free Software Foundation, either version 3 of the License, or
99+ (at your option) any later version.
1010+1111+ Darling is distributed in the hope that it will be useful,
1212+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1313+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1414+ GNU General Public License for more details.
1515+1616+ You should have received a copy of the GNU General Public License
1717+ along with Darling. If not, see <http://www.gnu.org/licenses/>.
1818+*/
1919+2020+#include <Foundation/Foundation.h>
2121+2222+@interface ACSURLSession : NSObject
2323+2424+@end
···11+/*
22+ This file is part of Darling.
33+44+ Copyright (C) 2020 Lubos Dolezel
55+66+ Darling is free software: you can redistribute it and/or modify
77+ it under the terms of the GNU General Public License as published by
88+ the Free Software Foundation, either version 3 of the License, or
99+ (at your option) any later version.
1010+1111+ Darling is distributed in the hope that it will be useful,
1212+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1313+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1414+ GNU General Public License for more details.
1515+1616+ You should have received a copy of the GNU General Public License
1717+ along with Darling. If not, see <http://www.gnu.org/licenses/>.
1818+*/
1919+2020+#include <Foundation/Foundation.h>
2121+2222+@interface ACSURLSessionDataTask : NSObject
2323+2424+@end
···11+/*
22+ This file is part of Darling.
33+44+ Copyright (C) 2020 Lubos Dolezel
55+66+ Darling is free software: you can redistribute it and/or modify
77+ it under the terms of the GNU General Public License as published by
88+ the Free Software Foundation, either version 3 of the License, or
99+ (at your option) any later version.
1010+1111+ Darling is distributed in the hope that it will be useful,
1212+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1313+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1414+ GNU General Public License for more details.
1515+1616+ You should have received a copy of the GNU General Public License
1717+ along with Darling. If not, see <http://www.gnu.org/licenses/>.
1818+*/
1919+2020+#include <Foundation/Foundation.h>
2121+2222+@interface ACSURLSessionDownloadTask : NSObject
2323+2424+@end
···11+/*
22+ This file is part of Darling.
33+44+ Copyright (C) 2020 Lubos Dolezel
55+66+ Darling is free software: you can redistribute it and/or modify
77+ it under the terms of the GNU General Public License as published by
88+ the Free Software Foundation, either version 3 of the License, or
99+ (at your option) any later version.
1010+1111+ Darling is distributed in the hope that it will be useful,
1212+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1313+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1414+ GNU General Public License for more details.
1515+1616+ You should have received a copy of the GNU General Public License
1717+ along with Darling. If not, see <http://www.gnu.org/licenses/>.
1818+*/
1919+2020+#include <Foundation/Foundation.h>
2121+2222+@interface ACSURLSessionTask : NSObject
2323+2424+@end
···11+/*
22+ This file is part of Darling.
33+44+ Copyright (C) 2020 Lubos Dolezel
55+66+ Darling is free software: you can redistribute it and/or modify
77+ it under the terms of the GNU General Public License as published by
88+ the Free Software Foundation, either version 3 of the License, or
99+ (at your option) any later version.
1010+1111+ Darling is distributed in the hope that it will be useful,
1212+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1313+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1414+ GNU General Public License for more details.
1515+1616+ You should have received a copy of the GNU General Public License
1717+ along with Darling. If not, see <http://www.gnu.org/licenses/>.
1818+*/
1919+2020+#include <Foundation/Foundation.h>
2121+2222+@interface ACSURLSessionUploadTask : NSObject
2323+2424+@end
···11+/*
22+ This file is part of Darling.
33+44+ Copyright (C) 2020 Lubos Dolezel
55+66+ Darling is free software: you can redistribute it and/or modify
77+ it under the terms of the GNU General Public License as published by
88+ the Free Software Foundation, either version 3 of the License, or
99+ (at your option) any later version.
1010+1111+ Darling is distributed in the hope that it will be useful,
1212+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1313+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1414+ GNU General Public License for more details.
1515+1616+ You should have received a copy of the GNU General Public License
1717+ along with Darling. If not, see <http://www.gnu.org/licenses/>.
1818+*/
1919+2020+2121+#ifndef _AssetCacheServices_H_
2222+#define _AssetCacheServices_H_
2323+2424+#include <CoreFoundation/CoreFoundation.h>
2525+#include <dispatch/dispatch.h>
2626+2727+#import <Foundation/Foundation.h>
2828+2929+#import <AssetCacheServices/ACSURLSession.h>
3030+#import <AssetCacheServices/ACSURLSessionUploadTask.h>
3131+#import <AssetCacheServices/ACSURLSessionDataTask.h>
3232+#import <AssetCacheServices/ACSURLSessionTask.h>
3333+#import <AssetCacheServices/ACSURLSessionDownloadTask.h>
3434+3535+void ACSImportFileIntoCachingServer(CFURLRef asset_url, CFStringRef source_path, CFDictionaryRef headers, CFDictionaryRef options, dispatch_queue_t callback_queue, void(^callback)(bool));
3636+void ACSLocateCachingServer(CFURLRef asset_url, double timeout, CFDictionaryRef options, dispatch_queue_t callback_queue, void(^callback)(CFURLRef, CFMutableDictionaryRef));
3737+void ACSMightCurrentNetworkHaveCachingServer(CFDictionaryRef options, dispatch_queue_t callback_queue, void(^callback)(bool));
3838+void ACSUpdateCachingServerHealth(CFURLRef url, CFDictionaryRef options, BOOL healthy);
3939+void _ACSIntrospect(CFDictionaryRef options, dispatch_queue_t callback_queue, void(^callback)(CFTypeRef)); // block argument created with `_CFXPCCreateCFObjectFromXPCObject` from an `introspection` key in the XPC response dictionary
4040+void _ACSLocateAllCachingServers(double timeout, CFDictionaryRef options, dispatch_queue_t callback_queue, void(^callback)(CFMutableArrayRef));
4141+void _ACSSetTestFlags(uint64_t flags, CFDictionaryRef dictionary);
4242+void _A_CALLBACK_BLOCK_RELEASED_AN_ASSETCACHESERVICES_OBJECT_IT_DID_NOT_OWN(int integer, const char* function_name, const char* string, void* object);
4343+4444+#endif
···11+/*
22+ This file is part of Darling.
33+44+ Copyright (C) 2020 Lubos Dolezel
55+66+ Darling is free software: you can redistribute it and/or modify
77+ it under the terms of the GNU General Public License as published by
88+ the Free Software Foundation, either version 3 of the License, or
99+ (at your option) any later version.
1010+1111+ Darling is distributed in the hope that it will be useful,
1212+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1313+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1414+ GNU General Public License for more details.
1515+1616+ You should have received a copy of the GNU General Public License
1717+ along with Darling. If not, see <http://www.gnu.org/licenses/>.
1818+*/
1919+2020+#import <AssetCacheServices/ACSURLSession.h>
2121+2222+@implementation ACSURLSession
2323+2424+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
2525+{
2626+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
2727+}
2828+2929+- (void)forwardInvocation:(NSInvocation *)anInvocation
3030+{
3131+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
3232+}
3333+3434+@end
···11+/*
22+ This file is part of Darling.
33+44+ Copyright (C) 2020 Lubos Dolezel
55+66+ Darling is free software: you can redistribute it and/or modify
77+ it under the terms of the GNU General Public License as published by
88+ the Free Software Foundation, either version 3 of the License, or
99+ (at your option) any later version.
1010+1111+ Darling is distributed in the hope that it will be useful,
1212+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1313+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1414+ GNU General Public License for more details.
1515+1616+ You should have received a copy of the GNU General Public License
1717+ along with Darling. If not, see <http://www.gnu.org/licenses/>.
1818+*/
1919+2020+#import <AssetCacheServices/ACSURLSessionDataTask.h>
2121+2222+@implementation ACSURLSessionDataTask
2323+2424+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
2525+{
2626+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
2727+}
2828+2929+- (void)forwardInvocation:(NSInvocation *)anInvocation
3030+{
3131+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
3232+}
3333+3434+@end
···11+/*
22+ This file is part of Darling.
33+44+ Copyright (C) 2020 Lubos Dolezel
55+66+ Darling is free software: you can redistribute it and/or modify
77+ it under the terms of the GNU General Public License as published by
88+ the Free Software Foundation, either version 3 of the License, or
99+ (at your option) any later version.
1010+1111+ Darling is distributed in the hope that it will be useful,
1212+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1313+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1414+ GNU General Public License for more details.
1515+1616+ You should have received a copy of the GNU General Public License
1717+ along with Darling. If not, see <http://www.gnu.org/licenses/>.
1818+*/
1919+2020+#import <AssetCacheServices/ACSURLSessionDownloadTask.h>
2121+2222+@implementation ACSURLSessionDownloadTask
2323+2424+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
2525+{
2626+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
2727+}
2828+2929+- (void)forwardInvocation:(NSInvocation *)anInvocation
3030+{
3131+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
3232+}
3333+3434+@end
···11+/*
22+ This file is part of Darling.
33+44+ Copyright (C) 2020 Lubos Dolezel
55+66+ Darling is free software: you can redistribute it and/or modify
77+ it under the terms of the GNU General Public License as published by
88+ the Free Software Foundation, either version 3 of the License, or
99+ (at your option) any later version.
1010+1111+ Darling is distributed in the hope that it will be useful,
1212+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1313+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1414+ GNU General Public License for more details.
1515+1616+ You should have received a copy of the GNU General Public License
1717+ along with Darling. If not, see <http://www.gnu.org/licenses/>.
1818+*/
1919+2020+#import <AssetCacheServices/ACSURLSessionTask.h>
2121+2222+@implementation ACSURLSessionTask
2323+2424+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
2525+{
2626+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
2727+}
2828+2929+- (void)forwardInvocation:(NSInvocation *)anInvocation
3030+{
3131+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
3232+}
3333+3434+@end
···11+/*
22+ This file is part of Darling.
33+44+ Copyright (C) 2020 Lubos Dolezel
55+66+ Darling is free software: you can redistribute it and/or modify
77+ it under the terms of the GNU General Public License as published by
88+ the Free Software Foundation, either version 3 of the License, or
99+ (at your option) any later version.
1010+1111+ Darling is distributed in the hope that it will be useful,
1212+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1313+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1414+ GNU General Public License for more details.
1515+1616+ You should have received a copy of the GNU General Public License
1717+ along with Darling. If not, see <http://www.gnu.org/licenses/>.
1818+*/
1919+2020+#import <AssetCacheServices/ACSURLSessionUploadTask.h>
2121+2222+@implementation ACSURLSessionUploadTask
2323+2424+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
2525+{
2626+ return [NSMethodSignature signatureWithObjCTypes: "v@:"];
2727+}
2828+2929+- (void)forwardInvocation:(NSInvocation *)anInvocation
3030+{
3131+ NSLog(@"Stub called: %@ in %@", NSStringFromSelector([anInvocation selector]), [self class]);
3232+}
3333+3434+@end
···11+/*
22+ This file is part of Darling.
33+44+ Copyright (C) 2020 Lubos Dolezel
55+66+ Darling is free software: you can redistribute it and/or modify
77+ it under the terms of the GNU General Public License as published by
88+ the Free Software Foundation, either version 3 of the License, or
99+ (at your option) any later version.
1010+1111+ Darling is distributed in the hope that it will be useful,
1212+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1313+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1414+ GNU General Public License for more details.
1515+1616+ You should have received a copy of the GNU General Public License
1717+ along with Darling. If not, see <http://www.gnu.org/licenses/>.
1818+*/
1919+2020+2121+#include <AssetCacheServices/AssetCacheServices.h>
2222+#include <stdlib.h>
2323+#include <stdio.h>
2424+2525+static int verbose = 0;
2626+2727+__attribute__((constructor))
2828+static void initme(void) {
2929+ verbose = getenv("STUB_VERBOSE") != NULL;
3030+}
3131+3232+void ACSImportFileIntoCachingServer(CFURLRef asset_url, CFStringRef source_path, CFDictionaryRef headers, CFDictionaryRef options, dispatch_queue_t callback_queue, void(^callback)(bool)) {
3333+ if (verbose)
3434+ printf("STUB: %s called\n", __PRETTY_FUNCTION__);
3535+};
3636+3737+void ACSLocateCachingServer(CFURLRef asset_url, double timeout, CFDictionaryRef options, dispatch_queue_t callback_queue, void(^callback)(CFURLRef, CFMutableDictionaryRef)) {
3838+ if (verbose)
3939+ printf("STUB: %s called\n", __PRETTY_FUNCTION__);
4040+};
4141+4242+void ACSMightCurrentNetworkHaveCachingServer(CFDictionaryRef options, dispatch_queue_t callback_queue, void(^callback)(bool)) {
4343+ if (verbose)
4444+ printf("STUB: %s called\n", __PRETTY_FUNCTION__);
4545+};
4646+4747+void ACSUpdateCachingServerHealth(CFURLRef url, CFDictionaryRef options, BOOL healthy) {
4848+ if (verbose)
4949+ printf("STUB: %s called\n", __PRETTY_FUNCTION__);
5050+};
5151+5252+void _ACSIntrospect(CFDictionaryRef options, dispatch_queue_t callback_queue, void(^callback)(CFTypeRef)) {
5353+ if (verbose)
5454+ printf("STUB: %s called\n", __PRETTY_FUNCTION__);
5555+};
5656+5757+void _ACSLocateAllCachingServers(double timeout, CFDictionaryRef options, dispatch_queue_t callback_queue, void(^callback)(CFMutableArrayRef)) {
5858+ if (verbose)
5959+ printf("STUB: %s called\n", __PRETTY_FUNCTION__);
6060+};
6161+6262+void _ACSSetTestFlags(uint64_t flags, CFDictionaryRef dictionary) {
6363+ if (verbose)
6464+ printf("STUB: %s called\n", __PRETTY_FUNCTION__);
6565+};
6666+6767+void _A_CALLBACK_BLOCK_RELEASED_AN_ASSETCACHESERVICES_OBJECT_IT_DID_NOT_OWN(int integer, const char* function_name, const char* string, void* object) {
6868+ if (verbose)
6969+ printf("STUB: %s called\n", __PRETTY_FUNCTION__);
7070+};