use enum for comparison in NumericMessage.toServerMessage()
This commit is contained in:
@@ -64,18 +64,31 @@ class MessageParser(val incoming: Channel<String>) {
|
||||
}
|
||||
|
||||
class NumericCommand(override val command: String, override val parameters: List<String>) : Command(command, parameters) {
|
||||
private enum class RPL(val underlying: Int) {
|
||||
ISUPPORT(5),
|
||||
LISTSTART(321),
|
||||
LIST(322),
|
||||
LISTEND(323),
|
||||
NONE(0xbeef), ;
|
||||
|
||||
companion object {
|
||||
val rplMap = RPL.entries.associateBy { it.underlying }
|
||||
infix fun from(value: Int) = rplMap[value] ?: NONE
|
||||
infix fun from(value: String) = from(value.toInt())
|
||||
}
|
||||
}
|
||||
|
||||
override fun toServerMessage() =
|
||||
when (command.toInt()) {
|
||||
5 -> ServerMessage.Numeric.RPL_ISUPPORT(getNonTrailingParameterString())
|
||||
321 -> ServerMessage.Numeric.RPL_LISTSTART()
|
||||
322 ->
|
||||
ServerMessage.Numeric.RPL_LIST(
|
||||
parameters[1],
|
||||
parameters[2].toInt(),
|
||||
getTrailingParameterString(),
|
||||
)
|
||||
323 -> ServerMessage.Numeric.RPL_LISTEND()
|
||||
else -> ServerMessage.UNIMPLEMENTED(parameters.toString())
|
||||
when (RPL from command) {
|
||||
RPL.ISUPPORT -> ServerMessage.Numeric.RPL_ISUPPORT(getNonTrailingParameterString())
|
||||
RPL.LISTSTART -> ServerMessage.Numeric.RPL_LISTSTART()
|
||||
RPL.LIST -> ServerMessage.Numeric.RPL_LIST(
|
||||
parameters[1],
|
||||
parameters[2].toInt(),
|
||||
getTrailingParameterString(),
|
||||
)
|
||||
RPL.LISTEND -> ServerMessage.Numeric.RPL_LISTEND()
|
||||
RPL.NONE -> ServerMessage.UNIMPLEMENTED(parameters.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user