gisi: Add client API to reset instance

Calling this method will cancel any pending requests, and unsubscribe
from any pending subscriptions.
This commit is contained in:
Aki Niemi 2010-11-23 16:08:11 +02:00
parent edd0b327e0
commit 188bbc5d3b
2 changed files with 14 additions and 1 deletions

View 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);
}

View 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,