QNConfiguration.m 3.3 KB

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