BBANetworkSilentDetectManager.h 1.67 KB
//
//  BBANetworkSilentDetectManager.h
//  BBAAPIRequestExt
//
//  Created by baidu on 2020/7/6.
//  Copyright © 2020 Baidu. All rights reserved.
//
//  静默探测管理类,对外提供云控探测能力

#import <Foundation/Foundation.h>
#import <BBAAPIRequest/BBAAPIReqUtils.h>
#import <BBAAPIRequest/BBANetworkSilentDetectModel.h>
#import "BBANetworkSilentDetectUtils.h"

NS_ASSUME_NONNULL_BEGIN

typedef NSArray<NSString *> * _Nullable (^BANetworkSilentDetectIPGetter)(NSString * _Nullable host);
//  外部进行HTTPDNS探测回调block
typedef BBADnsResultInfo * _Nullable (^BBANetworkSilentDetectHttpDnsIPGetter)(NSString *  _Nullable host);

@interface BBANetworkSilentDetectManager : NSObject

/// 通过host获取ip列表block,同步返回ip列表
@property (nonatomic, copy) BANetworkSilentDetectIPGetter ipGetter;

/// 外部注入HTTPDNS探测结果
@property (nonatomic, copy) BBANetworkSilentDetectHttpDnsIPGetter httpDnsIPGetter;

+ (instancetype)sharedManager;

/// 根据概率&配置信息,进行静默探测(调用前需先设置ipGetter)
/// @param groups 配置数据
/// @param numerator 概率分子
/// @param denominator 概率分母
/// @param probeType 探测类型
/// @param completion 回调block,若为空不会执行探测任务,block中参数logs,探测日志结果数组,每一条为一个ip探测任务结果
- (void)tryToDetectWithArray:(NSArray *)groups
                   numerator:(NSInteger)numerator
                 denominator:(NSInteger)denominator
                   probeType:(BBANetworkDetectType)probeType
             completionBlock:(void (^)(NSArray * _Nullable logs, BOOL reachabilityStatusChanged))completion;

@end

NS_ASSUME_NONNULL_END