Skip to content

Commit 4e8ed72

Browse files
committed
ref: Dependency container in Swift
1 parent abafa5d commit 4e8ed72

30 files changed

+529
-721
lines changed

Sentry.xcodeproj/project.pbxproj

Lines changed: 38 additions & 23 deletions
Large diffs are not rendered by default.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#import "SentryANRStoppedResultInternal.h"
2+
3+
@implementation SentryANRStoppedResultInternal
4+
5+
- (instancetype)initWithMinDuration:(NSTimeInterval)minDuration
6+
maxDuration:(NSTimeInterval)maxDuration
7+
{
8+
if (self = [super init]) {
9+
_minDuration = minDuration;
10+
_maxDuration = maxDuration;
11+
return self;
12+
}
13+
return nil;
14+
}
15+
16+
@end

Sources/Sentry/SentryANRTrackerV1.m

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#import "SentryANRTrackerV1.h"
2+
#import "SentryANRTrackerInternalDelegate.h"
23
#import "SentryDependencyContainer.h"
34
#import "SentryLogC.h"
45
#import "SentrySwift.h"
@@ -18,7 +19,7 @@ @interface SentryANRTrackerV1 ()
1819
@property (nonatomic, strong) SentryCrashWrapper *crashWrapper;
1920
@property (nonatomic, strong) SentryDispatchQueueWrapper *dispatchQueueWrapper;
2021
@property (nonatomic, strong) SentryThreadWrapper *threadWrapper;
21-
@property (nonatomic, strong) NSHashTable<id<SentryANRTrackerDelegate>> *listeners;
22+
@property (nonatomic, strong) NSHashTable<id<SentryANRTrackerInternalDelegate>> *listeners;
2223
@property (nonatomic, assign) NSTimeInterval timeoutInterval;
2324

2425
@end
@@ -153,8 +154,8 @@ - (void)ANRDetected
153154
localListeners = [self.listeners allObjects];
154155
}
155156

156-
for (id<SentryANRTrackerDelegate> target in localListeners) {
157-
[target anrDetectedWithType:SentryANRTypeUnknown];
157+
for (id<SentryANRTrackerInternalDelegate> target in localListeners) {
158+
[target anrDetected:kSentryANRTypeUnknown];
158159
}
159160
}
160161

@@ -165,14 +166,14 @@ - (void)ANRStopped
165166
targets = [self.listeners allObjects];
166167
}
167168

168-
for (id<SentryANRTrackerDelegate> target in targets) {
169+
for (id<SentryANRTrackerInternalDelegate> target in targets) {
169170
// We intentionally don't measure the ANR duration, because V2 will replace V1, so it's not
170171
// worth the effort.
171-
[target anrStoppedWithResult:nil];
172+
[target anrStopped:nil];
172173
}
173174
}
174175

175-
- (void)addListener:(id<SentryANRTrackerDelegate>)listener
176+
- (void)addListener:(id<SentryANRTrackerInternalDelegate>)listener
176177
{
177178
@synchronized(self.listeners) {
178179
[self.listeners addObject:listener];
@@ -190,7 +191,7 @@ - (void)addListener:(id<SentryANRTrackerDelegate>)listener
190191
}
191192
}
192193

193-
- (void)removeListener:(id<SentryANRTrackerDelegate>)listener
194+
- (void)removeListener:(id<SentryANRTrackerInternalDelegate>)listener
194195
{
195196
@synchronized(self.listeners) {
196197
[self.listeners removeObject:listener];

Sources/Sentry/SentryANRTrackerV2.m

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
#if SENTRY_HAS_UIKIT
44

5+
# import "SentryANRStoppedResultInternal.h"
6+
# import "SentryANRTrackerInternalDelegate.h"
57
# import "SentryDependencyContainer.h"
68
# import "SentryLogC.h"
79
# import "SentrySwift.h"
@@ -22,7 +24,7 @@ @interface SentryANRTrackerV2 ()
2224
@property (nonatomic, strong) SentryCrashWrapper *crashWrapper;
2325
@property (nonatomic, strong) SentryDispatchQueueWrapper *dispatchQueueWrapper;
2426
@property (nonatomic, strong) SentryThreadWrapper *threadWrapper;
25-
@property (nonatomic, strong) NSHashTable<id<SentryANRTrackerDelegate>> *listeners;
27+
@property (nonatomic, strong) NSHashTable<id<SentryANRTrackerInternalDelegate>> *listeners;
2628
@property (nonatomic, strong) SentryFramesTracker *framesTracker;
2729
@property (nonatomic, assign) NSTimeInterval timeoutInterval;
2830

@@ -130,9 +132,9 @@ - (void)detectANRs
130132

131133
uint64_t framesDelayStartSystemTime = nowSystemTime - appHangStoppedInterval;
132134

133-
SentryFramesDelayResult *framesDelay =
134-
[self.framesTracker getFramesDelay:framesDelayStartSystemTime
135-
endSystemTimestamp:nowSystemTime];
135+
SentryFramesDelayResultSPI *framesDelay =
136+
[self.framesTracker getFramesDelaySPI:framesDelayStartSystemTime
137+
endSystemTimestamp:nowSystemTime];
136138

137139
if (framesDelay.delayDuration == -1) {
138140
continue;
@@ -176,9 +178,9 @@ - (void)detectANRs
176178

177179
uint64_t frameDelayStartSystemTime = nowSystemTime - timeoutIntervalInNanos;
178180

179-
SentryFramesDelayResult *framesDelayForTimeInterval =
180-
[self.framesTracker getFramesDelay:frameDelayStartSystemTime
181-
endSystemTimestamp:nowSystemTime];
181+
SentryFramesDelayResultSPI *framesDelayForTimeInterval =
182+
[self.framesTracker getFramesDelaySPI:frameDelayStartSystemTime
183+
endSystemTimestamp:nowSystemTime];
182184

183185
if (framesDelayForTimeInterval.delayDuration == -1) {
184186
continue;
@@ -194,7 +196,7 @@ - (void)detectANRs
194196

195197
reported = YES;
196198
lastAppHangStartedSystemTime = dateProvider.systemTime;
197-
[self ANRDetected:SentryANRTypeFullyBlocking];
199+
[self ANRDetected:kSentryANRTypeFullyBlocking];
198200
}
199201

200202
NSTimeInterval nonFullyBlockingFramesDelayThreshold = self.timeoutInterval * 0.99;
@@ -205,7 +207,7 @@ - (void)detectANRs
205207

206208
reported = YES;
207209
lastAppHangStartedSystemTime = dateProvider.systemTime;
208-
[self ANRDetected:SentryANRTypeNonFullyBlocking];
210+
[self ANRDetected:kSentryANRTypeNonFullyBlocking];
209211
}
210212
}
211213

@@ -215,15 +217,15 @@ - (void)detectANRs
215217
}
216218
}
217219

218-
- (void)ANRDetected:(enum SentryANRType)type
220+
- (void)ANRDetected:(SentryANRTypeInternal)type
219221
{
220222
NSArray *localListeners;
221223
@synchronized(self.listeners) {
222224
localListeners = [self.listeners allObjects];
223225
}
224226

225-
for (id<SentryANRTrackerDelegate> target in localListeners) {
226-
[target anrDetectedWithType:type];
227+
for (id<SentryANRTrackerInternalDelegate> target in localListeners) {
228+
[target anrDetected:type];
227229
}
228230
}
229231

@@ -234,15 +236,15 @@ - (void)ANRStopped:(NSTimeInterval)hangDurationMinimum to:(NSTimeInterval)hangDu
234236
targets = [self.listeners allObjects];
235237
}
236238

237-
SentryANRStoppedResult *result =
238-
[[SentryANRStoppedResult alloc] initWithMinDuration:hangDurationMinimum
239-
maxDuration:hangDurationMaximum];
240-
for (id<SentryANRTrackerDelegate> target in targets) {
241-
[target anrStoppedWithResult:result];
239+
SentryANRStoppedResultInternal *result =
240+
[[SentryANRStoppedResultInternal alloc] initWithMinDuration:hangDurationMinimum
241+
maxDuration:hangDurationMaximum];
242+
for (id<SentryANRTrackerInternalDelegate> target in targets) {
243+
[target anrStopped:result];
242244
}
243245
}
244246

