diff options
author | Fabian Guerra Soto <fabian.guerra@mapbox.com> | 2019-02-18 13:16:20 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-18 13:16:20 -0800 |
commit | 1fc7a9b82ea0c064c20247f0902b3854fff1942f (patch) | |
tree | 7f518f198ec241c55666fb6c9baa7b3179945c80 /platform/darwin/src/MGLNetworkConfiguration.m | |
parent | 1c99b199c62f239ef2a9e1f2f23b0d10533b381a (diff) | |
download | qtlocation-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.m | 52 |
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 |