]> git.meshlink.io Git - catta/commitdiff
* Implement free functions for the various browsers in the C api
authorTrent Lloyd <lathiat@bur.st>
Sun, 14 Aug 2005 11:50:14 +0000 (11:50 +0000)
committerTrent Lloyd <lathiat@bur.st>
Sun, 14 Aug 2005 11:50:14 +0000 (11:50 +0000)
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@319 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe

avahi-client/browser.c
avahi-client/client-test.c
avahi-client/client.h

index bcd991496c26b27c292735754f1a171741d73a7d..6e0ed5d364bc6200f39e09d8f21fe907bd586c35 100644 (file)
@@ -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)
index cd30b48ff2e836f4960c53f3d41419044b943d15..3dab390b928568e11433a8fbaf0e66be3d4264e5 100644 (file)
@@ -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);
index a242124ee333cfbfed0a10ca366d21006817ce20..824f1e905cf32b1e7d11107e5cc06089b202a1b7 100644 (file)
@@ -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