X-Git-Url: https://git.llucax.com/software/libev.git/blobdiff_plain/40ea26d7fa3e9214a7da4bb1280515948e1a1568..bd14babf134e551f28f49193bf20705933c772c8:/ev.html?ds=sidebyside diff --git a/ev.html b/ev.html index bd93853..bb4c00e 100644 --- a/ev.html +++ b/ev.html @@ -6,7 +6,7 @@ - + @@ -68,7 +68,47 @@

SYNOPSIS

Top

-
  #include <ev.h>
+
  /* this is the only header you need */
+  #include <ev.h>
+
+  /* what follows is a fully working example program */
+  ev_io stdin_watcher;
+  ev_timer timeout_watcher;
+
+  /* called when data readable on stdin */
+  static void
+  stdin_cb (EV_P_ struct ev_io *w, int revents)
+  {
+    /* puts ("stdin ready"); */
+    ev_io_stop (EV_A_ w); /* just a syntax example */
+    ev_unloop (EV_A_ EVUNLOOP_ALL); /* leave all loop calls */
+  }
+
+  static void
+  timeout_cb (EV_P_ struct ev_timer *w, int revents)
+  {
+    /* puts ("timeout"); */
+    ev_unloop (EV_A_ EVUNLOOP_ONE); /* leave one loop call */
+  }
+
+  int
+  main (void)
+  {
+    struct ev_loop *loop = ev_default_loop (0);
+
+    /* initialise an io watcher, then start it */
+    ev_io_init (&stdin_watcher, stdin_cb, /*STDIN_FILENO*/ 0, EV_READ);
+    ev_io_start (loop, &stdin_watcher);
+
+    /* simple non-repeating 5.5 second timeout */
+    ev_timer_init (&timeout_watcher, timeout_cb, 5.5, 0.);
+    ev_timer_start (loop, &timeout_watcher);
+
+    /* loop till timeout or data ready */
+    ev_loop (loop, 0);
+
+    return 0;
+  }