From e63ad41d3fe533e2ce0546aca09242aaa4b3b2ec Mon Sep 17 00:00:00 2001 From: Vadim Yeshkunov Date: Wed, 29 Sep 2021 15:41:54 +0300 Subject: [PATCH] Use a serial GCD queue for sending events --- Sources/MapboxMobileEvents/MMEEventsManager.m | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Sources/MapboxMobileEvents/MMEEventsManager.m b/Sources/MapboxMobileEvents/MMEEventsManager.m index 8527219d..cfc86fd3 100644 --- a/Sources/MapboxMobileEvents/MMEEventsManager.m +++ b/Sources/MapboxMobileEvents/MMEEventsManager.m @@ -48,7 +48,7 @@ @interface MMEEventsManager () @property (nonatomic, getter=isPaused) BOOL paused; @property (nonatomic) id application; @property (nonatomic) UIBackgroundTaskIdentifier backgroundTaskIdentifier; - +@property (nonatomic) dispatch_queue_t eventsDispatchQueue; @end // MARK: - @@ -79,6 +79,7 @@ - (instancetype)initShared { _uniqueIdentifer = [[MMEUniqueIdentifier alloc] initWithTimeInterval:NSUserDefaults.mme_configuration.mme_identifierRotationInterval]; _application = [[MMEUIApplicationWrapper alloc] init]; _dispatchManager = [[MMEDispatchManager alloc] init]; + _eventsDispatchQueue = dispatch_queue_create("com.mapbox.mme.events", DISPATCH_QUEUE_SERIAL); } return self; } @@ -355,8 +356,7 @@ - (void)sendTurnstileEvent { MMELOG(MMELogInfo, MMEDebugEventTypeTurnstile, ([NSString stringWithFormat:@"Sending turnstile event: %@, instance: %@", turnstileEvent , self.uniqueIdentifer.rollingInstanceIdentifer ?: @"nil"])); - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - dispatch_async(queue, ^{ + dispatch_async(_eventsDispatchQueue, ^{ __weak __typeof__(self) weakSelf = self; [self.apiClient postEvent:turnstileEvent completionHandler:^(NSError * _Nullable error) { @try { @@ -383,8 +383,7 @@ - (void)sendTurnstileEvent { } - (void)sendPendingMetricsEvent { - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - dispatch_async(queue, ^{ + dispatch_async(_eventsDispatchQueue, ^{ MMEEvent *pendingMetricsEvent = [MMEMetricsManager.sharedManager loadPendingTelemetryMetricsEvent]; if (pendingMetricsEvent) { @@ -400,8 +399,7 @@ - (void)sendPendingMetricsEvent { } - (void)sendTelemetryMetricsEvent { - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); - dispatch_async(queue, ^{ + dispatch_async(_eventsDispatchQueue, ^{ @try { MMEEvent *telemetryMetricsEvent = [MMEMetricsManager.sharedManager generateTelemetryMetricsEvent];