gatchat: Introduce g_at_chat_get_userdata
authorDenis Kenzior <denkenz@gmail.com>
Wed, 22 Apr 2015 22:57:53 +0000 (17:57 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Wed, 13 May 2015 14:57:52 +0000 (09:57 -0500)
gatchat/gatchat.c
gatchat/gatchat.h

index aaf6e9b1255416bf2fc218134e66c8354c8f401a..33bfc21281b5ee22aaa09be7a9dff3eeef3ade14 100644 (file)
@@ -1135,6 +1135,29 @@ static gboolean at_chat_cancel_group(struct at_chat *chat, guint group)
        return TRUE;
 }
 
+static gpointer at_chat_get_userdata(struct at_chat *chat,
+                                               guint group, guint id)
+{
+       GList *l;
+       struct at_command *c;
+
+       if (chat->command_queue == NULL)
+               return NULL;
+
+       l = g_queue_find_custom(chat->command_queue, GUINT_TO_POINTER(id),
+                               at_command_compare_by_id);
+
+       if (l == NULL)
+               return NULL;
+
+       c = l->data;
+
+       if (c->gid != group)
+               return NULL;
+
+       return c->user_data;
+}
+
 static guint at_chat_register(struct at_chat *chat, guint group,
                                const char *prefix, GAtNotifyFunc func,
                                gboolean expect_pdu, gpointer user_data,
@@ -1540,6 +1563,14 @@ gboolean g_at_chat_cancel_all(GAtChat *chat)
        return at_chat_cancel_group(chat->parent, chat->group);
 }
 
+gpointer g_at_chat_get_userdata(GAtChat *chat, guint id)
+{
+       if (chat == NULL)
+               return NULL;
+
+       return at_chat_get_userdata(chat->parent, chat->group, id);
+}
+
 guint g_at_chat_register(GAtChat *chat, const char *prefix,
                                GAtNotifyFunc func, gboolean expect_pdu,
                                gpointer user_data,
index 367581ee2e5ff5ce26c257690e30c6a0dedcf1fb..7290b34fa3e075ca7a59c2cbccdd96851735a6eb 100644 (file)
@@ -150,6 +150,8 @@ guint g_at_chat_send_and_expect_short_prompt(GAtChat *chat, const char *cmd,
 gboolean g_at_chat_cancel(GAtChat *chat, guint id);
 gboolean g_at_chat_cancel_all(GAtChat *chat);
 
+gpointer g_at_chat_get_userdata(GAtChat *chat, guint id);
+
 guint g_at_chat_register(GAtChat *chat, const char *prefix,
                                GAtNotifyFunc func, gboolean expect_pdu,
                                gpointer user_data, GDestroyNotify notify);