#include "watch.h"
#include "simple-watch.h"
#include "timeval.h"
+#include "gccmacro.h"
-static AvahiPoll *api = NULL;
+static const AvahiPoll *api = NULL;
+static AvahiSimplePoll *simple_poll = NULL;
-static void callback(AvahiWatch *w, int fd, AvahiWatchEvent event, void *userdata) {
+static void callback(AvahiWatch *w, int fd, AvahiWatchEvent event, AVAHI_GCC_UNUSED void *userdata) {
if (event & AVAHI_WATCH_IN) {
ssize_t r;
}
}
-int main(int argc, char *argv[]) {
- int i = 0;
- AvahiSimplePoll *s;
-
- s = avahi_simple_poll_new();
- assert(s);
+static void wakeup(AvahiTimeout *t, AVAHI_GCC_UNUSED void *userdata) {
+ static int i = 0;
+ struct timeval tv;
+
+ printf("Wakeup #%i\n", i++);
+
+ if (i > 10)
+ avahi_simple_poll_quit(simple_poll);
+ else {
+ avahi_elapse_time(&tv, 1000, 0);
+ api->timeout_update(t, &tv);
+ }
+}
- api = avahi_simple_poll_get(s);
+int main(AVAHI_GCC_UNUSED int argc, AVAHI_GCC_UNUSED char *argv[]) {
+ struct timeval tv;
+
+ simple_poll = avahi_simple_poll_new();
+ api = avahi_simple_poll_get(simple_poll);
api->watch_new(api, 0, AVAHI_WATCH_IN, callback, NULL);
- for (;;) {
- struct timeval tv;
- printf("Iteration %i\n", i++);
+ avahi_elapse_time(&tv, 1000, 0);
+ api->timeout_new(api, &tv, wakeup, NULL);
- if (i > 100)
- avahi_simple_poll_quit(s);
+ /* Our main loop */
+ avahi_simple_poll_loop(simple_poll);
- avahi_elapse_time(&tv, 1000, 0);
-
- api->set_wakeup_time(api, &tv);
-
- if (avahi_simple_poll_iterate(s, 1) != 0)
- break;
- }
+
+ avahi_simple_poll_free(simple_poll);
return 0;
}