ATConfigMgr.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. //
  2. // AntLogConfigManager.h
  3. // APRemoteLogging
  4. //
  5. // Created by 卡迩 on 2017/12/13.
  6. // Copyright © 2017年 Alipay. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "AntLogLevel.h"
  10. #import "ISampleControl.h"
  11. extern NSUInteger const kDefaultMaxLogCount;
  12. @class ATConfig;
  13. #ifdef SDK_IS4_ALIPAY
  14. @class ATRealtimeLogConfig;
  15. @class ATDelayUploadConfig;
  16. #endif
  17. /**
  18. * 埋点配置管理器
  19. */
  20. @interface ATConfigMgr : NSObject
  21. #ifdef SDK_IS4_ALIPAY
  22. @property (nonatomic, strong) ATRealtimeLogConfig *realtimeConfig;
  23. @property (nonatomic, strong) ATDelayUploadConfig *delayUploadConfig;
  24. #endif
  25. - (NSDictionary<NSString *,ATConfig *> *)allBizConfigs;
  26. - (ATConfig *)configForBiz:(NSString *)bizType;
  27. - (void)refreshConfig:(BOOL)force extInfo:(NSDictionary *)info;
  28. - (void)setExtConfigValue:(NSString *)value
  29. forKey:(NSString *)key;
  30. -(void)setExtConfigDict:(NSDictionary *)configDict;
  31. - (NSString *)extConfigValueForKey:(NSString *)key;
  32. - (void)recalculateSampleControl;
  33. - (void)notifyDidFinishLaunching:(__unused NSDictionary *)info;
  34. -(BOOL)inDelayTime;
  35. @end
  36. @interface ATConfigMgr ()
  37. @property (atomic, assign) BOOL httpsDisabled;
  38. @property (atomic, assign) BOOL lengthLimitDisabled;
  39. @property (atomic, assign) BOOL delayUpload;/**< 蓄洪功能开关*/
  40. @property (atomic, assign) BOOL fullLink;/**< 全链路监控功能开关*/
  41. @property (atomic, assign) BOOL customLog;/**< 自定义日志功能开关*/
  42. @property (atomic, assign) BOOL verifySwitch;/**< 验证功能开关*/
  43. @property (atomic, assign) BOOL floodRate;/**< 削峰率开关*/
  44. @property (atomic, assign) BOOL periodUpload;/**< 间隔上传开关*/
  45. @property (atomic, assign) NSInteger periodInterval;/**< 轮询间隔*/
  46. @property (atomic, assign) BOOL failDelay;/**< 失败后上传间隔开关*/
  47. @property (atomic, assign) BOOL emptyTask;/**< 空任务修复开关*/
  48. @end
  49. ////////////////////////////////////////////////////////////////////////////////
  50. @interface ATConfig : NSObject
  51. @property (nonatomic, assign) NSUInteger maxLogCount; /**< 条数上报阈值*/
  52. @property (nonatomic, strong) NSArray *sendNetEnvs; /**< 可上报的网络类型集合*/
  53. @property (nonatomic, strong) NSArray *events; /**< 可上报的原因集合*/
  54. @property (nonatomic, assign) AntLogLevel level; /**< 最低可写入的日志等级*/
  55. @property (nonatomic, assign) BOOL write; /**< 是否写入*/
  56. @property (nonatomic, assign) BOOL encrypt; /**< 是否加密*/
  57. @property (nonatomic, assign) BOOL realtime; /**< 是否实时通道上报*/
  58. @property (nonatomic, assign) BOOL usemetds; /**< 是否走metds域名上报*/
  59. @property (nonatomic, assign) NSInteger periodInterval; /**< 上传时间间隔*/
  60. @property (nonatomic, strong) ISampleControl *sampleControl;/**< 抽样控制策略*/
  61. @property (nonatomic, strong) DelayControl *delayControl; /**< 削峰控制策略*/
  62. + (ATConfig *)defaultConfig;
  63. + (ATConfig *)configWithDictionary:(NSDictionary *)dict;
  64. - (BOOL)netEnvValid;
  65. @end
  66. #ifdef SDK_IS4_ALIPAY
  67. @interface ATRealtimeLogConfig : NSObject
  68. @property (nonatomic, assign) BOOL enabled;
  69. @property (nonatomic, assign) NSTimeInterval timerInterval;
  70. @end
  71. @interface ATDelayUploadConfig : NSObject
  72. @property(nonatomic,strong) NSMutableDictionary* floodTime;/**< 蓄洪开启时间为key 泄洪时间为value 可以配置多个 泄洪时间 单位 100ms*/
  73. @property(nonatomic,assign) uint64_t minDelay;/**< 蓄洪最小持续时间 单位秒*/
  74. @property(nonatomic,assign) uint64_t maxDelay;/**< 蓄洪最大持续时间 单位秒*/
  75. @property(nonatomic,strong) NSString* currDesc;/**< 削峰配置当前描述*/
  76. @property(nonatomic,strong) NSString* lastDesc;/**< 削峰上次配置的描述*/
  77. @end
  78. #endif