75 lines
2.4 KiB
Objective-C
75 lines
2.4 KiB
Objective-C
#if __has_include(<Sentry/SentryDefines.h>)
|
||
# import <Sentry/SentryDefines.h>
|
||
#else
|
||
# import "SentryDefines.h"
|
||
#endif
|
||
|
||
#if SENTRY_HAS_UIKIT
|
||
|
||
# if __has_include(<Sentry/SentryProfilingConditionals.h>)
|
||
# import <Sentry/SentryProfilingConditionals.h>
|
||
# else
|
||
# import "SentryProfilingConditionals.h"
|
||
# endif
|
||
|
||
@class SentryDisplayLinkWrapper;
|
||
@protocol SentryCurrentDateProvider;
|
||
@class SentryDispatchQueueWrapper;
|
||
@class SentryNSNotificationCenterWrapper;
|
||
@class SentryScreenFrames;
|
||
@class SentryFramesDelayResult;
|
||
|
||
NS_ASSUME_NONNULL_BEGIN
|
||
|
||
@class SentryTracer;
|
||
|
||
@protocol SentryFramesTrackerListener
|
||
|
||
- (void)framesTrackerHasNewFrame:(NSDate *)newFrameDate;
|
||
|
||
@end
|
||
|
||
/**
|
||
* Tracks total, frozen and slow frames for iOS, tvOS, and Mac Catalyst.
|
||
*
|
||
* @discussion This class ignores a couple of methods for the thread sanitizer. We intentionally
|
||
* accept several data races in this class, a decision that is driven by the fact that the code
|
||
* always writes on the main thread. This approach, while it may not provide 100% correct frame
|
||
* statistic for background spans, significantly reduces the overhead of synchronization, thereby
|
||
* enhancing performance.
|
||
*/
|
||
@interface SentryFramesTracker : NSObject
|
||
|
||
- (instancetype)initWithDisplayLinkWrapper:(SentryDisplayLinkWrapper *)displayLinkWrapper
|
||
dateProvider:(id<SentryCurrentDateProvider>)dateProvider
|
||
dispatchQueueWrapper:(SentryDispatchQueueWrapper *)dispatchQueueWrapper
|
||
notificationCenter:(SentryNSNotificationCenterWrapper *)notificationCenter
|
||
keepDelayedFramesDuration:(CFTimeInterval)keepDelayedFramesDuration;
|
||
|
||
- (SentryScreenFrames *)currentFrames;
|
||
@property (nonatomic, assign, readonly) BOOL isRunning;
|
||
|
||
# if SENTRY_TARGET_PROFILING_SUPPORTED
|
||
/** Remove previously recorded timestamps in preparation for a later profiled transaction. */
|
||
- (void)resetProfilingTimestamps;
|
||
# endif // SENTRY_TARGET_PROFILING_SUPPORTED
|
||
|
||
- (void)start;
|
||
- (void)stop;
|
||
|
||
- (SentryFramesDelayResult *)getFramesDelay:(uint64_t)startSystemTimestamp
|
||
endSystemTimestamp:(uint64_t)endSystemTimestamp;
|
||
|
||
- (void)addListener:(id<SentryFramesTrackerListener>)listener;
|
||
|
||
- (void)removeListener:(id<SentryFramesTrackerListener>)listener;
|
||
|
||
@end
|
||
|
||
BOOL sentryShouldAddSlowFrozenFramesData(
|
||
NSInteger totalFrames, NSInteger slowFrames, NSInteger frozenFrames);
|
||
|
||
NS_ASSUME_NONNULL_END
|
||
|
||
#endif // SENTRY_HAS_UIKIT
|