All Downloads are FREE. Search and download functionalities are using the official Maven repository.

flag.FlagConfigStorage.kt Maven / Gradle / Ivy

package com.amplitude.experiment.flag

import com.amplitude.experiment.evaluation.FlagConfig
import java.util.concurrent.locks.ReentrantReadWriteLock
import kotlin.concurrent.read
import kotlin.concurrent.write

internal interface FlagConfigStorage {
    fun getFlagConfigs(): List
    fun putFlagConfigs(flagConfigs: List)
}

internal class InMemoryFlagConfigStorage : FlagConfigStorage {

    private val flagConfigs = mutableListOf()
    private val flagConfigsLock = ReentrantReadWriteLock()

    override fun getFlagConfigs(): List {
        return flagConfigsLock.read { flagConfigs.toList() }
    }

    override fun putFlagConfigs(flagConfigs: List) {
        return flagConfigsLock.write {
            this.flagConfigs.clear()
            this.flagConfigs.addAll(flagConfigs)
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy