ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/README
Revision: 1.20
Committed: Sat Dec 22 12:05:42 2007 UTC (16 years, 4 months ago) by root
Branch: MAIN
Changes since 1.19: +76 -15 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 NAME
2 root 1.6 EV - perl interface to libev, a high performance full-featured event
3     loop
4 root 1.1
5 root 1.2 SYNOPSIS
6 root 1.4 use EV;
7    
8 root 1.6 # TIMERS
9 root 1.4
10     my $w = EV::timer 2, 0, sub {
11     warn "is called after 2s";
12     };
13    
14 root 1.9 my $w = EV::timer 2, 2, sub {
15     warn "is called roughly every 2s (repeat = 2)";
16 root 1.4 };
17    
18     undef $w; # destroy event watcher again
19    
20 root 1.8 my $w = EV::periodic 0, 60, 0, sub {
21 root 1.4 warn "is called every minute, on the minute, exactly";
22     };
23    
24     # IO
25    
26 root 1.6 my $w = EV::io *STDIN, EV::READ, sub {
27 root 1.9 my ($w, $revents) = @_; # all callbacks receive the watcher and event mask
28 root 1.6 warn "stdin is readable, you entered: ", <STDIN>;
29 root 1.4 };
30    
31     # SIGNALS
32    
33     my $w = EV::signal 'QUIT', sub {
34     warn "sigquit received\n";
35     };
36    
37 root 1.5 # CHILD/PID STATUS CHANGES
38    
39     my $w = EV::child 666, sub {
40 root 1.7 my ($w, $revents) = @_;
41     my $status = $w->rstatus;
42 root 1.5 };
43 root 1.13
44     # STAT CHANGES
45     my $w = EV::stat "/etc/passwd", 10, sub {
46     my ($w, $revents) = @_;
47     warn $w->path, " has changed somehow.\n";
48     };
49 root 1.4
50     # MAINLOOP
51 root 1.10 EV::loop; # loop until EV::unloop is called or all watchers stop
52 root 1.6 EV::loop EV::LOOP_ONESHOT; # block until at least one event could be handled
53     EV::loop EV::LOOP_NONBLOCK; # try to handle same events, but do not block
54 root 1.2
55     DESCRIPTION
56 root 1.5 This module provides an interface to libev
57 root 1.12 (<http://software.schmorp.de/pkg/libev.html>). While the documentation
58     below is comprehensive, one might also consult the documentation of
59     libev itself (<http://cvs.schmorp.de/libev/ev.html>) for more subtle
60     details on watcher semantics or some discussion on the available
61 root 1.16 backends, or how to force a specific backend with "LIBEV_FLAGS", or just
62     about in any case because it has much more detailed information.
63 root 1.2
64 root 1.20 EVENT LOOPS
65     EV supports multiple event loops: There is a single "default event loop"
66     that can handle everything including signals and child watchers, and any
67     number of "dynamic event loops" that can use different backends (with
68     various limitations), but no child and signal watchers.
69    
70     You do not have to do anything to create the default event loop: When
71     the module is loaded a suitable backend is selected on the premise of
72     selecting a working backend (which for example rules out kqueue on most
73     BSDs). Modules should, unless they have "special needs" always use the
74     default loop as this is fastest (perl-wise), best supported by other
75     modules (e.g. AnyEvent or Coro) and most portable event loop.
76    
77     For specific programs you cna create additional event loops dynamically.
78    
79     $loop = new EV::loop [$flags]
80     Create a new event loop as per the specified flags. Please refer to
81     the "ev_loop_new ()" function description in the libev documentation
82     (<http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#GLOBAL_FUNCTI
83     ONS>) for more info.
84    
85     The loop will automatically be destroyed when it is no longer
86     referenced by any watcher and the loop object goes out of scope.
87    
88     Using "EV::FLAG_FORKCHECK" is recommended, as only the default event
89     loop is protected by this module.
90    
91     $loop->loop_fork
92     Must be called after a fork in the child, before entering or
93     continuing the event loop. An alternative is to use
94     "EV::FLAG_FORKCHECK" which calls this fucntion automatically, at
95     some performance loss (refer to the libev documentation).
96    
97 root 1.3 BASIC INTERFACE
98     $EV::DIED
99     Must contain a reference to a function that is called when a
100 root 1.18 callback throws an exception (with $@ containing the error). The
101 root 1.3 default prints an informative message and continues.
102    
103     If this callback throws an exception it will be silently ignored.
104    
105 root 1.6 $time = EV::time
106     Returns the current time in (fractional) seconds since the epoch.
107    
108 root 1.2 $time = EV::now
109 root 1.20 $time = $loop->now
110 root 1.6 Returns the time the last event loop iteration has been started.
111     This is the time that (relative) timers are based on, and refering
112     to it is usually faster then calling EV::time.
113    
114 root 1.20 $backend = EV::backend
115     $backend = $loop->backend
116 root 1.6 Returns an integer describing the backend used by libev
117     (EV::METHOD_SELECT or EV::METHOD_EPOLL).
118    
119     EV::loop [$flags]
120 root 1.20 $loop->loop ([$flags])
121 root 1.6 Begin checking for events and calling callbacks. It returns when a
122 root 1.10 callback calls EV::unloop.
123 root 1.6
124     The $flags argument can be one of the following:
125    
126     0 as above
127     EV::LOOP_ONESHOT block at most once (wait, but do not loop)
128     EV::LOOP_NONBLOCK do not block at all (fetch/handle events but do not wait)
129    
130 root 1.10 EV::unloop [$how]
131 root 1.20 $loop->unloop ([$how])
132 root 1.10 When called with no arguments or an argument of EV::UNLOOP_ONE,
133     makes the innermost call to EV::loop return.
134 root 1.6
135 root 1.10 When called with an argument of EV::UNLOOP_ALL, all calls to
136     EV::loop will return as fast as possible.
137 root 1.6
138 root 1.15 $count = EV::loop_count
139 root 1.20 $count = $loop->loop_count
140 root 1.15 Return the number of times the event loop has polled for new events.
141     Sometiems useful as a generation counter.
142    
143 root 1.12 EV::once $fh_or_undef, $events, $timeout, $cb->($revents)
144 root 1.20 $loop->once ($fh_or_undef, $events, $timeout, $cb->($revents))
145 root 1.12 This function rolls together an I/O and a timer watcher for a single
146     one-shot event without the need for managing a watcher object.
147    
148     If $fh_or_undef is a filehandle or file descriptor, then $events
149     must be a bitset containing either "EV::READ", "EV::WRITE" or
150     "EV::READ | EV::WRITE", indicating the type of I/O event you want to
151     wait for. If you do not want to wait for some I/O event, specify
152     "undef" for $fh_or_undef and 0 for $events).
153    
154     If timeout is "undef" or negative, then there will be no timeout.
155     Otherwise a EV::timer with this value will be started.
156    
157     When an error occurs or either the timeout or I/O watcher triggers,
158     then the callback will be called with the received event set (in
159 root 1.20 general you can expect it to be a combination of "EV::ERROR",
160 root 1.12 "EV::READ", "EV::WRITE" and "EV::TIMEOUT").
161    
162     EV::once doesn't return anything: the watchers stay active till
163     either of them triggers, then they will be stopped and freed, and
164     the callback invoked.
165    
166 root 1.17 EV::feed_fd_event ($fd, $revents)
167 root 1.20 $loop->feed_fd_event ($fd, $revents)
168 root 1.17 Feed an event on a file descriptor into EV. EV will react to this
169     call as if the readyness notifications specified by $revents (a
170     combination of "EV::READ" and "EV::WRITE") happened on the file
171     descriptor $fd.
172    
173     EV::feed_signal_event ($signal)
174     Feed a signal event into EV. EV will react to this call as if the
175     signal specified by $signal had occured.
176    
177 root 1.20 WATCHER OBJECTS
178 root 1.6 A watcher is an object that gets created to record your interest in some
179     event. For instance, if you want to wait for STDIN to become readable,
180     you would create an EV::io watcher for that:
181    
182     my $watcher = EV::io *STDIN, EV::READ, sub {
183     my ($watcher, $revents) = @_;
184 root 1.20 warn "yeah, STDIN should now be readable without blocking!\n"
185 root 1.6 };
186 root 1.2
187 root 1.6 All watchers can be active (waiting for events) or inactive (paused).
188     Only active watchers will have their callbacks invoked. All callbacks
189     will be called with at least two arguments: the watcher and a bitmask of
190     received events.
191    
192     Each watcher type has its associated bit in revents, so you can use the
193     same callback for multiple watchers. The event mask is named after the
194     type, i..e. EV::child sets EV::CHILD, EV::prepare sets EV::PREPARE,
195 root 1.16 EV::periodic sets EV::PERIODIC and so on, with the exception of I/O
196 root 1.6 events (which can set both EV::READ and EV::WRITE bits), and EV::timer
197     (which uses EV::TIMEOUT).
198    
199     In the rare case where one wants to create a watcher but not start it at
200     the same time, each constructor has a variant with a trailing "_ns" in
201     its name, e.g. EV::io has a non-starting variant EV::io_ns and so on.
202    
203     Please note that a watcher will automatically be stopped when the
204 root 1.7 watcher object is destroyed, so you *need* to keep the watcher objects
205 root 1.6 returned by the constructors.
206    
207 root 1.7 Also, all methods changing some aspect of a watcher (->set, ->priority,
208     ->fh and so on) automatically stop and start it again if it is active,
209     which means pending events get lost.
210    
211 root 1.13 COMMON WATCHER METHODS
212     This section lists methods common to all watchers.
213 root 1.2
214 root 1.6 $w->start
215     Starts a watcher if it isn't active already. Does nothing to an
216     already active watcher. By default, all watchers start out in the
217     active state (see the description of the "_ns" variants if you need
218     stopped watchers).
219    
220     $w->stop
221     Stop a watcher if it is active. Also clear any pending events
222     (events that have been received but that didn't yet result in a
223 root 1.16 callback invocation), regardless of whether the watcher was active
224     or not.
225 root 1.6
226     $bool = $w->is_active
227     Returns true if the watcher is active, false otherwise.
228    
229 root 1.8 $current_data = $w->data
230     $old_data = $w->data ($new_data)
231     Queries a freely usable data scalar on the watcher and optionally
232     changes it. This is a way to associate custom data with a watcher:
233    
234     my $w = EV::timer 60, 0, sub {
235     warn $_[0]->data;
236     };
237     $w->data ("print me!");
238    
239 root 1.6 $current_cb = $w->cb
240     $old_cb = $w->cb ($new_cb)
241     Queries the callback on the watcher and optionally changes it. You
242 root 1.7 can do this at any time without the watcher restarting.
243    
244     $current_priority = $w->priority
245     $old_priority = $w->priority ($new_priority)
246     Queries the priority on the watcher and optionally changes it.
247     Pending watchers with higher priority will be invoked first. The
248     valid range of priorities lies between EV::MAXPRI (default 2) and
249     EV::MINPRI (default -2). If the priority is outside this range it
250     will automatically be normalised to the nearest valid priority.
251    
252 root 1.12 The default priority of any newly-created watcher is 0.
253    
254     Note that the priority semantics have not yet been fleshed out and
255     are subject to almost certain change.
256 root 1.2
257 root 1.17 $w->invoke ($revents)
258 root 1.6 Call the callback *now* with the given event mask.
259 root 1.2
260 root 1.17 $w->feed_event ($revents)
261     Feed some events on this watcher into EV. EV will react to this call
262     as if the watcher had received the given $revents mask.
263    
264     $revents = $w->clear_pending
265 root 1.20 If the watcher is pending, this function clears its pending status
266     and returns its $revents bitset (as if its callback was invoked). If
267     the watcher isn't pending it does nothing and returns 0.
268 root 1.17
269 root 1.12 $previous_state = $w->keepalive ($bool)
270     Normally, "EV::loop" will return when there are no active watchers
271     (which is a "deadlock" because no progress can be made anymore).
272     This is convinient because it allows you to start your watchers (and
273     your jobs), call "EV::loop" once and when it returns you know that
274     all your jobs are finished (or they forgot to register some watchers
275     for their task :).
276    
277 root 1.20 Sometimes, however, this gets in your way, for example when the
278 root 1.12 module that calls "EV::loop" (usually the main program) is not the
279     same module as a long-living watcher (for example a DNS client
280     module written by somebody else even). Then you might want any
281     outstanding requests to be handled, but you would not want to keep
282     "EV::loop" from returning just because you happen to have this
283     long-running UDP port watcher.
284    
285     In this case you can clear the keepalive status, which means that
286     even though your watcher is active, it won't keep "EV::loop" from
287     returning.
288    
289     The initial value for keepalive is true (enabled), and you cna
290     change it any time.
291    
292 root 1.16 Example: Register an I/O watcher for some UDP socket but do not keep
293 root 1.12 the event loop from running just because of that watcher.
294    
295     my $udp_socket = ...
296     my $udp_watcher = EV::io $udp_socket, EV::READ, sub { ... };
297 root 1.20 $1000udp_watcher->keepalive (0);
298    
299     $loop = $w->loop
300     Return the loop that this watcher is attached to.
301 root 1.12
302 root 1.20 WATCHER TYPES
303 root 1.13 Each of the following subsections describes a single watcher type.
304    
305 root 1.16 I/O WATCHERS - is this file descriptor readable or writable?
306 root 1.6 $w = EV::io $fileno_or_fh, $eventmask, $callback
307     $w = EV::io_ns $fileno_or_fh, $eventmask, $callback
308 root 1.20 $w = $loop->io ($fileno_or_fh, $eventmask, $callback)
309     $w = $loop->io_ns ($fileno_or_fh, $eventmask, $callback)
310 root 1.6 As long as the returned watcher object is alive, call the $callback
311 root 1.13 when at least one of events specified in $eventmask occurs.
312 root 1.2
313 root 1.6 The $eventmask can be one or more of these constants ORed together:
314 root 1.1
315 root 1.2 EV::READ wait until read() wouldn't block anymore
316     EV::WRITE wait until write() wouldn't block anymore
317    
318 root 1.6 The "io_ns" variant doesn't start (activate) the newly created
319     watcher.
320    
321     $w->set ($fileno_or_fh, $eventmask)
322     Reconfigures the watcher, see the constructor above for details. Can
323     be called at any time.
324    
325     $current_fh = $w->fh
326     $old_fh = $w->fh ($new_fh)
327     Returns the previously set filehandle and optionally set a new one.
328    
329     $current_eventmask = $w->events
330     $old_eventmask = $w->events ($new_eventmask)
331     Returns the previously set event mask and optionally set a new one.
332    
333 root 1.13 TIMER WATCHERS - relative and optionally repeating timeouts
334 root 1.6 $w = EV::timer $after, $repeat, $callback
335     $w = EV::timer_ns $after, $repeat, $callback
336 root 1.20 $w = $loop->timer ($after, $repeat, $callback)
337     $w = $loop->timer_ns ($after, $repeat, $callback)
338 root 1.12 Calls the callback after $after seconds (which may be fractional).
339     If $repeat is non-zero, the timer will be restarted (with the
340     $repeat value as $after) after the callback returns.
341 root 1.6
342     This means that the callback would be called roughly after $after
343 root 1.10 seconds, and then every $repeat seconds. The timer does his best not
344     to drift, but it will not invoke the timer more often then once per
345     event loop iteration, and might drift in other cases. If that isn't
346     acceptable, look at EV::periodic, which can provide long-term stable
347     timers.
348 root 1.6
349 root 1.10 The timer is based on a monotonic clock, that is, if somebody is
350 root 1.6 sitting in front of the machine while the timer is running and
351     changes the system clock, the timer will nevertheless run (roughly)
352     the same time.
353    
354     The "timer_ns" variant doesn't start (activate) the newly created
355     watcher.
356    
357     $w->set ($after, $repeat)
358     Reconfigures the watcher, see the constructor above for details. Can
359 root 1.13 be called at any time.
360 root 1.6
361     $w->again
362     Similar to the "start" method, but has special semantics for
363     repeating timers:
364 root 1.2
365 root 1.10 If the timer is active and non-repeating, it will be stopped.
366    
367 root 1.6 If the timer is active and repeating, reset the timeout to occur
368     $repeat seconds after now.
369 root 1.2
370 root 1.10 If the timer is inactive and repeating, start it using the repeat
371     value.
372 root 1.6
373     Otherwise do nothing.
374    
375     This behaviour is useful when you have a timeout for some IO
376     operation. You create a timer object with the same value for $after
377     and $repeat, and then, in the read/write watcher, run the "again"
378     method on the timeout.
379    
380 root 1.13 PERIODIC WATCHERS - to cron or not to cron?
381 root 1.8 $w = EV::periodic $at, $interval, $reschedule_cb, $callback
382     $w = EV::periodic_ns $at, $interval, $reschedule_cb, $callback
383 root 1.20 $w = $loop->periodic ($at, $interval, $reschedule_cb, $callback)
384     $w = $loop->periodic_ns ($at, $interval, $reschedule_cb, $callback)
385 root 1.8 Similar to EV::timer, but is not based on relative timeouts but on
386     absolute times. Apart from creating "simple" timers that trigger
387     "at" the specified time, it can also be used for non-drifting
388     absolute timers and more complex, cron-like, setups that are not
389     adversely affected by time jumps (i.e. when the system clock is
390     changed by explicit date -s or other means such as ntpd). It is also
391     the most complex watcher type in EV.
392    
393     It has three distinct "modes":
394    
395     * absolute timer ($interval = $reschedule_cb = 0)
396     This time simply fires at the wallclock time $at and doesn't
397     repeat. It will not adjust when a time jump occurs, that is, if
398     it is to be run at January 1st 2011 then it will run when the
399     system time reaches or surpasses this time.
400    
401     * non-repeating interval timer ($interval > 0, $reschedule_cb = 0)
402     In this mode the watcher will always be scheduled to time out at
403     the next "$at + N * $interval" time (for some integer N) and
404     then repeat, regardless of any time jumps.
405    
406     This can be used to create timers that do not drift with respect
407     to system time:
408    
409     my $hourly = EV::periodic 0, 3600, 0, sub { print "once/hour\n" };
410    
411     That doesn't mean there will always be 3600 seconds in between
412     triggers, but only that the the clalback will be called when the
413     system time shows a full hour (UTC).
414    
415     Another way to think about it (for the mathematically inclined)
416     is that EV::periodic will try to run the callback in this mode
417     at the next possible time where "$time = $at (mod $interval)",
418     regardless of any time jumps.
419    
420     * manual reschedule mode ($reschedule_cb = coderef)
421     In this mode $interval and $at are both being ignored. Instead,
422 root 1.10 each time the periodic watcher gets scheduled, the reschedule
423 root 1.8 callback ($reschedule_cb) will be called with the watcher as
424     first, and the current time as second argument.
425    
426     *This callback MUST NOT stop or destroy this or any other
427     periodic watcher, ever*. If you need to stop it, return 1e30 and
428     stop it afterwards.
429    
430     It must return the next time to trigger, based on the passed
431     time value (that is, the lowest time value larger than to the
432     second argument). It will usually be called just before the
433     callback will be triggered, but might be called at other times,
434     too.
435    
436     This can be used to create very complex timers, such as a timer
437     that triggers on each midnight, local time (actually 24 hours
438     after the last midnight, to keep the example simple. If you know
439     a way to do it correctly in about the same space (without
440     requiring elaborate modules), drop me a note :):
441    
442     my $daily = EV::periodic 0, 0, sub {
443     my ($w, $now) = @_;
444    
445     use Time::Local ();
446     my (undef, undef, undef, $d, $m, $y) = localtime $now;
447     86400 + Time::Local::timelocal 0, 0, 0, $d, $m, $y
448     }, sub {
449     print "it's midnight or likely shortly after, now\n";
450     };
451 root 1.6
452     The "periodic_ns" variant doesn't start (activate) the newly created
453 root 1.2 watcher.
454    
455 root 1.8 $w->set ($at, $interval, $reschedule_cb)
456 root 1.6 Reconfigures the watcher, see the constructor above for details. Can
457 root 1.13 be called at any time.
458 root 1.6
459 root 1.8 $w->again
460     Simply stops and starts the watcher again.
461    
462 root 1.19 $time = $w->at
463     Return the time that the watcher is expected to trigger next.
464    
465 root 1.13 SIGNAL WATCHERS - signal me when a signal gets signalled!
466 root 1.6 $w = EV::signal $signal, $callback
467     $w = EV::signal_ns $signal, $callback
468 root 1.4 Call the callback when $signal is received (the signal can be
469 root 1.13 specified by number or by name, just as with "kill" or %SIG).
470 root 1.4
471     EV will grab the signal for the process (the kernel only allows one
472 root 1.6 component to receive a signal at a time) when you start a signal
473     watcher, and removes it again when you stop it. Perl does the same
474     when you add/remove callbacks to %SIG, so watch out.
475    
476     You can have as many signal watchers per signal as you want.
477 root 1.1
478 root 1.6 The "signal_ns" variant doesn't start (activate) the newly created
479     watcher.
480    
481     $w->set ($signal)
482     Reconfigures the watcher, see the constructor above for details. Can
483 root 1.13 be called at any time.
484 root 1.6
485 root 1.7 $current_signum = $w->signal
486     $old_signum = $w->signal ($new_signal)
487     Returns the previously set signal (always as a number not name) and
488     optionally set a new one.
489    
490 root 1.13 CHILD WATCHERS - watch out for process status changes
491 root 1.6 $w = EV::child $pid, $callback
492     $w = EV::child_ns $pid, $callback
493 root 1.20 $w = $loop->child ($pid, $callback)
494     $w = $loop->child_ns ($pid, $callback)
495 root 1.6 Call the callback when a status change for pid $pid (or any pid if
496     $pid is 0) has been received. More precisely: when the process
497 root 1.13 receives a "SIGCHLD", EV will fetch the outstanding exit/wait status
498 root 1.6 for all changed/zombie children and call the callback.
499    
500 root 1.13 It is valid (and fully supported) to install a child watcher after a
501     child has exited but before the event loop has started its next
502     iteration (for example, first you "fork", then the new child process
503     might exit, and only then do you install a child watcher in the
504     parent for the new pid).
505 root 1.6
506 root 1.13 You can access both exit (or tracing) status and pid by using the
507     "rstatus" and "rpid" methods on the watcher object.
508    
509     You can have as many pid watchers per pid as you want, they will all
510     be called.
511 root 1.6
512     The "child_ns" variant doesn't start (activate) the newly created
513     watcher.
514 root 1.1
515 root 1.6 $w->set ($pid)
516     Reconfigures the watcher, see the constructor above for details. Can
517 root 1.13 be called at any time.
518 root 1.6
519 root 1.7 $current_pid = $w->pid
520     $old_pid = $w->pid ($new_pid)
521     Returns the previously set process id and optionally set a new one.
522    
523     $exit_status = $w->rstatus
524     Return the exit/wait status (as returned by waitpid, see the waitpid
525     entry in perlfunc).
526    
527     $pid = $w->rpid
528     Return the pid of the awaited child (useful when you have installed
529     a watcher for all pids).
530    
531 root 1.13 STAT WATCHERS - did the file attributes just change?
532     $w = EV::stat $path, $interval, $callback
533     $w = EV::stat_ns $path, $interval, $callback
534 root 1.20 $w = $loop->stat ($path, $interval, $callback)
535     $w = $loop->stat_ns ($path, $interval, $callback)
536 root 1.13 Call the callback when a file status change has been detected on
537     $path. The $path does not need to exist, changing from "path exists"
538     to "path does not exist" is a status change like any other.
539    
540     The $interval is a recommended polling interval for systems where
541     OS-supported change notifications don't exist or are not supported.
542     If you use 0 then an unspecified default is used (which is highly
543     recommended!), which is to be expected to be around five seconds
544     usually.
545    
546     This watcher type is not meant for massive numbers of stat watchers,
547     as even with OS-supported change notifications, this can be
548     resource-intensive.
549    
550     The "stat_ns" variant doesn't start (activate) the newly created
551     watcher.
552    
553 root 1.14 ... = $w->stat
554     This call is very similar to the perl "stat" built-in: It stats
555     (using "lstat") the path specified in the watcher and sets perls
556     stat cache (as well as EV's idea of the current stat values) to the
557     values found.
558    
559     In scalar context, a boolean is return indicating success or failure
560     of the stat. In list context, the same 13-value list as with stat is
561     returned (except that the blksize and blocks fields are not
562     reliable).
563    
564     In the case of an error, errno is set to "ENOENT" (regardless of the
565     actual error value) and the "nlink" value is forced to zero (if the
566     stat was successful then nlink is guaranteed to be non-zero).
567    
568     See also the next two entries for more info.
569    
570     ... = $w->attr
571     Just like "$w->stat", but without the initial stat'ing: this returns
572     the values most recently detected by EV. See the next entry for more
573     info.
574    
575     ... = $w->prev
576     Just like "$w->stat", but without the initial stat'ing: this returns
577     the previous set of values, before the change.
578    
579     That is, when the watcher callback is invoked, "$w->prev" will be
580     set to the values found *before* a change was detected, while
581     "$w->attr" returns the values found leading to the change detection.
582     The difference (if any) between "prev" and "attr" is what triggered
583     the callback.
584    
585     If you did something to the filesystem object and do not want to
586     trigger yet another change, you can call "stat" to update EV's idea
587     of what the current attributes are.
588    
589 root 1.13 $w->set ($path, $interval)
590     Reconfigures the watcher, see the constructor above for details. Can
591     be called at any time.
592    
593     $current_path = $w->path
594     $old_path = $w->path ($new_path)
595     Returns the previously set path and optionally set a new one.
596    
597     $current_interval = $w->interval
598     $old_interval = $w->interval ($new_interval)
599     Returns the previously set interval and optionally set a new one.
600     Can be used to query the actual interval used.
601    
602     IDLE WATCHERS - when you've got nothing better to do...
603 root 1.6 $w = EV::idle $callback
604     $w = EV::idle_ns $callback
605 root 1.20 $w = $loop->idle ($callback)
606     $w = $loop->idle_ns ($callback)
607 root 1.16 Call the callback when there are no other pending watchers of the
608     same or higher priority (excluding check, prepare and other idle
609     watchers of the same or lower priority, of course). They are called
610     idle watchers because when the watcher is the highest priority
611     pending event in the process, the process is considered to be idle
612     at that priority.
613    
614     If you want a watcher that is only ever called when *no* other
615     events are outstanding you have to set the priority to "EV::MINPRI".
616 root 1.1
617 root 1.6 The process will not block as long as any idle watchers are active,
618     and they will be called repeatedly until stopped.
619 root 1.1
620 root 1.16 For example, if you have idle watchers at priority 0 and 1, and an
621     I/O watcher at priority 0, then the idle watcher at priority 1 and
622     the I/O watcher will always run when ready. Only when the idle
623     watcher at priority 1 is stopped and the I/O watcher at priority 0
624     is not pending with the 0-priority idle watcher be invoked.
625    
626 root 1.6 The "idle_ns" variant doesn't start (activate) the newly created
627     watcher.
628 root 1.4
629 root 1.13 PREPARE WATCHERS - customise your event loop!
630 root 1.6 $w = EV::prepare $callback
631     $w = EV::prepare_ns $callback
632 root 1.20 $w = $loop->prepare ($callback)
633     $w = $loop->prepare_ns ($callback)
634 root 1.6 Call the callback just before the process would block. You can still
635     create/modify any watchers at this point.
636 root 1.1
637 root 1.6 See the EV::check watcher, below, for explanations and an example.
638 root 1.1
639 root 1.6 The "prepare_ns" variant doesn't start (activate) the newly created
640     watcher.
641 root 1.1
642 root 1.13 CHECK WATCHERS - customise your event loop even more!
643 root 1.6 $w = EV::check $callback
644     $w = EV::check_ns $callback
645 root 1.20 $w = $loop->check ($callback)
646     $w = $loop->check_ns ($callback)
647 root 1.6 Call the callback just after the process wakes up again (after it
648     has gathered events), but before any other callbacks have been
649     invoked.
650    
651     This is used to integrate other event-based software into the EV
652     mainloop: You register a prepare callback and in there, you create
653     io and timer watchers as required by the other software. Here is a
654     real-world example of integrating Net::SNMP (with some details left
655     out):
656    
657     our @snmp_watcher;
658    
659     our $snmp_prepare = EV::prepare sub {
660     # do nothing unless active
661     $dispatcher->{_event_queue_h}
662     or return;
663    
664     # make the dispatcher handle any outstanding stuff
665 root 1.12 ... not shown
666 root 1.6
667 root 1.16 # create an I/O watcher for each and every socket
668 root 1.6 @snmp_watcher = (
669     (map { EV::io $_, EV::READ, sub { } }
670     keys %{ $dispatcher->{_descriptors} }),
671 root 1.12
672     EV::timer +($event->[Net::SNMP::Dispatcher::_ACTIVE]
673     ? $event->[Net::SNMP::Dispatcher::_TIME] - EV::now : 0),
674     0, sub { },
675 root 1.6 );
676     };
677    
678 root 1.12 The callbacks are irrelevant (and are not even being called), the
679     only purpose of those watchers is to wake up the process as soon as
680     one of those events occurs (socket readable, or timer timed out).
681     The corresponding EV::check watcher will then clean up:
682 root 1.6
683     our $snmp_check = EV::check sub {
684     # destroy all watchers
685     @snmp_watcher = ();
686    
687     # make the dispatcher handle any new stuff
688 root 1.12 ... not shown
689 root 1.6 };
690    
691     The callbacks of the created watchers will not be called as the
692     watchers are destroyed before this cna happen (remember EV::check
693     gets called first).
694 root 1.1
695 root 1.6 The "check_ns" variant doesn't start (activate) the newly created
696     watcher.
697 root 1.1
698 root 1.13 FORK WATCHERS - the audacity to resume the event loop after a fork
699     Fork watchers are called when a "fork ()" was detected. The invocation
700     is done before the event loop blocks next and before "check" watchers
701     are being called, and only in the child after the fork.
702    
703     $w = EV::fork $callback
704     $w = EV::fork_ns $callback
705 root 1.20 $w = $loop->fork ($callback)
706     $w = $loop->fork_ns ($callback)
707 root 1.13 Call the callback before the event loop is resumed in the child
708     process after a fork.
709    
710     The "fork_ns" variant doesn't start (activate) the newly created
711     watcher.
712    
713 root 1.16 PERL SIGNALS
714     While Perl signal handling (%SIG) is not affected by EV, the behaviour
715     with EV is as the same as any other C library: Perl-signals will only be
716     handled when Perl runs, which means your signal handler might be invoked
717     only the next time an event callback is invoked.
718    
719     The solution is to use EV signal watchers (see "EV::signal"), which will
720     ensure proper operations with regards to other event watchers.
721    
722     If you cannot do this for whatever reason, you can also force a watcher
723     to be called on every event loop iteration by installing a "EV::check"
724     watcher:
725    
726     my $async_check = EV::check sub { };
727    
728 root 1.20 This ensures that perl gets into control for a short time to handle any
729     pending signals, and also ensures (slightly) slower overall operation.
730 root 1.16
731 root 1.5 THREADS
732 root 1.12 Threads are not supported by this module in any way. Perl pseudo-threads
733     is evil stuff and must die. As soon as Perl gains real threads I will
734     work on thread support for it.
735    
736     FORK
737     Most of the "improved" event delivering mechanisms of modern operating
738     systems have quite a few problems with fork(2) (to put it bluntly: it is
739     not supported and usually destructive). Libev makes it possible to work
740     around this by having a function that recreates the kernel state after
741     fork in the child.
742    
743     On non-win32 platforms, this module requires the pthread_atfork
744     functionality to do this automatically for you. This function is quite
745     buggy on most BSDs, though, so YMMV. The overhead for this is quite
746     negligible, because everything the function currently does is set a flag
747     that is checked only when the event loop gets used the next time, so
748     when you do fork but not use EV, the overhead is minimal.
749    
750     On win32, there is no notion of fork so all this doesn't apply, of
751     course.
752 root 1.2
753     SEE ALSO
754 root 1.20 EV::ADNS (asynchronous DNS), Glib::EV (makes Glib/Gtk2 use EV as event
755     loop), EV::Glib (embed Glib into EV), Coro::EV (efficient coroutines
756     with EV), Net::SNMP::EV (asynchronous SNMP).
757 root 1.1
758     AUTHOR
759     Marc Lehmann <schmorp@schmorp.de>
760     http://home.schmorp.de/
761