From: Denis Kenzior Date: Wed, 2 Dec 2009 21:28:44 +0000 (-0600) Subject: Add: g_at_chat_cancel_all function X-Git-Tag: 0.48~173 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d33ccd21e167a190db5f15af040a27124a6a8fc6;p=platform%2Fupstream%2Fconnman.git Add: g_at_chat_cancel_all function This will cancel all commands currently queued. --- diff --git a/gatchat/gatchat.c b/gatchat/gatchat.c index df65906..54e6434 100644 --- a/gatchat/gatchat.c +++ b/gatchat/gatchat.c @@ -1219,6 +1219,33 @@ gboolean g_at_chat_cancel(GAtChat *chat, guint id) return TRUE; } +gboolean g_at_chat_cancel_all(GAtChat *chat) +{ + int n = 0; + struct at_command *c; + + if (chat == NULL || chat->command_queue == NULL) + return FALSE; + + while ((c = g_queue_peek_nth(chat->command_queue, n)) != NULL) { + if (c->id == 0) { + n += 1; + continue; + } + + if (n == 0 && chat->cmd_bytes_written > 0) { + c->callback = NULL; + n += 1; + continue; + } + + at_command_destroy(c); + g_queue_remove(chat->command_queue, c); + } + + return TRUE; +} + static struct at_notify *at_notify_create(GAtChat *chat, const char *prefix, gboolean pdu) { diff --git a/gatchat/gatchat.h b/gatchat/gatchat.h index 249c8cf..8fffda6 100644 --- a/gatchat/gatchat.h +++ b/gatchat/gatchat.h @@ -118,6 +118,7 @@ guint g_at_chat_send_pdu_listing(GAtChat *chat, const char *cmd, gpointer user_data, GDestroyNotify notify); gboolean g_at_chat_cancel(GAtChat *chat, guint id); +gboolean g_at_chat_cancel_all(GAtChat *chat); guint g_at_chat_register(GAtChat *chat, const char *prefix, GAtNotifyFunc func, gboolean expect_pdu,