// '########'########::'######:'########:'##:::'##: // ... ##..::##.... ##'##... ##:##.... ##:##::'##:: // ::: ##::::##:::: ##:##:::..::##:::: ##:##:'##::: // ::: ##::::########:. ######::##:::: ##:#####:::: // ::: ##::::##.... ##:..... ##:##:::: ##:##. ##::: // ::: ##::::##:::: ##'##::: ##:##:::: ##:##:. ##:: // ::: ##::::########:. ######::########::##::. ##: // :::..::::........:::......::........::..::::..:: // // UTListener.h // TBSDK // // Created by Roger.Mu on 3/19/14. // Copyright (c) 2014 Taobao.com. All rights reserved. // #import @protocol MtopLaunchTypeProtocol; @class MtopExtResponse; @class MtopExtRequest; #define UT_TYPE_PERF @"performace" #define UT_TYPE_TOTALTCP @"totalTcp" #define UT_TYPE_DEMOTELEVEL @"demote" #define UT_TYPE_STD @"stdUTLog" #define UT_TYPE_ERROR @"error" #define UT_TYPE_MTOPUT @"mtoput" #define NOTIFICATION_FILE_UPLOADED @"kTBSDKFileUploaded" // report cache @interface UTReportDataSet : NSObject @property (nonatomic, copy) NSNumber *spdyTotalTimes; @property (nonatomic, copy) NSNumber *spdyTotaldates; @property (nonatomic, copy) NSNumber *spdyTotalContentLength; @property (nonatomic, copy) NSNumber *httpTotalTimes; @property (nonatomic, copy) NSNumber *httpTotalDates; @property (nonatomic, copy) NSNumber *httpTotalContentLength; // cache properties @property (nonatomic, assign) int cacheTotalTimes; @property (nonatomic, assign) int cacheReadTotalDates; @property (nonatomic, assign) int cacheReadTotalTimes; @property (nonatomic, assign) int cacheWriteTotalDates; @property (nonatomic, assign) int cacheWriteTotalTimes; @property (nonatomic, assign) int cacheWriteTotalContentLength; + (UTReportDataSet *)shareInstance; - (void) saveHttpTotalData:(NSInteger) totalTimes withTotalDate:(NSNumber *) totalDate withTotalContentLength:(NSNumber *) totalContentLength; - (void) saveSPDYTotalData:(NSInteger) totalTimes withTotalDate:(NSNumber *) totalDate withTotalContentLength:(NSNumber *) totalContentLength; // increment tcp link times - (void) incrementTcpLinks:(NSNumber *) times; // increment cache hit times - (void) incrementCacheHitTimes:(NSNumber *) readDate; // increment cache times - (void) incrementCacheTimes; // increment cache - (void) incrementCacheWrite:(NSNumber *) writeDate withCacheSize: (long) cacheSize; - (int) getTotalTimes; - (double) getTotalDates; - (int) getTotalContantLength; - (NSInteger) getTcpLinkTimes; - (NSInteger) getTcpLinkDates; - (void) cleanAll; @end // write log data set of UT framework @interface UTDataSet : NSObject @property (nonatomic, copy) NSNumber *dnsStartTime; @property (nonatomic, copy) NSNumber *dnsEndTime; @property (nonatomic, copy) NSString *tcpLinkDate; @property (nonatomic, copy) NSString *oneWayTime; @property (nonatomic, copy) NSString *dnsTime; @property (nonatomic, copy) NSString *utType; @property (nonatomic, copy) NSString *tcpTotalTimes; @property (nonatomic, copy) NSString *tcpTotalDates; @property (nonatomic, copy) NSString *SpdyTotalTimes; @property (nonatomic, copy) NSString *errorCode; @property (nonatomic, copy) NSString *errorInfo; @property (nonatomic, copy) NSString *errorMemo; @property (nonatomic, assign) int eventid; @property (nonatomic, copy) NSDictionary *args; @property (nonatomic, copy) NSString *arg1; @property (nonatomic, copy) NSString *arg2; @property (nonatomic, copy) NSString *arg3; @property (nonatomic, copy) NSString *cacheSwitch; @property (nonatomic, copy) NSString *cacheHitType; @property (nonatomic, copy) NSString *expression; // mtop properties @property (atomic, assign) CFAbsoluteTime mtopStartTime; @property (atomic, assign) CFAbsoluteTime mtopEndTime; @property (nonatomic, assign) CFAbsoluteTime jsonParseStartTime; @property (nonatomic, assign) CFAbsoluteTime jsonParseEndTime; @property (nonatomic, assign) CFAbsoluteTime sendWaitStart; @property (nonatomic, assign) CFAbsoluteTime sendWaitEnd; @property (nonatomic, copy) NSString *mtopOneWayTime; @property (nonatomic, copy) NSString *isSync; //mtop fullTrace measure @property (nonatomic,copy) NSString *mtopReqProcessStartT; @property (nonatomic,copy) NSString *mtopRspProcessStartT; @property (nonatomic,copy) NSString *mtopRspDispatchT; @property (nonatomic,copy) NSString *mtopRspCbStartT; @property (nonatomic,copy) NSString *mtopRspCbEndT; @property (nonatomic,copy) NSString *jsonPraseTime; -(UTDataSet *)initWithType: (NSString *)utype; @end // UT log base object @interface TBSDKUTUtility : NSObject // ----- properties ----- @property (nonatomic, strong) NSMutableArray *utCacheArray; // ---------------------- #pragma mark init // UT share instance + (TBSDKUTUtility *)shareInstance; - (TBSDKUTUtility *)init; #pragma mark event listener // dns parse event by listen - (void)onDnsParseTime: (UTDataSet *) dataSet; // tcp create link event by listen - (void)onTcpLinkTime: (long long) startDate withEndDate: (long long) endDate; // request start event - (void)onRequestStart: (NSString *) requestType; // request cache event - (void)onRequestCache; // request hit cache event - (void)onHitedRequestCache: (NSNumber *) readDate; // request write cache event - (void)onWriteResponseCache: (NSNumber *) writeDate withCacheSize: (long) cacheSize; // request end event - (void)onRequestEnd: (NSString *) requestType withContentLength: (int) contentLength withError : (NSError *) error; // handle error event - (void)onError: (NSError *) error; // on times finished event - (void)onOneTimesFinished: (UTDataSet *) dataSet; // write UT log - (void)writeUTLog: (UTDataSet *)dataSet; #pragma mark notification // home key event listener -(void) writeUtLogByHomeKey: (NSNotification *) notification; // spdy demote event listener + (void) writeUtLogByDemoteSpdy: (NSString *) errorInfo withUrl:(NSString *) url; @end /** * 全链路埋点类 */ @interface MtopFullTraceUtil : NSObject + (instancetype)sharedInstance; - (NSString *)fullTraceID; - (void)reportTraceData:(NSDictionary *)reportData; - (void)reportTraceData:(MtopExtRequest *)erequest response:(MtopExtResponse *)response; - (id)fetchLaunchObj; @end