summaryrefslogtreecommitdiffstats
path: root/avahi-client
diff options
context:
space:
mode:
authorTrent Lloyd <lathiat@bur.st>2005-08-14 11:50:14 +0000
committerTrent Lloyd <lathiat@bur.st>2005-08-14 11:50:14 +0000
commit77dc1cb05c8e6d23bd9cea37d4b4644cd76f0f82 (patch)
tree743b42076493817410f269be4b7c200be2ed27d8 /avahi-client
parent57d08e039be49ef979c49925521e98a7dbcf09b1 (diff)
* Implement free functions for the various browsers in the C api
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@319 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-client')
-rw-r--r--avahi-client/browser.c65
-rw-r--r--avahi-client/client-test.c12
-rw-r--r--avahi-client/client.h23
3 files changed, 93 insertions, 7 deletions
diff --git a/avahi-client/browser.c b/avahi-client/browser.c
index bcd9914..6e0ed5d 100644
--- a/avahi-client/browser.c
+++ b/avahi-client/browser.c
@@ -88,6 +88,27 @@ dbus_error:
return NULL;
}
+void
+avahi_domain_browser_free (AvahiDomainBrowser *b)
+{
+ DBusMessage *message = NULL;
+
+ if (b == NULL || b->path == NULL)
+ return;
+
+ 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);
+
+ AVAHI_LLIST_REMOVE(AvahiDomainBrowser, domain_browsers, b->client->domain_browsers, b);
+
+ free (b);
+
+ return;
+}
+
char*
avahi_domain_browser_path (AvahiDomainBrowser *b)
{
@@ -186,6 +207,27 @@ dbus_error:
return NULL;
}
+void
+avahi_service_type_browser_free (AvahiServiceTypeBrowser *b)
+{
+ DBusMessage *message = NULL;
+
+ if (b == NULL || b->path == NULL)
+ return;
+
+ message = dbus_message_new_method_call (AVAHI_DBUS_NAME,
+ b->path,
+ AVAHI_DBUS_INTERFACE_SERVICE_TYPE_BROWSER, "Free");
+
+ dbus_connection_send (b->client->bus, message, NULL);
+
+ AVAHI_LLIST_REMOVE(AvahiServiceTypeBrowser, service_type_browsers, b->client->service_type_browsers, b);
+
+ free (b);
+
+ return;
+}
+
char*
avahi_service_type_browser_path (AvahiServiceTypeBrowser *b)
{
@@ -291,6 +333,29 @@ dbus_error:
return NULL;
}
+
+void
+avahi_service_browser_free (AvahiServiceBrowser *b)
+{
+ DBusMessage *message = NULL;
+
+ if (b == NULL || b->path == NULL)
+ return;
+
+ printf ("Freeing %s\n", b->path);
+
+ message = dbus_message_new_method_call (AVAHI_DBUS_NAME,
+ b->path,
+ AVAHI_DBUS_INTERFACE_SERVICE_BROWSER, "Free");
+
+ dbus_connection_send (b->client->bus, message, NULL);
+
+ AVAHI_LLIST_REMOVE(AvahiServiceBrowser, service_browsers, b->client->service_browsers, b);
+
+ free (b);
+
+ return;
+}
char*
avahi_service_browser_path (AvahiServiceBrowser *b)
diff --git a/avahi-client/client-test.c b/avahi-client/client-test.c
index cd30b48..3dab390 100644
--- a/avahi-client/client-test.c
+++ b/avahi-client/client-test.c
@@ -57,6 +57,16 @@ avahi_service_type_browser_callback (AvahiServiceTypeBrowser *b, AvahiIfIndex in
{
printf ("XXX: Callback on %s, interface (%d), protocol (%d), event (%d), type (%s), domain (%s), data (%s)\n", avahi_service_type_browser_path (b), interface, protocol, event, type, domain, (char*)user_data);
}
+
+gboolean
+test_free (gpointer data)
+{
+ printf ("XXX: freeing\n");
+ AvahiServiceBrowser *b = data;
+ avahi_service_browser_free (b);
+ return FALSE;
+}
+
int
main (int argc, char *argv[])
{
@@ -124,6 +134,8 @@ main (int argc, char *argv[])
else
printf ("Sucessfully created service browser, path %s\n", avahi_service_browser_path (sb));
+ g_timeout_add (2000, test_free, sb);
+
g_main_loop_run (loop);
g_free (avahi);
diff --git a/avahi-client/client.h b/avahi-client/client.h
index a242124..824f1e9 100644
--- a/avahi-client/client.h
+++ b/avahi-client/client.h
@@ -117,9 +117,6 @@ avahi_entry_group_add_service (AvahiEntryGroup *group,
/** Get the D-Bus path of an AvahiEntryGroup object, for debugging purposes only. */
char* avahi_entry_group_path (AvahiEntryGroup *);
-/** Get the D-Bus path of an AvahiDomainBrowser object, for debugging purposes only. */
-char* avahi_domain_browser_path (AvahiDomainBrowser *);
-
/** Browse for domains on the local network */
AvahiDomainBrowser* avahi_domain_browser_new (AvahiClient *client,
AvahiIfIndex interface,
@@ -129,8 +126,11 @@ AvahiDomainBrowser* avahi_domain_browser_new (AvahiClient *client,
AvahiDomainBrowserCallback callback,
void *user_data);
-/** Get the D-Bus path of an AvahiServiceTypeBrowser object, for debugging purposes only. */
-char* avahi_service_type_browser_path (AvahiServiceTypeBrowser *);
+/** Get the D-Bus path of an AvahiDomainBrowser object, for debugging purposes only. */
+char* avahi_domain_browser_path (AvahiDomainBrowser *);
+
+/** Cleans up and frees an AvahiDomainBrowser object */
+void avahi_domain_browser_free (AvahiDomainBrowser *);
/** Browse for service types on the local network */
AvahiServiceTypeBrowser* avahi_service_type_browser_new (
@@ -141,8 +141,11 @@ AvahiServiceTypeBrowser* avahi_service_type_browser_new (
AvahiServiceTypeBrowserCallback callback,
void *user_data);
-/** Get the D-Bus path of an AvahiServiceBrowser object, for debugging purposes only. */
-char* avahi_service_browser_path (AvahiServiceBrowser *);
+/** Get the D-Bus path of an AvahiServiceTypeBrowser object, for debugging purposes only. */
+char* avahi_service_type_browser_path (AvahiServiceTypeBrowser *);
+
+/** Cleans up and frees an AvahiServiceTypeBrowser object */
+void avahi_service_type_browser_free (AvahiServiceTypeBrowser *);
/** Browse for services of a type on the local network */
AvahiServiceBrowser* avahi_service_browser_new (
@@ -154,6 +157,12 @@ AvahiServiceBrowser* avahi_service_browser_new (
AvahiServiceBrowserCallback callback,
void *user_data);
+/** Get the D-Bus path of an AvahiServiceBrowser object, for debugging purposes only. */
+char* avahi_service_browser_path (AvahiServiceBrowser *);
+
+/* Cleans up and frees an AvahiServiceBrowser object */
+void avahi_service_browser_free (AvahiServiceBrowser *);
+
#ifndef DOXYGEN_SHOULD_SKIP_THIS
AVAHI_C_DECL_END
#endif