@@ -10,14 +10,15 @@ import Foundation
1010
1111protocol SplitEventsManager : AnyObject {
1212 func register( event: SplitEvent , task: SplitEventTask )
13- func register( event: SplitEventWithMetadata , task: SplitEventTask )
1413 func notifyInternalEvent( _ event: SplitInternalEvent )
14+ func notifyInternalEvent( _ event: SplitInternalEventWithMetadata )
1515 func start( )
1616 func stop( )
1717 func eventAlreadyTriggered( event: SplitEvent ) -> Bool
1818}
1919
2020class DefaultSplitEventsManager : SplitEventsManager {
21+
2122 private let readingRefreshTime : Int
2223
2324 private var sdkReadyTimeStart : Int64
@@ -41,11 +42,12 @@ class DefaultSplitEventsManager: SplitEventsManager {
4142 self . executionTimes = [ String: Int] ( )
4243 registerMaxAllowedExecutionTimesPerEvent ( )
4344
45+ // SDK Timeout Event
4446 if config. sdkReadyTimeOut > 0 {
4547 let readyTimedoutQueue = DispatchQueue ( label: " split-event-timedout " )
4648 readyTimedoutQueue. asyncAfter ( deadline: . now( ) + . milliseconds( config. sdkReadyTimeOut) ) { [ weak self] in
4749 guard let self = self else { return }
48- self . notifyInternalEvent ( SplitInternalEvent . sdkReadyTimeoutReached)
50+ self . notifyInternalEvent ( . sdkReadyTimeoutReached)
4951 }
5052 }
5153 }
@@ -62,21 +64,17 @@ class DefaultSplitEventsManager: SplitEventsManager {
6264 func notifyInternalEvent( _ event: SplitInternalEvent ) {
6365 notifyInternalEvent ( SplitInternalEventWithMetadata ( event, metadata: nil ) )
6466 }
65-
66- func register( event: SplitEvent , task: SplitEventTask ) {
67- register ( event: SplitEventWithMetadata ( type: event, metadata: nil ) , task: task)
68- }
6967
70- func register( event: SplitEventWithMetadata , task: SplitEventTask ) {
71- let eventName = event. type . toString ( )
68+ func register( event: SplitEvent , task: SplitEventTask ) {
69+ let eventName = event. toString ( )
7270 processQueue. async { [ weak self] in
7371 guard let self = self else { return }
7472 // If event is already triggered, execute the task
7573 if let times = self . executionTimes ( for: eventName) , times == 0 {
7674 self . executeTask ( event: event, task: task)
7775 return
7876 }
79- self . subscribe ( task: task, to: event. type )
77+ self . subscribe ( task: task, to: event)
8078 }
8179 }
8280
@@ -111,7 +109,6 @@ class DefaultSplitEventsManager: SplitEventsManager {
111109 self . eventsQueue. stop ( )
112110 self . eventsQueue. stop ( )
113111 }
114-
115112 }
116113 }
117114
@@ -125,6 +122,7 @@ class DefaultSplitEventsManager: SplitEventsManager {
125122
126123 executionTimes = [ SplitEvent . sdkReady. toString ( ) : 1 ,
127124 SplitEvent . sdkUpdated. toString ( ) : - 1 ,
125+ SplitEvent . sdkError. toString ( ) : - 1 ,
128126 SplitEvent . sdkReadyFromCache. toString ( ) : 1 ,
129127 SplitEvent . sdkReadyTimedOut. toString ( ) : 1 ]
130128 }
@@ -159,7 +157,7 @@ class DefaultSplitEventsManager: SplitEventsManager {
159157 switch event. type {
160158 case . splitsUpdated, . mySegmentsUpdated, . myLargeSegmentsUpdated:
161159 if isTriggered ( external: . sdkReady) {
162- trigger ( event: SplitEventWithMetadata ( type : . sdkUpdated, metadata : event . metadata ) )
160+ trigger ( event: . sdkUpdated)
163161 continue
164162 }
165163 triggerSdkReadyIfNeeded ( )
@@ -181,6 +179,9 @@ class DefaultSplitEventsManager: SplitEventsManager {
181179 if !isTriggered( external: . sdkReady) {
182180 trigger ( event: . sdkReadyTimedOut)
183181 }
182+ case . sdkError:
183+ let eventWithMetadata = SplitEventWithMetadata ( . sdkError, metadata: event. metadata)
184+ trigger ( event: eventWithMetadata)
184185 }
185186 }
186187 }
@@ -211,7 +212,7 @@ class DefaultSplitEventsManager: SplitEventsManager {
211212 }
212213
213214 private func trigger( event: SplitEvent ) {
214- trigger ( event: SplitEventWithMetadata ( type : event, metadata: nil ) )
215+ trigger ( event: SplitEventWithMetadata ( event, metadata: nil ) )
215216 }
216217
217218 private func trigger( event: SplitEventWithMetadata ) {
@@ -237,13 +238,14 @@ class DefaultSplitEventsManager: SplitEventsManager {
237238 }
238239
239240 private func executeTask( event: SplitEvent , task: SplitEventTask ) {
240- executeTask ( event: SplitEventWithMetadata ( type : event, metadata: nil ) , task: task)
241+ executeTask ( event: SplitEventWithMetadata ( event, metadata: nil ) , task: task)
241242 }
242243
243244 private func executeTask( event: SplitEventWithMetadata , task: SplitEventTask ) {
244245
245246 let eventName = task. event. toString ( )
246247
248+ // RUN IN BG & RETURN
247249 if task. runInBackground {
248250 TimeChecker . logInterval ( " Previous to run \( eventName) in Background " )
249251
@@ -255,6 +257,7 @@ class DefaultSplitEventsManager: SplitEventsManager {
255257 return
256258 }
257259
260+ // OR RUN ON MAIN
258261 DispatchQueue . main. async {
259262 TimeChecker . logInterval ( " Running event on main: \( eventName) " )
260263 // UI Updates
0 commit comments