QNUploadRequestMetrics.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. //
  2. // QNUploadRequestMetrics.h
  3. // QiniuSDK
  4. //
  5. // Created by yangsen on 2020/4/29.
  6. // Copyright © 2020 Qiniu. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "QNUploadRegionInfo.h"
  10. NS_ASSUME_NONNULL_BEGIN
  11. @interface QNUploadMetrics : NSObject
  12. @property (nonatomic, nullable, strong, readonly) NSDate *startDate;
  13. @property (nonatomic, nullable, strong, readonly) NSDate *endDate;
  14. @property (nonatomic, nullable, strong, readonly) NSNumber *totalElapsedTime;
  15. //MARK:-- 构造
  16. + (instancetype)emptyMetrics;
  17. - (void)start;
  18. - (void)end;
  19. @end
  20. #define kQNMetricsRequestHijacked @"forsure"
  21. #define kQNMetricsRequestMaybeHijacked @"maybe"
  22. @interface QNUploadSingleRequestMetrics : QNUploadMetrics
  23. // 请求的 httpVersion
  24. @property (nonatomic, copy)NSString *httpVersion;
  25. // 请求是否劫持
  26. @property (nonatomic, copy)NSString *hijacked;
  27. @property (nonatomic, assign, readonly)BOOL isForsureHijacked;
  28. @property (nonatomic, assign, readonly)BOOL isMaybeHijacked;
  29. @property (nonatomic, copy) NSString *syncDnsSource;
  30. @property (nonatomic, strong) NSError *syncDnsError;
  31. // 只有进行网络检测才会有 connectCheckMetrics
  32. @property (nonatomic, nullable , strong) QNUploadSingleRequestMetrics *connectCheckMetrics;
  33. // 错误信息
  34. @property (nonatomic, nullable , strong) NSError *error;
  35. @property (nonatomic, nullable, copy) NSURLRequest *request;
  36. @property (nonatomic, nullable, copy) NSURLResponse *response;
  37. @property (nonatomic, nullable, copy) NSDate *domainLookupStartDate;
  38. @property (nonatomic, nullable, copy) NSDate *domainLookupEndDate;
  39. @property (nonatomic, nullable, strong, readonly) NSNumber *totalDnsTime;
  40. @property (nonatomic, nullable, copy) NSDate *connectStartDate;
  41. @property (nonatomic, nullable, copy) NSDate *connectEndDate;
  42. @property (nonatomic, nullable, strong, readonly) NSNumber *totalConnectTime;
  43. @property (nonatomic, nullable, copy) NSDate *secureConnectionStartDate;
  44. @property (nonatomic, nullable, copy) NSDate *secureConnectionEndDate;
  45. @property (nonatomic, nullable, strong, readonly) NSNumber *totalSecureConnectTime;
  46. @property (nonatomic, nullable, copy) NSDate *requestStartDate;
  47. @property (nonatomic, nullable, copy) NSDate *requestEndDate;
  48. @property (nonatomic, nullable, strong, readonly) NSNumber *totalRequestTime;
  49. @property (nonatomic, nullable, strong, readonly) NSNumber *totalWaitTime;
  50. @property (nonatomic, nullable, copy) NSDate *responseStartDate;
  51. @property (nonatomic, nullable, copy) NSDate *responseEndDate;
  52. @property (nonatomic, nullable, strong, readonly) NSNumber *totalResponseTime;
  53. @property (nonatomic, assign) int64_t countOfRequestHeaderBytesSent;
  54. @property (nonatomic, assign) int64_t countOfRequestBodyBytesSent;
  55. @property (nonatomic, assign) int64_t countOfResponseHeaderBytesReceived;
  56. @property (nonatomic, assign) int64_t countOfResponseBodyBytesReceived;
  57. @property (nonatomic, nullable, copy) NSString *localAddress;
  58. @property (nonatomic, nullable, copy) NSNumber *localPort;
  59. @property (nonatomic, nullable, copy) NSString *remoteAddress;
  60. @property (nonatomic, nullable, copy) NSNumber *remotePort;
  61. @property (nonatomic, strong, readonly) NSNumber *totalBytes;
  62. @property (nonatomic, strong, readonly) NSNumber *bytesSend;
  63. @property (nonatomic, strong, readonly) NSNumber *perceptiveSpeed;
  64. @end
  65. @interface QNUploadRegionRequestMetrics : QNUploadMetrics
  66. @property (nonatomic, strong, readonly) NSNumber *requestCount;
  67. @property (nonatomic, strong, readonly) NSNumber *bytesSend;
  68. @property (nonatomic, strong, readonly) id <QNUploadRegion> region;
  69. @property (nonatomic, strong, readonly) QNUploadSingleRequestMetrics *lastMetrics;
  70. @property (nonatomic, copy, readonly) NSArray<QNUploadSingleRequestMetrics *> *metricsList;
  71. //MARK:-- 构造
  72. - (instancetype)initWithRegion:(id <QNUploadRegion>)region;
  73. - (void)addMetricsList:(NSArray <QNUploadSingleRequestMetrics *> *)metricsList;
  74. - (void)addMetrics:(QNUploadRegionRequestMetrics*)metrics;
  75. @end
  76. @interface QNUploadTaskMetrics : QNUploadMetrics
  77. @property (nonatomic, copy, readonly) NSString *upType;
  78. @property (nonatomic, strong, readonly) NSNumber *requestCount;
  79. @property (nonatomic, strong, readonly) NSNumber *bytesSend;
  80. @property (nonatomic, strong, readonly) NSNumber *regionCount;
  81. @property (nonatomic, strong, readonly) QNUploadRegionRequestMetrics *lastMetrics;
  82. @property (nonatomic, strong) QNUploadRegionRequestMetrics *ucQueryMetrics;
  83. @property (nonatomic, strong) NSArray<id <QNUploadRegion>> *regions;
  84. + (instancetype)taskMetrics:(NSString *)upType;
  85. - (void)addMetrics:(QNUploadRegionRequestMetrics *)metrics;
  86. @end
  87. NS_ASSUME_NONNULL_END