KotlinLogging - option to globally disable logging
This commit is contained in:
@@ -1,3 +1,7 @@
|
|||||||
package com.shr4pnel.ferretirc.irc.util
|
package com.shr4pnel.ferretirc.irc.util
|
||||||
|
|
||||||
class Helpers
|
class Helpers {
|
||||||
|
companion object LoggingConfig {
|
||||||
|
var enableLogging = true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,18 +1,16 @@
|
|||||||
package com.shr4pnel.ferretirc.net
|
package com.shr4pnel.ferretirc.net
|
||||||
|
|
||||||
|
import com.shr4pnel.ferretirc.irc.util.Helpers
|
||||||
import com.shr4pnel.ferretirc.net.messages.ServerMessage
|
import com.shr4pnel.ferretirc.net.messages.ServerMessage
|
||||||
import io.github.oshai.kotlinlogging.KotlinLogging
|
import io.github.oshai.kotlinlogging.KotlinLogging
|
||||||
import io.ktor.http.parameters
|
import io.github.oshai.kotlinlogging.slf4j.logger
|
||||||
import io.ktor.network.selector.SelectInterest
|
|
||||||
import io.ktor.util.toUpperCasePreservingASCIIRules
|
|
||||||
import kotlinx.coroutines.channels.Channel
|
import kotlinx.coroutines.channels.Channel
|
||||||
|
import org.slf4j.helpers.NOPLogger
|
||||||
|
|
||||||
class MessageParser(val incoming: Channel<String>) {
|
class MessageParser(val incoming: Channel<String>) {
|
||||||
private val logger = KotlinLogging.logger("MessageParser")
|
|
||||||
val incomingParsedMessages = Channel<ServerMessage>()
|
val incomingParsedMessages = Channel<ServerMessage>()
|
||||||
|
|
||||||
private companion object MessageBuilder {
|
private companion object MessageBuilder {
|
||||||
val logger = KotlinLogging.logger("MessageParser.MessageBuilder")
|
|
||||||
fun getTrailingParameterIndex(params: List<String>) = params.indexOfLast { it.startsWith(":") }
|
fun getTrailingParameterIndex(params: List<String>) = params.indexOfLast { it.startsWith(":") }
|
||||||
|
|
||||||
sealed interface Command {
|
sealed interface Command {
|
||||||
@@ -58,6 +56,7 @@ class MessageParser(val incoming: Channel<String>) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private val logger = if (Helpers.enableLogging) KotlinLogging.logger {} else KotlinLogging.logger(NOPLogger.NOP_LOGGER)
|
||||||
|
|
||||||
class NumericCommand(val number: Int, val parameters: List<String>?) : Command {
|
class NumericCommand(val number: Int, val parameters: List<String>?) : Command {
|
||||||
override fun toServerMessage(): ServerMessage {
|
override fun toServerMessage(): ServerMessage {
|
||||||
@@ -106,6 +105,7 @@ class MessageParser(val incoming: Channel<String>) {
|
|||||||
suspend fun start() {
|
suspend fun start() {
|
||||||
for (msg in incoming) {
|
for (msg in incoming) {
|
||||||
incomingParsedMessages.send(build(msg))
|
incomingParsedMessages.send(build(msg))
|
||||||
|
logger.trace { "Receiving: $msg" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
package com.shr4pnel.ferretirc.net
|
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.MessageIO
|
||||||
import com.shr4pnel.ferretirc.net.messages.ServerMessage
|
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.Socket
|
||||||
import io.ktor.network.sockets.openReadChannel
|
import io.ktor.network.sockets.openReadChannel
|
||||||
import io.ktor.utils.io.ByteReadChannel
|
import io.ktor.utils.io.ByteReadChannel
|
||||||
@@ -12,6 +15,7 @@ import kotlinx.coroutines.flow.filter
|
|||||||
import kotlinx.coroutines.flow.first
|
import kotlinx.coroutines.flow.first
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import org.slf4j.helpers.NOPLogger
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.reflect.cast
|
import kotlin.reflect.cast
|
||||||
|
|
||||||
@@ -20,6 +24,8 @@ class MessageReader(socket: Socket, scope: CoroutineScope) : MessageIO(socket, s
|
|||||||
private val listenedMessages = mutableListOf<ServerMessage>()
|
private val listenedMessages = mutableListOf<ServerMessage>()
|
||||||
val messageBuffer = MutableSharedFlow<ServerMessage>(16, 64)
|
val messageBuffer = MutableSharedFlow<ServerMessage>(16, 64)
|
||||||
val parser = MessageParser(incomingMessages)
|
val parser = MessageParser(incomingMessages)
|
||||||
|
private val logger = if (Helpers.enableLogging) KotlinLogging.logger {} else KotlinLogging.logger(NOPLogger.NOP_LOGGER)
|
||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
scope.launch {
|
scope.launch {
|
||||||
@@ -35,6 +41,7 @@ class MessageReader(socket: Socket, scope: CoroutineScope) : MessageIO(socket, s
|
|||||||
while (true) {
|
while (true) {
|
||||||
val line = receive.readLineStrict() ?: break // >:( no LineEnding option for just CRLF? charlatans...
|
val line = receive.readLineStrict() ?: break // >:( no LineEnding option for just CRLF? charlatans...
|
||||||
incomingMessages.send(line)
|
incomingMessages.send(line)
|
||||||
|
logger.debug { "Receive: $line" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,20 @@
|
|||||||
package com.shr4pnel.ferretirc.net
|
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.MessageIO
|
||||||
import io.github.oshai.kotlinlogging.KotlinLogging
|
import io.github.oshai.kotlinlogging.KotlinLogging
|
||||||
|
import io.github.oshai.kotlinlogging.slf4j.logger
|
||||||
import io.ktor.network.sockets.Socket
|
import io.ktor.network.sockets.Socket
|
||||||
import io.ktor.network.sockets.openWriteChannel
|
import io.ktor.network.sockets.openWriteChannel
|
||||||
import io.ktor.utils.io.ByteWriteChannel
|
import io.ktor.utils.io.ByteWriteChannel
|
||||||
import io.ktor.utils.io.writeFully
|
import io.ktor.utils.io.writeFully
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
import org.slf4j.helpers.NOPLogger
|
||||||
|
|
||||||
class MessageWriter(socket: Socket, scope: CoroutineScope) : MessageIO(socket, scope) {
|
class MessageWriter(socket: Socket, scope: CoroutineScope) : MessageIO(socket, scope) {
|
||||||
private lateinit var send: ByteWriteChannel
|
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 {
|
override fun start() = scope.launch {
|
||||||
send = socket.openWriteChannel()
|
send = socket.openWriteChannel()
|
||||||
|
|||||||
Reference in New Issue
Block a user