QNConfiguration.m 2.6 KB

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