summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root>2007-11-27 20:15:01 +0000
committerroot <root>2007-11-27 20:15:01 +0000
commitbd14babf134e551f28f49193bf20705933c772c8 (patch)
tree2070cde808a7e8aef7e97e4b426da6c25d260683
parent13ceb5587aabc8cb42b646a7c85625c2f50171dc (diff)
- ein bild sagt mehr als tausend worte
- the last entry was bollocks, timers did work
-rw-r--r--ev.358
-rw-r--r--ev.html44
-rw-r--r--ev.pod40
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 <ev.h>
.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 @@
<meta name="description" content="Pod documentation for libev" />
<meta name="inputfile" content="&lt;standard input&gt;" />
<meta name="outputfile" content="&lt;standard output&gt;" />
- <meta name="created" content="Tue Nov 27 20:38:24 2007" />
+ <meta name="created" content="Tue Nov 27 21:14:27 2007" />
<meta name="generator" content="Pod::Xhtml 1.57" />
<link rel="stylesheet" href="http://res.tst.eu/pod.css"/></head>
<body>
@@ -68,7 +68,47 @@
</div>
<h1 id="SYNOPSIS">SYNOPSIS</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SYNOPSIS_CONTENT">
-<pre> #include &lt;ev.h&gt;
+<pre> /* this is the only header you need */
+ #include &lt;ev.h&gt;
+
+ /* 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 (&quot;stdin ready&quot;); */
+ 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 (&quot;timeout&quot;); */
+ 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 (&amp;stdin_watcher, stdin_cb, /*STDIN_FILENO*/ 0, EV_READ);
+ ev_io_start (loop, &amp;stdin_watcher);
+
+ /* simple non-repeating 5.5 second timeout */
+ ev_timer_init (&amp;timeout_watcher, timeout_cb, 5.5, 0.);
+ ev_timer_start (loop, &amp;timeout_watcher);
+
+ /* loop till timeout or data ready */
+ ev_loop (loop, 0);
+
+ return 0;
+ }
</pre>
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 <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;
+ }
+
=head1 DESCRIPTION
Libev is an event loop: you register interest in certain events (such as a