summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLNetworkConfiguration.m
diff options
context:
space:
mode:
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