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

com.freya02.botcommands.internal.core.SingleLogger.kt Maven / Gradle / Ivy

package com.freya02.botcommands.internal.core

internal class SingleLogger {
    private val set: MutableSet = hashSetOf()

    fun tryLog(vararg keyComponents: Any): Boolean = set.add(keyComponents.joinToString("/") { it.toString() })

    @JvmSynthetic
    fun tryLog(vararg keyComponents: Any, block: () -> Unit) {
        if (tryLog(*keyComponents)) {
            block()
        }
    }

    fun clear() {
        set.clear()
    }

    companion object {
        private val map: MutableMap, SingleLogger> = hashMapOf()
        private val walker = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE)

        @JvmStatic
        fun current() = get(walker.callerClass)

        @JvmStatic
        operator fun get(clazz: Class<*>) = map.computeIfAbsent(clazz) { SingleLogger() }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy