Use handler object for request type indication
authorMyhailo Danylenko <isbear@ukrpost.net>
Sat, 26 Dec 2009 05:28:52 +0200
changeset 15 2aa6a333b0af
parent 14 f43622080b3a
child 16 e903da874e63
Use handler object for request type indication
disco.c
--- a/disco.c	Sat Dec 26 05:26:00 2009 +0200
+++ b/disco.c	Sat Dec 26 05:28:52 2009 +0200
@@ -36,8 +36,10 @@
 static LmMessageHandler *disco_info_reply_handler  = NULL;
 static LmMessageHandler *disco_items_reply_handler = NULL;
 
-static LmHandlerResult disco_handler (LmMessage *message, gboolean info_request)
+static LmHandlerResult disco_handler (LmMessageHandler *handler, LmConnection *connection, LmMessage *message, gpointer udata)
 {
+	gboolean info_request = handler == disco_info_reply_handler ? TRUE : FALSE;
+
 	switch (lm_message_get_sub_type (message)) {
 	case LM_MESSAGE_SUB_TYPE_RESULT:
 
@@ -158,16 +160,6 @@
 	return LM_HANDLER_RESULT_REMOVE_MESSAGE;
 }
 
-static LmHandlerResult disco_info_handler (LmMessageHandler *handler, LmConnection *connection, LmMessage *message, gpointer udata)
-{
-	return disco_handler (message, TRUE);
-}
-
-static LmHandlerResult disco_items_handler (LmMessageHandler *handler, LmConnection *connection, LmMessage *message, gpointer udata)
-{
-	return disco_handler (message, FALSE);
-}
-
 static void do_disco (char *arg)
 {
 	char **args = split_arg (arg, 3, 0);
@@ -240,8 +232,8 @@
 const gchar *g_module_check_init(GModule *module)
 {
 	// create handlers
-	disco_info_reply_handler  = lm_message_handler_new (disco_info_handler,  NULL, NULL);
-	disco_items_reply_handler = lm_message_handler_new (disco_items_handler, NULL, NULL);
+	disco_info_reply_handler  = lm_message_handler_new (disco_handler, NULL, NULL);
+	disco_items_reply_handler = lm_message_handler_new (disco_handler, NULL, NULL);
 
 	// completion
 	disco_cid = compl_new_category ();