
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