xbot/irc_parse_thread.cpp

26 lines
722 B
C++
Raw Normal View History

2023-11-25 09:22:55 -08:00
#include "irc_parse_thread.hpp"
#include "connection.hpp"
2023-11-26 15:08:55 -08:00
#include <cstring>
namespace {
#include "irc_commands.inc"
} // namespace
2023-11-25 20:09:20 -08:00
auto irc_parse_thread(Connection * connection) -> void
2023-11-25 09:22:55 -08:00
{
2023-11-25 20:09:20 -08:00
connection->add_listener<LineEvent>([connection](LineEvent const& event)
2023-11-25 09:22:55 -08:00
{
2023-11-26 15:08:55 -08:00
auto const msg = parse_irc_message(event.line);
auto const recognized = IrcCommandHash::in_word_set(msg.command.data(), msg.command.size());
auto const command
= recognized
&& recognized->min_args <= msg.args.size()
&& recognized->max_args >= msg.args.size()
? recognized->command : IrcCommand::UNKNOWN;
connection->make_event<IrcMsgEvent>(command, msg);
2023-11-25 20:09:20 -08:00
});
2023-11-25 09:22:55 -08:00
}