Skip to content

Commit e0feba9

Browse files
committed
DataConnectCredentialsTokenManager.kt: use MutableStateFlow instead of AtomicReference
1 parent a0a02a7 commit e0feba9

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/core/DataConnectCredentialsTokenManager.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import com.google.firebase.inject.Provider
3030
import com.google.firebase.internal.api.FirebaseNoSignedInUserException
3131
import com.google.firebase.util.nextAlphanumericString
3232
import java.lang.ref.WeakReference
33-
import java.util.concurrent.atomic.AtomicReference
3433
import kotlin.coroutines.coroutineContext
3534
import kotlin.random.Random
3635
import kotlinx.coroutines.CancellationException
@@ -129,7 +128,7 @@ internal sealed class DataConnectCredentialsTokenManager<T : Any>(
129128
* coroutines to run on the thread.
130129
*/
131130
private val state =
132-
AtomicReference<State<T>>(State.Idle(provider = null, forceTokenRefresh = false))
131+
MutableStateFlow<State<T>>(State.Idle(provider = null, forceTokenRefresh = false))
133132

134133
/**
135134
* Adds the token listener to the given provider.
@@ -171,7 +170,7 @@ internal sealed class DataConnectCredentialsTokenManager<T : Any>(
171170
// This function must ONLY be called from close().
172171
private fun setClosedState() {
173172
while (true) {
174-
val oldState = state.get()
173+
val oldState = state.value
175174
val providerProvider: ProviderProvider<T> =
176175
when (oldState) {
177176
is State.Closed -> return
@@ -194,7 +193,7 @@ internal sealed class DataConnectCredentialsTokenManager<T : Any>(
194193
suspend fun forceRefresh() {
195194
logger.debug { "forceRefresh()" }
196195
while (true) {
197-
val oldState = state.get()
196+
val oldState = state.value
198197
val oldStateProviderProvider =
199198
when (oldState) {
200199
is State.Closed -> return
@@ -246,7 +245,7 @@ internal sealed class DataConnectCredentialsTokenManager<T : Any>(
246245
logger.debug { "$invocationId getToken(requestId=$requestId)" }
247246
while (true) {
248247
val attemptSequenceNumber = nextSequenceNumber()
249-
val oldState = state.get()
248+
val oldState = state.value
250249

251250
val newState: State.Active<T> =
252251
when (oldState) {
@@ -342,7 +341,7 @@ internal sealed class DataConnectCredentialsTokenManager<T : Any>(
342341
addTokenListener(newProvider)
343342

344343
while (true) {
345-
val oldState = state.get()
344+
val oldState = state.value
346345
val newState =
347346
when (oldState) {
348347
is State.Closed -> {

0 commit comments

Comments
 (0)