BBAAPIRequestSubClassManager.h 2.82 KB
//
//  BBAAPIRequestSubClassManager.h
//  BBAAPIRequest
//
//  Created by chenjia09 on 2018/9/21.
//

#import "BBAAPIRequestManager.h"
#import "BBAAFNetworkingRequestManager.h"
@class BBABaseAPIRequest;

@interface BBAAPIRequestManager ()
@property (nonatomic, strong) NSMapTable * requestHashMap;
@property (nonatomic, assign, getter=isEnableTimeOutTurbonetLog) BOOL enableTimeOutTurbonetLog;

// Don't override
#pragma mark tasks
- (id)getTagForTask:(NSURLSessionTask*)task;

- (void)lockTaskList;
- (void)unlockTaskList;

// Override
#pragma mark Requests
//  对请求对象进行预处理
- (void) preprocessRequest:(BBABaseAPIRequest *)apiRequest;
//  对响应对象进行后处理
- (void) postprocessResponse: (BBABaseAPIRequest *)apiRequest;

- (void)removeRequestFromList:(BBABaseAPIRequest *)request;

#pragma mark Metrics

- (void)collectMetricsDidRequestStart:(BBABaseAPIRequest *)apiRequest;

- (void)collectMetricsDidRequestEnd:(BBABaseAPIRequest *)apiRequest;

- (void)collectURLSessionMetrics:(NSURLSessionTaskMetrics *)taskMetrics withRequest:(BBABaseAPIRequest *)apiRequest API_AVAILABLE(ios(10.0));

#pragma mark Error

- (void)parseNetworkError:(NSError *)err withRequest:(BBABaseAPIRequest *)apiRequest;

#pragma mark - Cronet

- (NSDictionary *)collectCronetHeaders:(NSDictionary *)metricsHeader withRequest:(BBABaseAPIRequest *)apiRequest;

- (BOOL)isInjectedWithCronet:(NSURLSession *)session;

#pragma mark 数据打点

- (void) handleURLResponseSuccessWithRequest:(BBABaseAPIRequest*) apiRequest;
- (void) handleURLResponseFailWithRequest:(BBABaseAPIRequest*) apiRequest;
- (void) handleTTFBWithRequest:(BBABaseAPIRequest *)apiRequest;
- (void) statisticsBusinessTotalAction: (BBABaseAPIRequest *) apiRequest;
- (void) statisticsBusinessSuccessAction: (BBABaseAPIRequest *) apiRequest;
- (void) statisticsBusinessFailAction : (BBABaseAPIRequest *) apiRequest;
- (void) statisticsBusinessDNSStateAction : (BBABaseAPIRequest *) apiRequest state: (NSString *) state;
- (void) handleTaskCompletion: (NSURLSessionTask *) task response: (NSURLResponse *) response responseObject: (id) responseObject error: (NSError *) error;

#pragma mark DEBUG
- (void) debugInfoForRequestStart: (BBABaseAPIRequest*) apiRequest;
- (void) debugInfoForRequestCompletion: (BBABaseAPIRequest*) apiRequest;

#pragma mark Quic
- (BOOL) isQuicRequest: (BBABaseAPIRequest *) apiRequest;

#pragma mark Multipath
- (BOOL)isBind4GRequest:(BBABaseAPIRequest *)apiRequest;

- (void)storeResumeData:(NSData *)data withApiRequest:(BBABaseAPIRequest *)apiRequest;
@end

@interface BBAAFNetworkingRequestManager ()
#pragma mark - Callbacks
// Don't override
- (void) bindCallbacks: (BBABaseAPIRequest *)request withSessionManager: (AFHTTPSessionManager *) sessionManager;
@end

@interface BBANSURLSessionRequestManager ()
@property (nonatomic, readonly, strong) dispatch_queue_t sdtQueue;
@end