diff --git a/src/main/kotlin/com/shr4pnel/ferretirc/irc/util/Helpers.kt b/src/main/kotlin/com/shr4pnel/ferretirc/irc/util/Helpers.kt index ac1538d..6af5866 100644 --- a/src/main/kotlin/com/shr4pnel/ferretirc/irc/util/Helpers.kt +++ b/src/main/kotlin/com/shr4pnel/ferretirc/irc/util/Helpers.kt @@ -1,3 +1,7 @@ package com.shr4pnel.ferretirc.irc.util -class Helpers \ No newline at end of file +class Helpers { + companion object LoggingConfig { + var enableLogging = true + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/shr4pnel/ferretirc/net/MessageParser.kt b/src/main/kotlin/com/shr4pnel/ferretirc/net/MessageParser.kt index cff9451..c0745ac 100644 --- a/src/main/kotlin/com/shr4pnel/ferretirc/net/MessageParser.kt +++ b/src/main/kotlin/com/shr4pnel/ferretirc/net/MessageParser.kt @@ -1,18 +1,16 @@ package com.shr4pnel.ferretirc.net +import com.shr4pnel.ferretirc.irc.util.Helpers import com.shr4pnel.ferretirc.net.messages.ServerMessage import io.github.oshai.kotlinlogging.KotlinLogging -import io.ktor.http.parameters -import io.ktor.network.selector.SelectInterest -import io.ktor.util.toUpperCasePreservingASCIIRules +import io.github.oshai.kotlinlogging.slf4j.logger import kotlinx.coroutines.channels.Channel +import org.slf4j.helpers.NOPLogger class MessageParser(val incoming: Channel) { - private val logger = KotlinLogging.logger("MessageParser") val incomingParsedMessages = Channel() private companion object MessageBuilder { - val logger = KotlinLogging.logger("MessageParser.MessageBuilder") fun getTrailingParameterIndex(params: List) = params.indexOfLast { it.startsWith(":") } sealed interface Command { @@ -58,6 +56,7 @@ class MessageParser(val incoming: Channel) { } } } + private val logger = if (Helpers.enableLogging) KotlinLogging.logger {} else KotlinLogging.logger(NOPLogger.NOP_LOGGER) class NumericCommand(val number: Int, val parameters: List?) : Command { override fun toServerMessage(): ServerMessage { @@ -106,6 +105,7 @@ class MessageParser(val incoming: Channel) { suspend fun start() { for (msg in incoming) { incomingParsedMessages.send(build(msg)) + logger.trace { "Receiving: $msg" } } } } \ No newline at end of file diff --git a/src/main/kotlin/com/shr4pnel/ferretirc/net/MessageReader.kt b/src/main/kotlin/com/shr4pnel/ferretirc/net/MessageReader.kt index beb028b..83e7bf9 100644 --- a/src/main/kotlin/com/shr4pnel/ferretirc/net/MessageReader.kt +++ b/src/main/kotlin/com/shr4pnel/ferretirc/net/MessageReader.kt @@ -1,7 +1,10 @@ package com.shr4pnel.ferretirc.net +import com.shr4pnel.ferretirc.irc.util.Helpers import com.shr4pnel.ferretirc.net.messages.MessageIO import com.shr4pnel.ferretirc.net.messages.ServerMessage +import io.github.oshai.kotlinlogging.KotlinLogging +import io.github.oshai.kotlinlogging.slf4j.logger import io.ktor.network.sockets.Socket import io.ktor.network.sockets.openReadChannel import io.ktor.utils.io.ByteReadChannel @@ -12,6 +15,7 @@ import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch +import org.slf4j.helpers.NOPLogger import kotlin.reflect.KClass import kotlin.reflect.cast @@ -20,6 +24,8 @@ class MessageReader(socket: Socket, scope: CoroutineScope) : MessageIO(socket, s private val listenedMessages = mutableListOf() val messageBuffer = MutableSharedFlow(16, 64) val parser = MessageParser(incomingMessages) + private val logger = if (Helpers.enableLogging) KotlinLogging.logger {} else KotlinLogging.logger(NOPLogger.NOP_LOGGER) + init { scope.launch { @@ -35,6 +41,7 @@ class MessageReader(socket: Socket, scope: CoroutineScope) : MessageIO(socket, s while (true) { val line = receive.readLineStrict() ?: break // >:( no LineEnding option for just CRLF? charlatans... incomingMessages.send(line) + logger.debug { "Receive: $line" } } } diff --git a/src/main/kotlin/com/shr4pnel/ferretirc/net/MessageWriter.kt b/src/main/kotlin/com/shr4pnel/ferretirc/net/MessageWriter.kt index 21d339c..7430eba 100644 --- a/src/main/kotlin/com/shr4pnel/ferretirc/net/MessageWriter.kt +++ b/src/main/kotlin/com/shr4pnel/ferretirc/net/MessageWriter.kt @@ -1,17 +1,20 @@ package com.shr4pnel.ferretirc.net +import com.shr4pnel.ferretirc.irc.util.Helpers import com.shr4pnel.ferretirc.net.messages.MessageIO import io.github.oshai.kotlinlogging.KotlinLogging +import io.github.oshai.kotlinlogging.slf4j.logger import io.ktor.network.sockets.Socket import io.ktor.network.sockets.openWriteChannel import io.ktor.utils.io.ByteWriteChannel import io.ktor.utils.io.writeFully import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch +import org.slf4j.helpers.NOPLogger class MessageWriter(socket: Socket, scope: CoroutineScope) : MessageIO(socket, scope) { private lateinit var send: ByteWriteChannel - private val logger = KotlinLogging.logger("MessageWriter") + private val logger = if (Helpers.enableLogging) KotlinLogging.logger {} else KotlinLogging.logger(NOPLogger.NOP_LOGGER) override fun start() = scope.launch { send = socket.openWriteChannel()