]> git.llucax.com Git - software/libev.git/blobdiff - ev.pod
- ein bild sagt mehr als tausend worte
[software/libev.git] / ev.pod
diff --git a/ev.pod b/ev.pod
index 5b0835dd77b1ae9c38462207de5201b611393d97..43db80f2552c54a983d830740eb3c51300efd07a 100644 (file)
--- a/ev.pod
+++ b/ev.pod
@@ -4,8 +4,48 @@ libev - a high performance full-featured event loop written in C
 
 =head1 SYNOPSIS
 
 
 =head1 SYNOPSIS
 
+  /* this is the only header you need */
   #include <ev.h>
 
   #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
 =head1 DESCRIPTION
 
 Libev is an event loop: you register interest in certain events (such as a
@@ -117,13 +157,13 @@ recommended ones.
 
 See the description of C<ev_embed> watchers for more info.
 
 
 See the description of C<ev_embed> watchers for more info.
 
-=item ev_set_allocator (void *(*cb)(void *ptr, long size))
+=item ev_set_allocator (void *(*cb)(void *ptr, size_t size))
 
 
-Sets the allocation function to use (the prototype is similar to the
-realloc C function, the semantics are identical). It is used to allocate
-and free memory (no surprises here). If it returns zero when memory
-needs to be allocated, the library might abort or take some potentially
-destructive action. The default is your system realloc function.
+Sets the allocation function to use (the prototype and semantics are
+identical to the realloc C function). It is used to allocate and free
+memory (no surprises here). If it returns zero when memory needs to be
+allocated, the library might abort or take some potentially destructive
+action. The default is your system realloc function.
 
 You could override this function in high-availability programs to, say,
 free some memory if it cannot allocate memory, to use a special allocator,
 
 You could override this function in high-availability programs to, say,
 free some memory if it cannot allocate memory, to use a special allocator,
@@ -133,7 +173,7 @@ Example: replace the libev allocator with one that waits a bit and then
 retries: better than mine).
 
    static void *
 retries: better than mine).
 
    static void *
-   persistent_realloc (void *ptr, long size)
+   persistent_realloc (void *ptr, size_t size)
    {
      for (;;)
        {
    {
      for (;;)
        {