QNUploadInfoReporter.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. //
  2. // QNUploadInfoReporter.h
  3. // QiniuSDK
  4. //
  5. // Created by WorkSpace_Sun on 2019/6/24.
  6. // Copyright © 2019 Qiniu. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #if __IPHONE_OS_VERSION_MIN_REQUIRED
  10. #import <UIKit/UIKit.h>
  11. #endif
  12. @class QNResponseInfo;
  13. // base item
  14. @interface QNReportBaseItem : NSObject
  15. - (NSString *)toJson; // get json with report item
  16. @end
  17. // request type item - 用于统计单个请求的打点信息
  18. @interface QNReportRequestItem : QNReportBaseItem
  19. + (instancetype)buildWithUpType:(NSString *)up_type
  20. TargetBucket:(NSString *)target_bucket
  21. targetKey:(NSString *)target_key
  22. fileOffset:(int64_t)file_offset
  23. targetRegionId:(NSString *)target_region_id
  24. currentRegionId:(NSString *)current_region_id
  25. prefetchedIpCount:(int64_t)prefetched_ip_count
  26. pid:(int64_t)pid
  27. tid:(int64_t)tid
  28. statusCode:(int64_t)status_code
  29. reqId:(NSString *)req_id
  30. host:(NSString *)host
  31. remoteIp:(NSString *)remote_ip
  32. port:(int64_t)port
  33. totalElapsedTime:(int64_t)total_elapsed_time
  34. dnsElapsedTime:(int64_t)dns_elapsed_time
  35. connectElapsedTime:(int64_t)connect_elapsed_time
  36. tlsConnectElapsedTime:(int64_t)tls_connect_elapsed_time
  37. requestElapsedTime:(int64_t)request_elapsed_time
  38. waitElapsedTime:(int64_t)wait_elapsed_time
  39. responseElapsedTime:(int64_t)response_elapsed_time
  40. bytesSent:(int64_t)bytes_sent
  41. bytesTotal:(int64_t)bytes_total
  42. errorType:(NSString *)error_type
  43. errorDescription:(NSString *)error_description
  44. networkType:(NSString *)network_type
  45. signalStrength:(int64_t)signal_strength;
  46. @end
  47. // block type item - 用于统计分片上传整体质量信息
  48. @interface QNReportBlockItem : QNReportBaseItem
  49. + (instancetype)buildWithTargetRegionId:(NSString *)target_region_id
  50. currentRegionId:(NSString *)current_region_id
  51. totalElapsedTime:(int64_t)total_elapsed_time
  52. bytesSent:(int64_t)bytes_sent
  53. recoveredFrom:(int64_t)recovered_from
  54. fileSize:(int64_t)file_size
  55. pid:(int64_t)pid
  56. tid:(int64_t)tid
  57. upApiVersion:(int64_t)up_api_version;
  58. @end
  59. // quality type item - 用于统计上传结果
  60. @interface QNReportQualityItem : QNReportBaseItem
  61. + (instancetype)buildWithResult:(NSString *)result
  62. totalElapsedTime:(int64_t)total_elapsed_time
  63. requestsCount:(int64_t)requests_count
  64. regionsCount:(int64_t)regions_count
  65. bytesSent:(int64_t)bytes_sent;
  66. @end
  67. @interface QNReportConfig : NSObject
  68. - (id)init __attribute__((unavailable("Use sharedInstance: instead.")));
  69. + (instancetype)sharedInstance;
  70. /**
  71. * 是否开启sdk上传信息搜集 默认为YES
  72. */
  73. @property (nonatomic, assign, getter=isReportEnable) BOOL reportEnable;
  74. /**
  75. * 每次上传最小时间间隔 单位:分钟 默认为10分钟
  76. */
  77. @property (nonatomic, assign) uint32_t interval;
  78. /**
  79. * 记录文件大于 uploadThreshold 后才可能触发上传,单位:字节 默认为4 * 1024
  80. */
  81. @property (nonatomic, assign) uint64_t uploadThreshold;
  82. /**
  83. * 记录文件最大值 要大于 uploadThreshold 单位:字节 默认为2 * 1024 * 1024
  84. */
  85. @property (nonatomic, assign) uint64_t maxRecordFileSize;
  86. /**
  87. * 记录文件所在文件夹目录 默认为:.../沙盒/Library/Caches/com.qiniu.report
  88. */
  89. @property (nonatomic, copy) NSString *recordDirectory;
  90. /**
  91. * 信息上报服务器地址
  92. */
  93. @property (nonatomic, copy, readonly) NSString *serverURL;
  94. /**
  95. * 信息上报请求超时时间 单位:秒 默认为10秒
  96. */
  97. @property (nonatomic, assign, readonly) NSTimeInterval timeoutInterval;
  98. @end
  99. #define Reporter [QNUploadInfoReporter sharedInstance]
  100. @interface QNUploadInfoReporter : NSObject
  101. @property (nonatomic, copy, readonly) NSString *X_Log_Client_Id;
  102. - (id)init __attribute__((unavailable("Use sharedInstance: instead.")));
  103. + (instancetype)sharedInstance;
  104. /**
  105. * 上报统计信息
  106. *
  107. * @param jsonString 需要记录的json字符串
  108. * @param token 上传凭证
  109. *
  110. */
  111. - (void)report:(NSString *)jsonString token:(NSString *)token;
  112. /**
  113. * 清空统计信息
  114. */
  115. - (void)clean;
  116. @end