From 3d2e63d2c5c351dde38b24a45a679ce819ed0e41 Mon Sep 17 00:00:00 2001 From: Trent Lloyd Date: Sun, 14 Aug 2005 12:06:09 +0000 Subject: * Add a free function for AvahiEntryGroup in C api * Modify the browser free functions to return/set errors. git-svn-id: file:///home/lennart/svn/public/avahi/trunk@320 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe --- avahi-client/browser.c | 38 ++++++++++++++++++++++++-------------- avahi-client/client.h | 9 ++++++--- avahi-client/entrygroup.c | 22 ++++++++++++++++++++++ 3 files changed, 52 insertions(+), 17 deletions(-) (limited to 'avahi-client') diff --git a/avahi-client/browser.c b/avahi-client/browser.c index 6e0ed5d..ab7a921 100644 --- a/avahi-client/browser.c +++ b/avahi-client/browser.c @@ -88,25 +88,29 @@ dbus_error: return NULL; } -void +int avahi_domain_browser_free (AvahiDomainBrowser *b) { + AvahiClient *client = b->client; DBusMessage *message = NULL; if (b == NULL || b->path == NULL) - return; + return avahi_client_set_errno (client, AVAHI_ERR_INVALID_OBJECT); message = dbus_message_new_method_call (AVAHI_DBUS_NAME, b->path, AVAHI_DBUS_INTERFACE_DOMAIN_BROWSER, "Free"); - dbus_connection_send (b->client->bus, message, NULL); + if (message == NULL) + return avahi_client_set_errno (client, AVAHI_ERR_DBUS_ERROR); + + dbus_connection_send (client->bus, message, NULL); - AVAHI_LLIST_REMOVE(AvahiDomainBrowser, domain_browsers, b->client->domain_browsers, b); + AVAHI_LLIST_REMOVE(AvahiDomainBrowser, domain_browsers, client->domain_browsers, b); free (b); - return; + return avahi_client_set_errno (client, AVAHI_OK); } char* @@ -207,25 +211,29 @@ dbus_error: return NULL; } -void +int avahi_service_type_browser_free (AvahiServiceTypeBrowser *b) { + AvahiClient *client = b->client; DBusMessage *message = NULL; if (b == NULL || b->path == NULL) - return; + return avahi_client_set_errno (client, AVAHI_ERR_INVALID_OBJECT); message = dbus_message_new_method_call (AVAHI_DBUS_NAME, b->path, AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "Free"); + if (message == NULL) + return avahi_client_set_errno (client, AVAHI_ERR_DBUS_ERROR); + dbus_connection_send (b->client->bus, message, NULL); AVAHI_LLIST_REMOVE(AvahiServiceTypeBrowser, service_type_browsers, b->client->service_type_browsers, b); free (b); - return; + return avahi_client_set_errno (client, AVAHI_OK); } char* @@ -334,27 +342,29 @@ dbus_error: return NULL; } -void +int avahi_service_browser_free (AvahiServiceBrowser *b) { + AvahiClient *client = b->client; DBusMessage *message = NULL; - + if (b == NULL || b->path == NULL) - return; - - printf ("Freeing %s\n", b->path); + return avahi_client_set_errno (client, AVAHI_ERR_INVALID_OBJECT); message = dbus_message_new_method_call (AVAHI_DBUS_NAME, b->path, AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "Free"); + if (message == NULL) + return avahi_client_set_errno (client, AVAHI_ERR_DBUS_ERROR); + dbus_connection_send (b->client->bus, message, NULL); AVAHI_LLIST_REMOVE(AvahiServiceBrowser, service_browsers, b->client->service_browsers, b); free (b); - return; + return avahi_client_set_errno (client, AVAHI_OK); } char* diff --git a/avahi-client/client.h b/avahi-client/client.h index 824f1e9..16e9998 100644 --- a/avahi-client/client.h +++ b/avahi-client/client.h @@ -84,6 +84,9 @@ char* avahi_client_get_host_name_fqdn (AvahiClient*); /** Create a new AvahiEntryGroup object */ AvahiEntryGroup* avahi_entry_group_new (AvahiClient*, AvahiEntryGroupCallback callback, void *user_data); +/** Clean up and free an AvahiEntryGroup object */ +int avahi_entry_group_free (AvahiEntryGroup *); + /** Commit an AvahiEntryGroup */ int avahi_entry_group_commit (AvahiEntryGroup*); @@ -130,7 +133,7 @@ AvahiDomainBrowser* avahi_domain_browser_new (AvahiClient *client, char* avahi_domain_browser_path (AvahiDomainBrowser *); /** Cleans up and frees an AvahiDomainBrowser object */ -void avahi_domain_browser_free (AvahiDomainBrowser *); +int avahi_domain_browser_free (AvahiDomainBrowser *); /** Browse for service types on the local network */ AvahiServiceTypeBrowser* avahi_service_type_browser_new ( @@ -145,7 +148,7 @@ AvahiServiceTypeBrowser* avahi_service_type_browser_new ( char* avahi_service_type_browser_path (AvahiServiceTypeBrowser *); /** Cleans up and frees an AvahiServiceTypeBrowser object */ -void avahi_service_type_browser_free (AvahiServiceTypeBrowser *); +int avahi_service_type_browser_free (AvahiServiceTypeBrowser *); /** Browse for services of a type on the local network */ AvahiServiceBrowser* avahi_service_browser_new ( @@ -161,7 +164,7 @@ AvahiServiceBrowser* avahi_service_browser_new ( char* avahi_service_browser_path (AvahiServiceBrowser *); /* Cleans up and frees an AvahiServiceBrowser object */ -void avahi_service_browser_free (AvahiServiceBrowser *); +int avahi_service_browser_free (AvahiServiceBrowser *); #ifndef DOXYGEN_SHOULD_SKIP_THIS AVAHI_C_DECL_END diff --git a/avahi-client/entrygroup.c b/avahi-client/entrygroup.c index ea56ee2..8120e49 100644 --- a/avahi-client/entrygroup.c +++ b/avahi-client/entrygroup.c @@ -113,6 +113,28 @@ fail: return NULL; } +int +avahi_entry_group_free (AvahiEntryGroup *group) +{ + AvahiClient *client = group->client; + DBusMessage *message; + + if (group == NULL || group->path == NULL) + return avahi_client_set_errno (client, AVAHI_ERR_INVALID_OBJECT); + + message = dbus_message_new_method_call (AVAHI_DBUS_NAME, + group->path, AVAHI_DBUS_INTERFACE_ENTRY_GROUP, "Free"); + + if (message == NULL) + return avahi_client_set_errno (client, AVAHI_ERR_DBUS_ERROR); + + dbus_connection_send (client->bus, message, NULL); + + free (group); + + return avahi_client_set_errno (client, AVAHI_OK); +} + int avahi_entry_group_commit (AvahiEntryGroup *group) { -- cgit