選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

MessageHandler.kt 577B

12345678910111213141516
  1. package com.dmdirc.ktirc.io
  2. import com.dmdirc.ktirc.messages.MessageProcessor
  3. import kotlinx.coroutines.channels.ReceiveChannel
  4. import kotlinx.coroutines.channels.consumeEach
  5. class MessageHandler(private val processors: Collection<MessageProcessor>) {
  6. suspend fun processMessages(messages: ReceiveChannel<IrcMessage>) {
  7. messages.consumeEach { it.process() }
  8. }
  9. private fun IrcMessage.process() = this.getProcessor()?.process(this)
  10. private fun IrcMessage.getProcessor() = processors.firstOrNull { it.commands.contains(this.command) }
  11. }