BBAAPIRequestManagerProtocol.h
2.56 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
84
85
86
87
88
//
// BBAAPIRequestManagerProtocol.h
// BBAAPIRequest
//
// Created by chenjia09 on 2020/1/20.
// Copyright © 2020 Baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/// 抽象APIRequestManagaer接口, 目前BBAAPIRequestManager和BBAHTTPManager遵循它来实现
@protocol BBAAPIRequestManagerProtocol <NSObject>
@required
#pragma mark - Flow Control
/// 入队一个请求
/// @param request APIRequest
- (void)enqueueAPIRequest:(BBABaseAPIRequest *)request;
/// 取消一个请求
/// @param apiRequest APIRequest
- (void)cancelAPIRequest:(BBABaseAPIRequest *)apiRequest;
/// 生成对应的NSURLRequest
/// @param apiRequest APIRequest
- (NSMutableURLRequest*)urlRequestForRequest:(BBABaseAPIRequest*)apiRequest;
/// 预处理一个请求
/// @param apiRequest APIRequest
- (void)preprocessRequest:(BBABaseAPIRequest *)apiRequest;
/// 生成对应的NSURLSessionTask
/// @param apiRequest APIRequest
/// @param error 错误
- (NSURLSessionTask *)dataTaskWithAPIRequest:(BBABaseAPIRequest*)apiRequest
error:(NSError * __autoreleasing *)error;
/// 为Task设置一个唯一标识Key
/// @param task NSURLSessionTask
- (void)setTagForTask:(NSURLSessionTask*)task;
/// 将请求放入StorngToWeak的Map中缓存
/// @param apiRequest APIRequest
- (void)addRequestToList:(BBABaseAPIRequest *)apiRequest;
/// 将请求移出StrongToWeak的Map缓存;如果APIRequest已析构,则会自动移出
/// @param request APIRequest
- (void)removeRequestFromList:(BBABaseAPIRequest *)request;
/// 统计请求开始
/// @param apiRequest APIRequest
- (void)statisticsBusinessTotalAction:(BBABaseAPIRequest*) apiRequest;
#pragma mark - Metrics
/// 请求发送前收集统计信息
/// @param apiRequest APIRequest
- (void)collectMetricsDidRequestStart:(BBABaseAPIRequest *)apiRequest;
/// 请求完成后收集统计信息
/// @param apiRequest APIRequest
- (void)collectMetricsDidRequestEnd:(BBABaseAPIRequest *)apiRequest;
/// 收集NSURLSessionMetric
/// @param taskMetrics TaskMetrics
/// @param apiRequest APIRequest
- (void)collectURLSessionMetrics:(NSURLSessionTaskMetrics *)taskMetrics withRequest:(BBABaseAPIRequest *)apiRequest API_AVAILABLE(ios(10.0));
#pragma mark - Error
/// 解析错误
/// @param err 错误
/// @param apiRequest APIRequest
- (void)parseNetworkError:(NSError *)err withRequest:(BBABaseAPIRequest *)apiRequest;
#pragma mark - Cronet
/// 判断当前Session是否注入了Cronet
/// @param session NSURLSession
- (BOOL)isInjectedWithCronet:(NSURLSession *)session;
@end
NS_ASSUME_NONNULL_END