QNConfiguration.m 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. //
  2. // QNConfiguration.m
  3. // QiniuSDK
  4. //
  5. // Created by bailong on 15/5/21.
  6. // Copyright (c) 2015年 Qiniu. All rights reserved.
  7. //
  8. #import "QNConfiguration.h"
  9. #import "QNResponseInfo.h"
  10. #import "QNSessionManager.h"
  11. #import "QNUpToken.h"
  12. #import "QNReportConfig.h"
  13. #import "QNAutoZone.h"
  14. const UInt32 kQNBlockSize = 4 * 1024 * 1024;
  15. const UInt32 kQNDefaultDnsCacheTime = 2 * 60;
  16. @implementation QNConfiguration
  17. + (instancetype)defaultConfiguration{
  18. QNConfigurationBuilder *builder = [[QNConfigurationBuilder alloc] init];
  19. return [[QNConfiguration alloc] initWithBuilder:builder];
  20. }
  21. + (instancetype)build:(QNConfigurationBuilderBlock)block {
  22. QNConfigurationBuilder *builder = [[QNConfigurationBuilder alloc] init];
  23. block(builder);
  24. return [[QNConfiguration alloc] initWithBuilder:builder];
  25. }
  26. - (instancetype)initWithBuilder:(QNConfigurationBuilder *)builder {
  27. if (self = [super init]) {
  28. _useConcurrentResumeUpload = builder.useConcurrentResumeUpload;
  29. _resumeUploadVersion = builder.resumeUploadVersion;
  30. _concurrentTaskCount = builder.concurrentTaskCount;
  31. _chunkSize = builder.chunkSize;
  32. if (builder.resumeUploadVersion == QNResumeUploadVersionV1) {
  33. if (_chunkSize < 1024) {
  34. _chunkSize = 1024;
  35. }
  36. } else if (builder.resumeUploadVersion == QNResumeUploadVersionV2) {
  37. if (_chunkSize < 1024 * 1024) {
  38. _chunkSize = 1024 * 1024;
  39. }
  40. }
  41. _putThreshold = builder.putThreshold;
  42. _retryMax = builder.retryMax;
  43. _retryInterval = builder.retryInterval;
  44. _timeoutInterval = builder.timeoutInterval;
  45. _recorder = builder.recorder;
  46. _recorderKeyGen = builder.recorderKeyGen;
  47. _proxy = builder.proxy;
  48. _converter = builder.converter;
  49. _zone = builder.zone;
  50. _useHttps = builder.useHttps;
  51. _allowBackupHost = builder.allowBackupHost;
  52. }
  53. return self;
  54. }
  55. @end
  56. @interface QNGlobalConfiguration()
  57. @end
  58. @implementation QNGlobalConfiguration
  59. + (instancetype)shared{
  60. static QNGlobalConfiguration *config = nil;
  61. static dispatch_once_t onceToken;
  62. dispatch_once(&onceToken, ^{
  63. config = [[QNGlobalConfiguration alloc] init];
  64. [config setupData];
  65. });
  66. return config;
  67. }
  68. - (void)setupData{
  69. _isDnsOpen = YES;
  70. _dnsCacheDir = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches/Dns"];
  71. _dnsRepreHostNum = 2;
  72. _dnsCacheTime = kQNDefaultDnsCacheTime;
  73. _globalHostFrozenTime = 10;
  74. _partialHostFrozenTime = 5*60;
  75. _connectCheckTimeout = 3;
  76. _connectCheckURLStrings = @[@"https://www.qiniu.com", @"https://www.baidu.com", @"https://www.google.com"];
  77. }
  78. @end
  79. @implementation QNConfigurationBuilder
  80. - (instancetype)init {
  81. if (self = [super init]) {
  82. _zone = [[QNAutoZone alloc] init];
  83. _chunkSize = 2 * 1024 * 1024;
  84. _putThreshold = 4 * 1024 * 1024;
  85. _retryMax = 1;
  86. _timeoutInterval = 90;
  87. _retryInterval = 0.5;
  88. _recorder = nil;
  89. _recorderKeyGen = nil;
  90. _proxy = nil;
  91. _converter = nil;
  92. _useHttps = YES;
  93. _allowBackupHost = YES;
  94. _useConcurrentResumeUpload = NO;
  95. _resumeUploadVersion = QNResumeUploadVersionV1;
  96. _concurrentTaskCount = 3;
  97. }
  98. return self;
  99. }
  100. @end