summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLNetworkConfiguration.m
diff options
context:
space:
mode:
authorFabian Guerra Soto <fabian.guerra@mapbox.com>2019-02-18 13:16:20 -0800
committerGitHub <noreply@github.com>2019-02-18 13:16:20 -0800
commit1fc7a9b82ea0c064c20247f0902b3854fff1942f (patch)
tree7f518f198ec241c55666fb6c9baa7b3179945c80 /platform/darwin/src/MGLNetworkConfiguration.m
parent1c99b199c62f239ef2a9e1f2f23b0d10533b381a (diff)
downloadqtlocation-mapboxgl-1fc7a9b82ea0c064c20247f0902b3854fff1942f.tar.gz
[ios, macos] Expose the url session configuration object. (#13886)
The `MGLNetworkConfiguration` class was make public, and added `sessionConfiguration` property to let developers customize the `NSURLSessionConfiguration` object that is used to make HTTP requests in the SDK.
Diffstat (limited to 'platform/darwin/src/MGLNetworkConfiguration.m')
-rw-r--r--platform/darwin/src/MGLNetworkConfiguration.m52
1 files changed, 40 insertions, 12 deletions
diff --git a/platform/darwin/src/MGLNetworkConfiguration.m b/platform/darwin/src/MGLNetworkConfiguration.m
index 61422f7caa..8262e7eea1 100644
--- a/platform/darwin/src/MGLNetworkConfiguration.m
+++ b/platform/darwin/src/MGLNetworkConfiguration.m
@@ -1,23 +1,51 @@
#import "MGLNetworkConfiguration.h"
+@interface MGLNetworkConfiguration ()
+
+@property (strong) NSURLSessionConfiguration *sessionConfig;
+
+@end
+
@implementation MGLNetworkConfiguration
+ (instancetype)sharedManager {
static dispatch_once_t onceToken;
static MGLNetworkConfiguration *_sharedManager;
- void (^setupBlock)(void) = ^{
- dispatch_once(&onceToken, ^{
- _sharedManager = [[self alloc] init];
- });
- };
- if (![[NSThread currentThread] isMainThread]) {
- dispatch_sync(dispatch_get_main_queue(), ^{
- setupBlock();
- });
- } else {
- setupBlock();
- }
+ dispatch_once(&onceToken, ^{
+ _sharedManager = [[self alloc] init];
+ _sharedManager.sessionConfiguration = nil;
+ });
+
return _sharedManager;
}
+- (void)setSessionConfiguration:(NSURLSessionConfiguration *)sessionConfiguration {
+ @synchronized (self) {
+ if (sessionConfiguration == nil) {
+ _sessionConfig = [self defaultSessionConfiguration];
+ } else {
+ _sessionConfig = sessionConfiguration;
+ }
+ }
+}
+
+- (NSURLSessionConfiguration *)sessionConfiguration {
+ NSURLSessionConfiguration *sessionConfig = nil;
+ @synchronized (self) {
+ sessionConfig = _sessionConfig;
+ }
+ return sessionConfig;
+}
+
+- (NSURLSessionConfiguration *)defaultSessionConfiguration {
+ NSURLSessionConfiguration* sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
+
+ sessionConfiguration.timeoutIntervalForResource = 30;
+ sessionConfiguration.HTTPMaximumConnectionsPerHost = 8;
+ sessionConfiguration.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
+ sessionConfiguration.URLCache = nil;
+
+ return sessionConfiguration;
+}
+
@end