summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-01-27 20:34:22 +0000
committerLennart Poettering <lennart@poettering.net>2006-01-27 20:34:22 +0000
commitb7e4639b7f117250021a38b018c54e8004bff0d9 (patch)
tree24dc158efe89bd5a461fb5474175cfef44aeedad
parent4ecb5cd013710a7871f58b68fa118b7f1a58ac8d (diff)
update example to include some code to show how to modify an existing service
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@1114 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
-rw-r--r--examples/client-publish-service.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/examples/client-publish-service.c b/examples/client-publish-service.c
index a9f9f8c..96afaf3 100644
--- a/examples/client-publish-service.c
+++ b/examples/client-publish-service.c
@@ -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);