@@ -19,6 +19,8 @@ import org.json.JSONObject
1919import java.lang.ref.WeakReference
2020import java.net.URI
2121import java.util.concurrent.ConcurrentLinkedQueue
22+ import java.util.concurrent.ExecutorService
23+ import java.util.concurrent.Executors
2224import java.util.concurrent.atomic.AtomicBoolean
2325import kotlin.coroutines.CoroutineContext
2426
@@ -42,6 +44,7 @@ class DVCClient private constructor(
4244) {
4345 private var config: BucketedUserConfig ? = null
4446 private var eventSource: EventSource ? = null
47+ private var executorService: ExecutorService ? = null
4548 private val defaultIntervalInMs: Long = 10000
4649 private val flushInMs: Long = options?.flushEventsIntervalMs ? : defaultIntervalInMs
4750 private val dvcSharedPrefs: DVCSharedPrefs = DVCSharedPrefs (context)
@@ -151,10 +154,17 @@ class DVCClient private constructor(
151154 if (type == " refetchConfig" || type == " " ) { // Refetch the config if theres no type
152155 refetchConfig(true , lastModified, etag)
153156 }
154- }), URI (config?.sse?.url)).build()
157+ }), URI (config?.sse?.url)).executor( this .getValidExecutorService()). build()
155158 eventSource?.start()
156159 }
157160
161+ private fun getValidExecutorService (): ExecutorService ? {
162+ if (executorService == null || executorService?.isTerminated == true ) {
163+ executorService = Executors .newSingleThreadExecutor()
164+ }
165+ return executorService
166+ }
167+
158168 fun onInitialized (callback : DVCCallback <String >) {
159169 if (isInitialized.get()) {
160170 callback.onSuccess(" Config loaded" )
0 commit comments