BBAAPIRequestManager+Private.h
2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//
// BBAAPIRequestManager+Private.h
// BBAPods
//
// Created by liumuye on 2017/9/22.
// Copyright © 2017年 Baidu. All rights reserved.
//
#import "BBAAPIRequestManager.h"
#import "BBAAFNetworkingRequestManager.h"
#import "BBAAPIRequestSubClassManager.h"
#import "BBAAPIRequestManagerProtocol.h"
NS_ASSUME_NONNULL_BEGIN
static inline void bbaapirequest_dispatch_async_safe(dispatch_queue_t queue, dispatch_block_t block) {
if (!queue || dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL) == dispatch_queue_get_label(queue)) {
block();
} else {
dispatch_async(queue, block);
}
}
/**
外部提供一个ClientIP数据提供者
*/
@protocol BBAAPIRequestClientIPDelegate <NSObject>
// 获取ClientIP值
- (NSString *)getClientIP;
// 有新的ClientIP被感知
- (void)notifyChanged:(NSString *)newClientIP;
@end
/**
* @extension
* @brief 私有方法、内部使用
*/
@interface BBAAPIRequestManager ()<BBAAPIRequestManagerProtocol>
@property (nonatomic, strong) NSOperationQueue * requestOperationQueue;
@property (nonatomic, strong) NSOperationQueue *vhRequestOperationQueue; // VeryHigh优先级请求独享队列
@property (nonatomic, assign) BOOL vhQueueUseHighQOS; // VeryHigh请求使用高qos配置
@property (nonatomic, strong) NSString * clientIP; // ClientIP
@property (nonatomic, strong) NSOperationQueue * fileRequestOperationQueue;
@property (nonatomic, weak) id<BBAAPIRequestClientIPDelegate> clientIPDelegate;
#pragma mark 私有方法
// 封装URLRequest
- (NSMutableURLRequest*) urlRequestForRequest:(BBABaseAPIRequest*)apiRequest;
// 创建SessionTask
- (NSURLSessionTask *) dataTaskWithAPIRequest:(BBABaseAPIRequest*)apiRequest
error:(NSError * __autoreleasing *)error;
// 为Task设置APIRequest Map Key所需相关的Tag (iOS7系统URLSessionTask无法添加category方法,因此这里新增方法来为Task绑定对象)
- (void)setTagForTask:(NSURLSessionTask*)task;
#pragma mark 请求记录
- (void)addRequestToList:(BBABaseAPIRequest *)apiRequest;
- (BBABaseAPIRequest*)apiRequestForTask:(NSURLSessionTask*)task;
- (BBABaseAPIRequest*)apiRequestForTask:(NSURLSessionTask *)task session:(NSURLSession*)session;
#pragma marm ClientIP解析
- (void)parseResponseForClientIP:(BBABaseAPIRequest*)apiRequest;
#pragma mark - Debug
#if DEBUG
- (void) requestOperationQueueSnapshotDescription;
#endif
#pragma mark - 搜索独享
// 11.6搜索优先, TODO: 11.7 门面改造 session requestMap 需要分开使用
- (void)addSearchRequestToList:(BBABaseAPIRequest *)apiRequest;
- (void)removeSearchRequestToList:(BBABaseAPIRequest *)apiRequest;
- (BBABaseAPIRequest*)searchRequestForTask:(NSURLSessionTask *)task;
@end
NS_ASSUME_NONNULL_END