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

iosArm64Main.maryk.rocksdb.Statistics.kt Maven / Gradle / Ivy

package maryk.rocksdb

import maryk.rocksdb.StatsLevel.ALL
import maryk.rocksdb.StatsLevel.DISABLE_ALL
import maryk.rocksdb.StatsLevel.EXCEPT_DETAILED_TIMERS
import maryk.rocksdb.StatsLevel.EXCEPT_HISTOGRAM_OR_TIMERS
import maryk.rocksdb.StatsLevel.EXCEPT_TICKERS
import maryk.rocksdb.StatsLevel.EXCEPT_TIMERS
import maryk.rocksdb.StatsLevel.EXCEPT_TIME_FOR_MUTEX
import maryk.wrapWithErrorThrower
import rocksdb.RocksDBStatistics
import rocksdb.RocksDBStatsLevel.RocksDBStatsLevelAll
import rocksdb.RocksDBStatsLevel.RocksDBStatsLevelDisableAll
import rocksdb.RocksDBStatsLevel.RocksDBStatsLevelExceptDetailedTimers
import rocksdb.RocksDBStatsLevel.RocksDBStatsLevelExceptHistogramOrTimers
import rocksdb.RocksDBStatsLevel.RocksDBStatsLevelExceptTickers
import rocksdb.RocksDBStatsLevel.RocksDBStatsLevelExceptTimeForMutex
import rocksdb.RocksDBStatsLevel.RocksDBStatsLevelExceptTimers

actual class Statistics internal constructor(
    internal val native: RocksDBStatistics = RocksDBStatistics()
) : RocksObject() {
    actual constructor() : this(RocksDBStatistics())

    actual fun statsLevel() = when (native.statsLevel) {
        RocksDBStatsLevelDisableAll -> DISABLE_ALL
        RocksDBStatsLevelExceptTickers -> EXCEPT_TICKERS
        RocksDBStatsLevelExceptHistogramOrTimers -> EXCEPT_HISTOGRAM_OR_TIMERS
        RocksDBStatsLevelExceptTimers -> EXCEPT_TIMERS
        RocksDBStatsLevelExceptDetailedTimers -> EXCEPT_DETAILED_TIMERS
        RocksDBStatsLevelExceptTimeForMutex -> EXCEPT_TIME_FOR_MUTEX
        RocksDBStatsLevelAll -> ALL
    }

    actual fun setStatsLevel(statsLevel: StatsLevel) {
        native.statsLevel = statsLevel.value
    }

    actual fun getTickerCount(tickerType: TickerType) =
        native.countForTicker(tickerType.value).toLong()

    actual fun getAndResetTickerCount(tickerType: TickerType) =
        native.countForTickerAndReset(tickerType.value).toLong()

    actual fun getHistogramData(histogramType: HistogramType) = HistogramData(
        native.histogramDataForType(histogramType.value)
    )

    actual fun getHistogramString(histogramType: HistogramType) =
        native.histogramStringForType(histogramType.value)

    actual fun reset() {
        wrapWithErrorThrower { error ->
            native.reset(error)
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy