Skip to content

Commit

Permalink
Make MMEUniqueIdentifier thread-safe
Browse files Browse the repository at this point in the history
  • Loading branch information
S2Ler committed Sep 29, 2021
1 parent c37c75a commit c353240
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion Sources/MapboxMobileEvents/MMEUniqueIdentifier.m
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

@interface MMEUniqueIdentifier ()

@property (nonatomic, strong, readonly) NSLock *lock;
@property (nonatomic) NSDate *instanceIDRotationDate;
@property (nonatomic) NSString *instanceID;

Expand All @@ -12,19 +13,23 @@ @implementation MMEUniqueIdentifier
- (instancetype)initWithTimeInterval:(NSTimeInterval)timeInterval {
if (self = [super init]) {
_timeInterval = timeInterval;
_lock = [[NSLock alloc] init];
}
return self;
}

- (NSString *)rollingInstanceIdentifer {
[self.lock lock];
if (self.instanceIDRotationDate && [[NSDate date] timeIntervalSinceDate:self.instanceIDRotationDate] >= 0) {
_instanceID = nil;
}
if (!_instanceID) {
_instanceID = [[NSUUID UUID] UUIDString];
self.instanceIDRotationDate = [[NSDate date] dateByAddingTimeInterval:self.timeInterval];
}
return _instanceID;
NSString *instanceID = _instanceID;
[self.lock unlock];
return instanceID;
}

@end

0 comments on commit c353240

Please sign in to comment.