gisi: Add client API to reset instance
authorAki Niemi <aki.niemi@nokia.com>
Tue, 23 Nov 2010 14:08:11 +0000 (16:08 +0200)
committerAki Niemi <aki.niemi@nokia.com>
Wed, 22 Dec 2010 15:13:47 +0000 (17:13 +0200)
Calling this method will cancel any pending requests, and unsubscribe
from any pending subscriptions.

gisi/client.c
gisi/client.h

index d1fad2e..e536d4e 100644 (file)
@@ -127,13 +127,25 @@ static void foreach_destroy(gpointer value, gpointer user)
        g_isi_pending_remove(op);
 }
 
-void g_isi_client_destroy(GIsiClient *client)
+void g_isi_client_reset(GIsiClient *client)
 {
        if (client == NULL)
                return;
 
+       if (!client->pending)
+               return;
+
        g_slist_foreach(client->pending, foreach_destroy, client);
        g_slist_free(client->pending);
+       client->pending = NULL;
+};
+
+void g_isi_client_destroy(GIsiClient *client)
+{
+       if (!client)
+               return;
+
+       g_isi_client_reset(client);
        g_free(client);
 }
 
index 51acf0a..ea140ed 100644 (file)
@@ -37,6 +37,7 @@ typedef struct _GIsiClient GIsiClient;
 GIsiClient *g_isi_client_create(GIsiModem *modem, uint8_t resource);
 GIsiModem *g_isi_client_modem(GIsiClient *client);
 uint8_t g_isi_client_resource(GIsiClient *client);
+void g_isi_client_reset(GIsiClient *client);
 void g_isi_client_destroy(GIsiClient *client);
 
 GIsiPending *g_isi_client_send(GIsiClient *client, const void *__restrict msg,