]> git.meshlink.io Git - catta/commitdiff
update example to include some code to show how to modify an existing service
authorLennart Poettering <lennart@poettering.net>
Fri, 27 Jan 2006 20:34:22 +0000 (20:34 +0000)
committerLennart Poettering <lennart@poettering.net>
Fri, 27 Jan 2006 20:34:22 +0000 (20:34 +0000)
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@1114 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe

examples/client-publish-service.c

index a9f9f8c11da83b0219f47ab9efe1ed5ab9ef5489..96afaf33810de89827143126ffbb4b8073395931 100644 (file)
@@ -35,6 +35,7 @@
 #include <avahi-common/simple-watch.h>
 #include <avahi-common/malloc.h>
 #include <avahi-common/error.h>
+#include <avahi-common/timeval.h>
 
 static AvahiEntryGroup *group = NULL;
 static AvahiSimplePoll *simple_poll = NULL;
@@ -163,10 +164,32 @@ static void client_callback(AvahiClient *c, AvahiClientState state, AVAHI_GCC_UN
     }
 }
 
+static void modify_callback(AVAHI_GCC_UNUSED AvahiTimeout *e, void *userdata) {
+    AvahiClient *client = userdata;
+
+    fprintf(stderr, "Doing some weird modification\n");
+
+    avahi_free(name); 
+    name = avahi_strdup("Modified MegaPrinter"); 
+
+    /* If the server is currently running, we need to remove our
+     * service and create it anew */
+    if (avahi_client_get_state(client) == AVAHI_CLIENT_S_RUNNING) {
+
+        /* Remove the old services */
+        if (group)
+            avahi_entry_group_reset(group);
+
+        /* And create them again with the new name */
+        create_services(client);
+    }
+}
+
 int main(AVAHI_GCC_UNUSED int argc, AVAHI_GCC_UNUSED char*argv[]) {
     AvahiClient *client = NULL;
     int error;
     int ret = 1;
+    struct timeval tv;
     
     /* Allocate main loop object */
     if (!(simple_poll = avahi_simple_poll_new())) {
@@ -185,6 +208,13 @@ int main(AVAHI_GCC_UNUSED int argc, AVAHI_GCC_UNUSED char*argv[]) {
         goto fail;
     }
 
+    /* After 20s do some weird modification to the service */
+    avahi_simple_poll_get(simple_poll)->timeout_new(
+        avahi_simple_poll_get(simple_poll),
+        avahi_elapse_time(&tv, 1000*10, 0),
+        modify_callback,
+        client);
+    
     /* Run the main loop */
     avahi_simple_poll_loop(simple_poll);