libpurple/protocols/ircv3/purpleircv3parser.c

changeset 41796
ebe4ff278b02
parent 41774
170078e728c0
child 41807
66d473190e94
--- a/libpurple/protocols/ircv3/purpleircv3parser.c	Sat Oct 08 04:54:55 2022 -0500
+++ b/libpurple/protocols/ircv3/purpleircv3parser.c	Sun Oct 09 00:41:50 2022 -0500
@@ -19,6 +19,7 @@
 #include "purpleircv3parser.h"
 
 #include "purpleircv3core.h"
+#include "purpleircv3messagehandlers.h"
 
 struct _PurpleIRCv3Parser {
 	GObject parent;
@@ -166,6 +167,18 @@
 	return result;
 }
 
+static void
+purple_ircv3_parser_add_handler(PurpleIRCv3Parser *parser,
+                                const gchar *command,
+                                PurpleIRCv3MessageHandler handler)
+{
+	g_return_if_fail(PURPLE_IRCV3_IS_PARSER(parser));
+	g_return_if_fail(command != NULL);
+	g_return_if_fail(handler != NULL);
+
+	g_hash_table_insert(parser->handlers, g_strdup(command), handler);
+}
+
 /******************************************************************************
  * Handlers
  *****************************************************************************/
@@ -333,3 +346,14 @@
 
 	return result;
 }
+
+void
+purple_ircv3_parser_add_default_handlers(PurpleIRCv3Parser *parser) {
+	g_return_if_fail(PURPLE_IRCV3_IS_PARSER(parser));
+
+	purple_ircv3_parser_set_fallback_handler(parser,
+	                                         purple_ircv3_messager_handler_fallback);
+
+	purple_ircv3_parser_add_handler(parser, "PING",
+	                                purple_ircv3_messager_handler_ping);
+}

mercurial