From 3a4bce80e41c56bdb57eb2cc8e7f5bdcd943c542 Mon Sep 17 00:00:00 2001 From: Martin Claesson <43297668+Claeysson@users.noreply.github.com> Date: Thu, 29 Feb 2024 10:31:30 +0100 Subject: [PATCH] Removed semaphore.wait() and introduced a timer pause boolean. --- Sources/Aptabase/AptabaseClient.swift | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/Sources/Aptabase/AptabaseClient.swift b/Sources/Aptabase/AptabaseClient.swift index 81236bf..60f03b0 100644 --- a/Sources/Aptabase/AptabaseClient.swift +++ b/Sources/Aptabase/AptabaseClient.swift @@ -11,6 +11,7 @@ class AptabaseClient { private let dispatcher: EventDispatcher private let env: EnvironmentInfo private let flushInterval: Double + private var pauseFlushTimer: Bool = false init(appKey: String, baseUrl: String, env: EnvironmentInfo, options: InitOptions?) { flushInterval = options?.flushInterval ?? (env.isDebug ? 2.0 : 60.0) @@ -45,14 +46,17 @@ class AptabaseClient { public func startPolling() { stopPolling() - flushTimer = Timer.scheduledTimer(timeInterval: flushInterval, target: self, selector: #selector(flushSync), userInfo: nil, repeats: true) + flushTimer = Timer.scheduledTimer(timeInterval: flushInterval, target: self, selector: #selector(timerFlushSync), userInfo: nil, repeats: true) } public func stopPolling() { flushTimer?.invalidate() flushTimer = nil - - flushSync() + + Task { + await flush() + } + } public func flush() async { @@ -65,12 +69,13 @@ class AptabaseClient { return String(epochInSeconds * 100000000 + random) } - @objc private func flushSync() { - let semaphore = DispatchSemaphore(value: 0) - Task { - await self.flush() - semaphore.signal() + @objc private func timerFlushSync() { + if !pauseFlushTimer { + Task { + self.pauseFlushTimer = true + await self.flush() + self.pauseFlushTimer = false + } } - semaphore.wait() } }