From bd14babf134e551f28f49193bf20705933c772c8 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 27 Nov 2007 20:15:01 +0000 Subject: - ein bild sagt mehr als tausend worte - the last entry was bollocks, timers did work --- ev.3 | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- ev.html | 44 ++++++++++++++++++++++++++++++++++++++++++-- ev.pod | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 139 insertions(+), 3 deletions(-) diff --git a/ev.3 b/ev.3 index 757d850..6c36997 100644 --- a/ev.3 +++ b/ev.3 @@ -134,9 +134,65 @@ libev \- a high performance full\-featured event loop written in C .SH "SYNOPSIS" .IX Header "SYNOPSIS" -.Vb 1 +.Vb 2 +\& /* this is the only header you need */ \& #include .Ve +.PP +.Vb 3 +\& /* what follows is a fully working example program */ +\& ev_io stdin_watcher; +\& ev_timer timeout_watcher; +.Ve +.PP +.Vb 8 +\& /* 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 */ +\& } +.Ve +.PP +.Vb 6 +\& static void +\& timeout_cb (EV_P_ struct ev_timer *w, int revents) +\& { +\& /* puts ("timeout"); */ +\& ev_unloop (EV_A_ EVUNLOOP_ONE); /* leave one loop call */ +\& } +.Ve +.PP +.Vb 4 +\& int +\& main (void) +\& { +\& struct ev_loop *loop = ev_default_loop (0); +.Ve +.PP +.Vb 3 +\& /* 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); +.Ve +.PP +.Vb 3 +\& /* simple non-repeating 5.5 second timeout */ +\& ev_timer_init (&timeout_watcher, timeout_cb, 5.5, 0.); +\& ev_timer_start (loop, &timeout_watcher); +.Ve +.PP +.Vb 2 +\& /* loop till timeout or data ready */ +\& ev_loop (loop, 0); +.Ve +.PP +.Vb 2 +\& return 0; +\& } +.Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Libev is an event loop: you register interest in certain events (such as a 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;
+  }
 
 
diff --git a/ev.pod b/ev.pod index dceb010..43db80f 100644 --- a/ev.pod +++ b/ev.pod @@ -4,8 +4,48 @@ libev - a high performance full-featured event loop written in C =head1 SYNOPSIS + /* this is the only header you need */ #include + /* 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; + } + =head1 DESCRIPTION Libev is an event loop: you register interest in certain events (such as a -- cgit v1.2.3