245-
- (void)addListener:(id<SentryANRTrackerDelegate>)listener
247+
- (void)addListener:(id<SentryANRTrackerInternalDelegate>)listener
246248
{
247249
@synchronized(self.listeners) {
248250
[self.listeners addObject:listener];
@@ -260,7 +262,7 @@ - (void)addListener:(id<SentryANRTrackerDelegate>)listener
260262
}
261263
}
262264

263-
- (void)removeListener:(id<SentryANRTrackerDelegate>)listener
265+
- (void)removeListener:(id<SentryANRTrackerInternalDelegate>)listener
264266
{
265267
@synchronized(self.listeners) {
266268
[self.listeners removeObject:listener];

Sources/Sentry/SentryDebugImageProviderInternal.m

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ @implementation SentryDebugImageProviderInternal
2424

2525
- (instancetype)init
2626
{
27-
self =
28-
[self initWithBinaryImageCache:SentryDependencyContainer.sharedInstance.binaryImageCache];
27+
self = [self initWithBinaryImageCache:SentryDependencies.binaryImageCache];
2928

3029
return self;
3130
}

Sources/Sentry/SentryDelayedFramesTracker.m

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,21 @@
1111

1212
NS_ASSUME_NONNULL_BEGIN
1313

14+
@implementation SentryFramesDelayResultObjC
15+
16+
- (instancetype)initWithDelayDuration:(CFTimeInterval)delayDuration
17+
framesContributingToDelayCount:(NSUInteger)frames
18+
{
19+
if (self = [super init]) {
20+
_delayDuration = delayDuration;
21+
_framesContributingToDelayCount = frames;
22+
return self;
23+
}
24+
return nil;
25+
}
26+
27+
@end
28+
1429
@interface SentryDelayedFramesTracker ()
1530

1631
@property (nonatomic, assign) CFTimeInterval keepDelayedFramesDuration;
@@ -124,14 +139,14 @@ - (void)removeOldDelayedFrames
124139
[self.delayedFrames removeObjectsInRange:NSMakeRange(0, left)];
125140
}
126141

127-
- (SentryFramesDelayResult *)getFramesDelay:(uint64_t)startSystemTimestamp
128-
endSystemTimestamp:(uint64_t)endSystemTimestamp
129-
isRunning:(BOOL)isRunning
130-
slowFrameThreshold:(CFTimeInterval)slowFrameThreshold
142+
- (SentryFramesDelayResultObjC *)getFramesDelayObjC:(uint64_t)startSystemTimestamp
143+
endSystemTimestamp:(uint64_t)endSystemTimestamp
144+
isRunning:(BOOL)isRunning
145+
slowFrameThreshold:(CFTimeInterval)slowFrameThreshold
131146
{
132-
SentryFramesDelayResult *cantCalculateFrameDelayReturnValue =
133-
[[SentryFramesDelayResult alloc] initWithDelayDuration:-1.0
134-
framesContributingToDelayCount:0];
147+
SentryFramesDelayResultObjC *cantCalculateFrameDelayReturnValue =
148+
[[SentryFramesDelayResultObjC alloc] initWithDelayDuration:-1.0
149+
framesContributingToDelayCount:0];
135150

136151
if (isRunning == NO) {
137152
SENTRY_LOG_DEBUG(@"Not calculating frames delay because frames tracker isn't running.");
@@ -219,9 +234,9 @@ - (SentryFramesDelayResult *)getFramesDelay:(uint64_t)startSystemTimestamp
219234
framesCount++;
220235
}
221236

222-
SentryFramesDelayResult *data =
223-
[[SentryFramesDelayResult alloc] initWithDelayDuration:delay
224-
framesContributingToDelayCount:framesCount];
237+
SentryFramesDelayResultObjC *data =
238+
[[SentryFramesDelayResultObjC alloc] initWithDelayDuration:delay
239+
framesContributingToDelayCount:framesCount];
225240

226241
return data;
227242
}

0 commit comments

Comments
 (0)