disco.c
changeset 15 2aa6a333b0af
parent 14 f43622080b3a
child 16 e903da874e63
equal deleted inserted replaced
14:f43622080b3a 15:2aa6a333b0af
    34 
    34 
    35 static guint             disco_cid                 = 0;
    35 static guint             disco_cid                 = 0;
    36 static LmMessageHandler *disco_info_reply_handler  = NULL;
    36 static LmMessageHandler *disco_info_reply_handler  = NULL;
    37 static LmMessageHandler *disco_items_reply_handler = NULL;
    37 static LmMessageHandler *disco_items_reply_handler = NULL;
    38 
    38 
    39 static LmHandlerResult disco_handler (LmMessage *message, gboolean info_request)
    39 static LmHandlerResult disco_handler (LmMessageHandler *handler, LmConnection *connection, LmMessage *message, gpointer udata)
    40 {
    40 {
       
    41 	gboolean info_request = handler == disco_info_reply_handler ? TRUE : FALSE;
       
    42 
    41 	switch (lm_message_get_sub_type (message)) {
    43 	switch (lm_message_get_sub_type (message)) {
    42 	case LM_MESSAGE_SUB_TYPE_RESULT:
    44 	case LM_MESSAGE_SUB_TYPE_RESULT:
    43 
    45 
    44 		{
    46 		{
    45 			LmMessageNode *node  = lm_message_get_node (message);
    47 			LmMessageNode *node  = lm_message_get_node (message);
   156 	}
   158 	}
   157 
   159 
   158 	return LM_HANDLER_RESULT_REMOVE_MESSAGE;
   160 	return LM_HANDLER_RESULT_REMOVE_MESSAGE;
   159 }
   161 }
   160 
   162 
   161 static LmHandlerResult disco_info_handler (LmMessageHandler *handler, LmConnection *connection, LmMessage *message, gpointer udata)
       
   162 {
       
   163 	return disco_handler (message, TRUE);
       
   164 }
       
   165 
       
   166 static LmHandlerResult disco_items_handler (LmMessageHandler *handler, LmConnection *connection, LmMessage *message, gpointer udata)
       
   167 {
       
   168 	return disco_handler (message, FALSE);
       
   169 }
       
   170 
       
   171 static void do_disco (char *arg)
   163 static void do_disco (char *arg)
   172 {
   164 {
   173 	char **args = split_arg (arg, 3, 0);
   165 	char **args = split_arg (arg, 3, 0);
   174 	int    info = -1;
   166 	int    info = -1;
   175 
   167 
   238 }
   230 }
   239 
   231 
   240 const gchar *g_module_check_init(GModule *module)
   232 const gchar *g_module_check_init(GModule *module)
   241 {
   233 {
   242 	// create handlers
   234 	// create handlers
   243 	disco_info_reply_handler  = lm_message_handler_new (disco_info_handler,  NULL, NULL);
   235 	disco_info_reply_handler  = lm_message_handler_new (disco_handler, NULL, NULL);
   244 	disco_items_reply_handler = lm_message_handler_new (disco_items_handler, NULL, NULL);
   236 	disco_items_reply_handler = lm_message_handler_new (disco_handler, NULL, NULL);
   245 
   237 
   246 	// completion
   238 	// completion
   247 	disco_cid = compl_new_category ();
   239 	disco_cid = compl_new_category ();
   248 	if (disco_cid) {
   240 	if (disco_cid) {
   249 		compl_add_category_word (disco_cid, "info");
   241 		compl_add_category_word (disco_cid, "info");