You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

157 lines
5.0 KiB

4 years ago
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#import <Foundation/Foundation.h>
#import "WXSDKInstance.h"
#define WXTNetworkHanding @"loadJS"
#define WXTExecJS @"execJS"
#define WXTJSCall @"jsCall"
#define WXTDomCall @"domCall"
#define WXTRender @"render"
#define WXTRenderFinish @"renderFinish"
#define WXTJSBridgeThread @"JSThread"
#define WXTDOMThread @"DOMThread"
#define WXTUIThread @"UIThread"
#define WXTMainThread @"MainThread"
#define WXTracingBegin @"B"
#define WXTracingEnd @"E"
#define WXTracingDuration @"D"
#define WXTracingInstant @"i"
#define WXTracingDurationDefault 0
typedef enum : NSUInteger {
// global
WXTracingNetworkHanding = 0,
WXTracingDataHanding,
WXTracingRender
} WXTracingTag;
@interface WXTracingApi:NSObject
@property (nonatomic, copy) NSString *name; //
@property (nonatomic, copy) NSString *className; //
@property (nonatomic, copy) NSString *method; //
@end
@interface WXTracing:NSObject
@property (nonatomic, copy) NSString *ref; // compnonet id
@property (nonatomic, copy) NSString *parentRef; // compnonet id
@property (nonatomic, copy) NSString *className; // compnonet class name or module class name
@property (nonatomic, copy) NSString *name; // register name
@property (nonatomic, copy) NSString *ph; // phase
@property (nonatomic) NSTimeInterval ts; // time
@property (nonatomic) long long traceId;
@property (nonatomic) NSTimeInterval duration;
@property (nonatomic, copy) NSString *fName; // functionName
@property (nonatomic, copy) NSString *iid; // instance id
@property (nonatomic) long long parentId;// parent event id
@property (nonatomic, copy) NSString *bundleUrl;
@property (nonatomic, copy) NSString *threadName;
@property (nonatomic, strong) NSMutableArray *childrenRefs; // children ids
-(NSDictionary *)dictionary;
@end
@interface WXTracingTask:NSObject
@property (nonatomic, copy) NSString *iid;
@property (nonatomic) long long counter;
@property (nonatomic, copy) NSString *tag;
@property (nonatomic, copy) NSString *bundleUrl;
@property (nonatomic, strong) NSMutableArray *tracings;
@property (nonatomic, copy) NSString *bundleJSType; //
@end
@interface WXTracingManager : NSObject
/**
* @discusstion weex perfermance tracing state
* @return isTracing , NO in the release environment.
*/
+(BOOL)isTracing;
/**
* @discusstion set weex perfermance tracing state , you should use in debug environment
* @param isTracing YES weex will be traced, NO weex will not be traced .
*/
+(void)switchTracing:(BOOL)isTracing;
/**
* @discusstion weex perfermance tracing state
* @param iid the instance id.
* @param ref the component ref
* @param className the module or component class name
* @param name the module or component name
* @param phase the trace phase
* @param functionName function name
* @param options the optional refer:support ts,duration,parentRef
*/
+(void)startTracingWithInstanceId:(NSString *)iid ref:(NSString*)ref className:(NSString *)className name:(NSString *)name phase:(NSString *)phase functionName:(NSString *)functionName options:(NSDictionary *)options;
/**
* @discusstion fetch tracing data
* @return the tracing data
*/
+(NSMutableDictionary*)getTracingData;
/**
* @discusstion clear tracing data
*/
+(void)clearTracingData;
/**
* @discusstion get current time
*/
+(NSTimeInterval)getCurrentTime;
/**
* @discusstion set bundle type
* @param jsBundleString the bundle source.
* @param iid the instance id.
*/
+(void)setBundleJSType:(NSString *)jsBundleString instanceId:(NSString *)iid;
/**
* @discusstion fetch the weex moudle component handler info
* @return the weex moudle component handler info
*/
+(NSDictionary *)getTacingApi;
/**
* @discusstion commit tracing info
* @param instanceId the instance id.
*/
+(void )commitTracing:(NSString *)instanceId;
/**
* @discusstion commit summary info
* @param instanceId the instance id.
*/
+ (void)commitTracingSummaryInfo:(NSDictionary *)info withInstanceId:(NSString *)instanceId;
/**
* @discusstion destroy Traincg Task by Instance
* @param instanceId the instanceId.
*/
+(void)destroyTraincgTaskWithInstance:(NSString *)instanceId;
@end