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) {
|
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() =
|
override fun toServerMessage() =
|
||||||
when (command.toInt()) {
|
when (RPL from command) {
|
||||||
5 -> ServerMessage.Numeric.RPL_ISUPPORT(getNonTrailingParameterString())
|
RPL.ISUPPORT -> ServerMessage.Numeric.RPL_ISUPPORT(getNonTrailingParameterString())
|
||||||
321 -> ServerMessage.Numeric.RPL_LISTSTART()
|
RPL.LISTSTART -> ServerMessage.Numeric.RPL_LISTSTART()
|
||||||
322 ->
|
RPL.LIST -> ServerMessage.Numeric.RPL_LIST(
|
||||||
ServerMessage.Numeric.RPL_LIST(
|
parameters[1],
|
||||||
parameters[1],
|
parameters[2].toInt(),
|
||||||
parameters[2].toInt(),
|
getTrailingParameterString(),
|
||||||
getTrailingParameterString(),
|
)
|
||||||
)
|
RPL.LISTEND -> ServerMessage.Numeric.RPL_LISTEND()
|
||||||
323 -> ServerMessage.Numeric.RPL_LISTEND()
|
RPL.NONE -> ServerMessage.UNIMPLEMENTED(parameters.toString())
|
||||||
else -> ServerMessage.UNIMPLEMENTED(parameters.toString())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user