ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.pm
Revision: 1.52
Committed: Sat Nov 24 16:20:30 2007 UTC (16 years, 5 months ago) by root
Branch: MAIN
Changes since 1.51: +5 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 =head1 NAME
2    
3 root 1.20 EV - perl interface to libev, a high performance full-featured event loop
4 root 1.1
5     =head1 SYNOPSIS
6    
7 root 1.11 use EV;
8    
9 root 1.20 # TIMERS
10 root 1.11
11     my $w = EV::timer 2, 0, sub {
12     warn "is called after 2s";
13     };
14    
15 root 1.35 my $w = EV::timer 2, 2, sub {
16     warn "is called roughly every 2s (repeat = 2)";
17 root 1.11 };
18    
19     undef $w; # destroy event watcher again
20    
21 root 1.30 my $w = EV::periodic 0, 60, 0, sub {
22 root 1.11 warn "is called every minute, on the minute, exactly";
23     };
24    
25     # IO
26    
27 root 1.20 my $w = EV::io *STDIN, EV::READ, sub {
28 root 1.35 my ($w, $revents) = @_; # all callbacks receive the watcher and event mask
29 root 1.20 warn "stdin is readable, you entered: ", <STDIN>;
30 root 1.11 };
31    
32     # SIGNALS
33    
34     my $w = EV::signal 'QUIT', sub {
35     warn "sigquit received\n";
36     };
37    
38 root 1.16 # CHILD/PID STATUS CHANGES
39    
40     my $w = EV::child 666, sub {
41 root 1.27 my ($w, $revents) = @_;
42     my $status = $w->rstatus;
43 root 1.16 };
44 root 1.11
45     # MAINLOOP
46 root 1.39 EV::loop; # loop until EV::unloop is called or all watchers stop
47 root 1.20 EV::loop EV::LOOP_ONESHOT; # block until at least one event could be handled
48     EV::loop EV::LOOP_NONBLOCK; # try to handle same events, but do not block
49 root 1.2
50 root 1.1 =head1 DESCRIPTION
51    
52 root 1.16 This module provides an interface to libev
53 root 1.52 (L<http://software.schmorp.de/pkg/libev.html>). While the documentation
54     below is comprehensive, one might also consult the documentation of libev
55     itself (L<http://cvs.schmorp.de/libev/ev.html>) for more subtle details on
56     watcher semantics or some discussion on the available backends, or how to
57     force a specific backend with C<LIBEV_FLAGS>.
58 root 1.1
59     =cut
60    
61     package EV;
62    
63     use strict;
64    
65     BEGIN {
66 root 1.51 our $VERSION = '1.3';
67 root 1.1 use XSLoader;
68     XSLoader::load "EV", $VERSION;
69     }
70    
71 root 1.49 @EV::IO::ISA =
72 root 1.18 @EV::Timer::ISA =
73     @EV::Periodic::ISA =
74     @EV::Signal::ISA =
75     @EV::Idle::ISA =
76     @EV::Prepare::ISA =
77     @EV::Check::ISA =
78 root 1.17 @EV::Child::ISA = "EV::Watcher";
79 root 1.15
80 root 1.8 =head1 BASIC INTERFACE
81 root 1.1
82     =over 4
83    
84 root 1.8 =item $EV::DIED
85    
86     Must contain a reference to a function that is called when a callback
87     throws an exception (with $@ containing thr error). The default prints an
88     informative message and continues.
89    
90     If this callback throws an exception it will be silently ignored.
91    
92 root 1.20 =item $time = EV::time
93    
94     Returns the current time in (fractional) seconds since the epoch.
95    
96 root 1.2 =item $time = EV::now
97    
98 root 1.20 Returns the time the last event loop iteration has been started. This
99     is the time that (relative) timers are based on, and refering to it is
100     usually faster then calling EV::time.
101    
102 root 1.41 =item $method = EV::method
103 root 1.20
104     Returns an integer describing the backend used by libev (EV::METHOD_SELECT
105     or EV::METHOD_EPOLL).
106    
107     =item EV::loop [$flags]
108 root 1.2
109 root 1.20 Begin checking for events and calling callbacks. It returns when a
110 root 1.39 callback calls EV::unloop.
111 root 1.2
112 root 1.20 The $flags argument can be one of the following:
113 root 1.2
114 root 1.20 0 as above
115     EV::LOOP_ONESHOT block at most once (wait, but do not loop)
116     EV::LOOP_NONBLOCK do not block at all (fetch/handle events but do not wait)
117 root 1.2
118 root 1.39 =item EV::unloop [$how]
119 root 1.2
120 root 1.39 When called with no arguments or an argument of EV::UNLOOP_ONE, makes the
121     innermost call to EV::loop return.
122 root 1.2
123 root 1.39 When called with an argument of EV::UNLOOP_ALL, all calls to EV::loop will return as
124 root 1.20 fast as possible.
125 root 1.2
126 root 1.48 =item EV::once $fh_or_undef, $events, $timeout, $cb->($revents)
127 root 1.47
128     This function rolls together an I/O and a timer watcher for a single
129     one-shot event without the need for managing a watcher object.
130    
131     If C<$fh_or_undef> is a filehandle or file descriptor, then C<$events>
132     must be a bitset containing either C<EV::READ>, C<EV::WRITE> or C<EV::READ
133     | EV::WRITE>, indicating the type of I/O event you want to wait for. If
134     you do not want to wait for some I/O event, specify C<undef> for
135     C<$fh_or_undef> and C<0> for C<$events>).
136    
137     If timeout is C<undef> or negative, then there will be no
138     timeout. Otherwise a EV::timer with this value will be started.
139    
140     When an error occurs or either the timeout or I/O watcher triggers, then
141     the callback will be called with the received event set (in general
142     you can expect it to be a combination of C<EV:ERROR>, C<EV::READ>,
143     C<EV::WRITE> and C<EV::TIMEOUT>).
144    
145     EV::once doesn't return anything: the watchers stay active till either
146     of them triggers, then they will be stopped and freed, and the callback
147     invoked.
148    
149 root 1.20 =back
150    
151     =head2 WATCHER
152 root 1.2
153 root 1.20 A watcher is an object that gets created to record your interest in some
154     event. For instance, if you want to wait for STDIN to become readable, you
155     would create an EV::io watcher for that:
156    
157     my $watcher = EV::io *STDIN, EV::READ, sub {
158     my ($watcher, $revents) = @_;
159     warn "yeah, STDIN should not be readable without blocking!\n"
160     };
161 root 1.2
162 root 1.20 All watchers can be active (waiting for events) or inactive (paused). Only
163     active watchers will have their callbacks invoked. All callbacks will be
164     called with at least two arguments: the watcher and a bitmask of received
165     events.
166    
167     Each watcher type has its associated bit in revents, so you can use the
168     same callback for multiple watchers. The event mask is named after the
169     type, i..e. EV::child sets EV::CHILD, EV::prepare sets EV::PREPARE,
170     EV::periodic sets EV::PERIODIC and so on, with the exception of IO events
171     (which can set both EV::READ and EV::WRITE bits), and EV::timer (which
172     uses EV::TIMEOUT).
173    
174     In the rare case where one wants to create a watcher but not start it at
175     the same time, each constructor has a variant with a trailing C<_ns> in
176     its name, e.g. EV::io has a non-starting variant EV::io_ns and so on.
177    
178     Please note that a watcher will automatically be stopped when the watcher
179 root 1.23 object is destroyed, so you I<need> to keep the watcher objects returned by
180 root 1.20 the constructors.
181    
182 root 1.23 Also, all methods changing some aspect of a watcher (->set, ->priority,
183     ->fh and so on) automatically stop and start it again if it is active,
184     which means pending events get lost.
185    
186 root 1.20 =head2 WATCHER TYPES
187    
188     Now lets move to the existing watcher types and asociated methods.
189    
190     The following methods are available for all watchers. Then followes a
191     description of each watcher constructor (EV::io, EV::timer, EV::periodic,
192     EV::signal, EV::child, EV::idle, EV::prepare and EV::check), followed by
193     any type-specific methods (if any).
194    
195     =over 4
196 root 1.2
197 root 1.20 =item $w->start
198    
199     Starts a watcher if it isn't active already. Does nothing to an already
200     active watcher. By default, all watchers start out in the active state
201     (see the description of the C<_ns> variants if you need stopped watchers).
202    
203     =item $w->stop
204 root 1.2
205 root 1.20 Stop a watcher if it is active. Also clear any pending events (events that
206     have been received but that didn't yet result in a callback invocation),
207     regardless of wether the watcher was active or not.
208 root 1.2
209 root 1.20 =item $bool = $w->is_active
210 root 1.2
211 root 1.20 Returns true if the watcher is active, false otherwise.
212    
213 root 1.30 =item $current_data = $w->data
214    
215     =item $old_data = $w->data ($new_data)
216    
217     Queries a freely usable data scalar on the watcher and optionally changes
218     it. This is a way to associate custom data with a watcher:
219    
220     my $w = EV::timer 60, 0, sub {
221     warn $_[0]->data;
222     };
223     $w->data ("print me!");
224    
225 root 1.20 =item $current_cb = $w->cb
226    
227     =item $old_cb = $w->cb ($new_cb)
228    
229 root 1.23 Queries the callback on the watcher and optionally changes it. You can do
230     this at any time without the watcher restarting.
231    
232     =item $current_priority = $w->priority
233    
234     =item $old_priority = $w->priority ($new_priority)
235    
236     Queries the priority on the watcher and optionally changes it. Pending
237     watchers with higher priority will be invoked first. The valid range of
238 root 1.24 priorities lies between EV::MAXPRI (default 2) and EV::MINPRI (default
239     -2). If the priority is outside this range it will automatically be
240 root 1.23 normalised to the nearest valid priority.
241    
242 root 1.50 The default priority of any newly-created watcher is 0.
243    
244     Note that the priority semantics have not yet been fleshed out and are
245     subject to almost certain change.
246 root 1.20
247     =item $w->trigger ($revents)
248    
249     Call the callback *now* with the given event mask.
250    
251 root 1.50 =item $previous_state = $w->keepalive ($bool)
252    
253     Normally, C<EV::loop> will return when there are no active watchers
254     (which is a "deadlock" because no progress can be made anymore). This is
255     convinient because it allows you to start your watchers (and your jobs),
256     call C<EV::loop> once and when it returns you know that all your jobs are
257     finished (or they forgot to register some watchers for their task :).
258    
259     Sometimes, however, this gets in your way, for example when you the module
260     that calls C<EV::loop> (usually the main program) is not the same module
261     as a long-living watcher (for example a DNS client module written by
262     somebody else even). Then you might want any outstanding requests to be
263     handled, but you would not want to keep C<EV::loop> from returning just
264     because you happen to have this long-running UDP port watcher.
265    
266     In this case you can clear the keepalive status, which means that even
267     though your watcher is active, it won't keep C<EV::loop> from returning.
268    
269     The initial value for keepalive is true (enabled), and you cna change it
270     any time.
271    
272     Example: Register an IO watcher for some UDP socket but do not keep the
273     event loop from running just because of that watcher.
274    
275     my $udp_socket = ...
276     my $udp_watcher = EV::io $udp_socket, EV::READ, sub { ... };
277     $udp_watcher->keepalive (0);
278 root 1.20
279     =item $w = EV::io $fileno_or_fh, $eventmask, $callback
280 root 1.2
281 root 1.20 =item $w = EV::io_ns $fileno_or_fh, $eventmask, $callback
282 root 1.7
283 root 1.20 As long as the returned watcher object is alive, call the C<$callback>
284     when the events specified in C<$eventmask>.
285 root 1.2
286 root 1.20 The $eventmask can be one or more of these constants ORed together:
287 root 1.2
288     EV::READ wait until read() wouldn't block anymore
289     EV::WRITE wait until write() wouldn't block anymore
290 root 1.7
291 root 1.20 The C<io_ns> variant doesn't start (activate) the newly created watcher.
292 root 1.2
293 root 1.20 =item $w->set ($fileno_or_fh, $eventmask)
294 root 1.10
295 root 1.20 Reconfigures the watcher, see the constructor above for details. Can be
296     called at any time.
297 root 1.10
298 root 1.20 =item $current_fh = $w->fh
299    
300     =item $old_fh = $w->fh ($new_fh)
301    
302     Returns the previously set filehandle and optionally set a new one.
303 root 1.10
304 root 1.20 =item $current_eventmask = $w->events
305    
306     =item $old_eventmask = $w->events ($new_eventmask)
307 root 1.10
308 root 1.20 Returns the previously set event mask and optionally set a new one.
309 root 1.10
310    
311 root 1.20 =item $w = EV::timer $after, $repeat, $callback
312 root 1.2
313 root 1.20 =item $w = EV::timer_ns $after, $repeat, $callback
314 root 1.2
315 root 1.20 Calls the callback after C<$after> seconds. If C<$repeat> is non-zero,
316     the timer will be restarted (with the $repeat value as $after) after the
317     callback returns.
318 root 1.2
319 root 1.20 This means that the callback would be called roughly after C<$after>
320 root 1.39 seconds, and then every C<$repeat> seconds. The timer does his best not
321     to drift, but it will not invoke the timer more often then once per event
322     loop iteration, and might drift in other cases. If that isn't acceptable,
323     look at EV::periodic, which can provide long-term stable timers.
324 root 1.2
325 root 1.39 The timer is based on a monotonic clock, that is, if somebody is sitting
326 root 1.20 in front of the machine while the timer is running and changes the system
327     clock, the timer will nevertheless run (roughly) the same time.
328 root 1.2
329 root 1.20 The C<timer_ns> variant doesn't start (activate) the newly created watcher.
330    
331     =item $w->set ($after, $repeat)
332    
333     Reconfigures the watcher, see the constructor above for details. Can be at
334     any time.
335    
336     =item $w->again
337    
338     Similar to the C<start> method, but has special semantics for repeating timers:
339    
340 root 1.39 If the timer is active and non-repeating, it will be stopped.
341    
342 root 1.20 If the timer is active and repeating, reset the timeout to occur
343     C<$repeat> seconds after now.
344    
345 root 1.39 If the timer is inactive and repeating, start it using the repeat value.
346 root 1.20
347     Otherwise do nothing.
348    
349     This behaviour is useful when you have a timeout for some IO
350     operation. You create a timer object with the same value for C<$after> and
351     C<$repeat>, and then, in the read/write watcher, run the C<again> method
352     on the timeout.
353    
354    
355 root 1.30 =item $w = EV::periodic $at, $interval, $reschedule_cb, $callback
356 root 1.20
357 root 1.30 =item $w = EV::periodic_ns $at, $interval, $reschedule_cb, $callback
358    
359     Similar to EV::timer, but is not based on relative timeouts but on
360     absolute times. Apart from creating "simple" timers that trigger "at" the
361     specified time, it can also be used for non-drifting absolute timers and
362     more complex, cron-like, setups that are not adversely affected by time
363     jumps (i.e. when the system clock is changed by explicit date -s or other
364     means such as ntpd). It is also the most complex watcher type in EV.
365    
366     It has three distinct "modes":
367    
368     =over 4
369 root 1.2
370 root 1.30 =item * absolute timer ($interval = $reschedule_cb = 0)
371 root 1.2
372 root 1.30 This time simply fires at the wallclock time C<$at> and doesn't repeat. It
373     will not adjust when a time jump occurs, that is, if it is to be run
374     at January 1st 2011 then it will run when the system time reaches or
375     surpasses this time.
376 root 1.2
377 root 1.30 =item * non-repeating interval timer ($interval > 0, $reschedule_cb = 0)
378 root 1.2
379 root 1.30 In this mode the watcher will always be scheduled to time out at the
380     next C<$at + N * $interval> time (for some integer N) and then repeat,
381     regardless of any time jumps.
382    
383     This can be used to create timers that do not drift with respect to system
384     time:
385    
386     my $hourly = EV::periodic 0, 3600, 0, sub { print "once/hour\n" };
387    
388     That doesn't mean there will always be 3600 seconds in between triggers,
389     but only that the the clalback will be called when the system time shows a
390     full hour (UTC).
391 root 1.2
392 root 1.7 Another way to think about it (for the mathematically inclined) is that
393 root 1.30 EV::periodic will try to run the callback in this mode at the next
394     possible time where C<$time = $at (mod $interval)>, regardless of any time
395     jumps.
396    
397     =item * manual reschedule mode ($reschedule_cb = coderef)
398    
399 root 1.37 In this mode $interval and $at are both being ignored. Instead, each
400     time the periodic watcher gets scheduled, the reschedule callback
401     ($reschedule_cb) will be called with the watcher as first, and the current
402     time as second argument.
403 root 1.30
404 root 1.31 I<This callback MUST NOT stop or destroy this or any other periodic
405     watcher, ever>. If you need to stop it, return 1e30 and stop it
406     afterwards.
407 root 1.30
408     It must return the next time to trigger, based on the passed time value
409     (that is, the lowest time value larger than to the second argument). It
410     will usually be called just before the callback will be triggered, but
411     might be called at other times, too.
412    
413     This can be used to create very complex timers, such as a timer that
414     triggers on each midnight, local time (actually 24 hours after the last
415     midnight, to keep the example simple. If you know a way to do it correctly
416     in about the same space (without requiring elaborate modules), drop me a
417     note :):
418    
419     my $daily = EV::periodic 0, 0, sub {
420     my ($w, $now) = @_;
421    
422     use Time::Local ();
423     my (undef, undef, undef, $d, $m, $y) = localtime $now;
424     86400 + Time::Local::timelocal 0, 0, 0, $d, $m, $y
425     }, sub {
426     print "it's midnight or likely shortly after, now\n";
427     };
428 root 1.7
429 root 1.30 =back
430 root 1.20
431     The C<periodic_ns> variant doesn't start (activate) the newly created watcher.
432 root 1.2
433 root 1.30 =item $w->set ($at, $interval, $reschedule_cb)
434 root 1.11
435 root 1.20 Reconfigures the watcher, see the constructor above for details. Can be at
436     any time.
437    
438 root 1.30 =item $w->again
439    
440     Simply stops and starts the watcher again.
441    
442 root 1.20
443     =item $w = EV::signal $signal, $callback
444    
445     =item $w = EV::signal_ns $signal, $callback
446 root 1.11
447     Call the callback when $signal is received (the signal can be specified
448 root 1.20 by number or by name, just as with kill or %SIG).
449 root 1.2
450 root 1.11 EV will grab the signal for the process (the kernel only allows one
451 root 1.20 component to receive a signal at a time) when you start a signal watcher,
452     and removes it again when you stop it. Perl does the same when you
453     add/remove callbacks to %SIG, so watch out.
454    
455     You can have as many signal watchers per signal as you want.
456 root 1.2
457 root 1.20 The C<signal_ns> variant doesn't start (activate) the newly created watcher.
458 root 1.2
459 root 1.20 =item $w->set ($signal)
460 root 1.2
461 root 1.20 Reconfigures the watcher, see the constructor above for details. Can be at
462     any time.
463    
464 root 1.22 =item $current_signum = $w->signal
465    
466     =item $old_signum = $w->signal ($new_signal)
467    
468     Returns the previously set signal (always as a number not name) and
469     optionally set a new one.
470    
471 root 1.20
472     =item $w = EV::child $pid, $callback
473    
474     =item $w = EV::child_ns $pid, $callback
475    
476     Call the callback when a status change for pid C<$pid> (or any pid
477     if C<$pid> is 0) has been received. More precisely: when the process
478     receives a SIGCHLD, EV will fetch the outstanding exit/wait status for all
479     changed/zombie children and call the callback.
480    
481 root 1.27 You can access both status and pid by using the C<rstatus> and C<rpid>
482     methods on the watcher object.
483 root 1.20
484     You can have as many pid watchers per pid as you want.
485    
486     The C<child_ns> variant doesn't start (activate) the newly created watcher.
487    
488     =item $w->set ($pid)
489 root 1.1
490 root 1.20 Reconfigures the watcher, see the constructor above for details. Can be at
491     any time.
492 root 1.2
493 root 1.22 =item $current_pid = $w->pid
494    
495     =item $old_pid = $w->pid ($new_pid)
496    
497     Returns the previously set process id and optionally set a new one.
498    
499 root 1.27 =item $exit_status = $w->rstatus
500    
501     Return the exit/wait status (as returned by waitpid, see the waitpid entry
502     in perlfunc).
503    
504     =item $pid = $w->rpid
505    
506     Return the pid of the awaited child (useful when you have installed a
507     watcher for all pids).
508    
509 root 1.2
510 root 1.20 =item $w = EV::idle $callback
511 root 1.2
512 root 1.20 =item $w = EV::idle_ns $callback
513 root 1.2
514 root 1.20 Call the callback when there are no pending io, timer/periodic, signal or
515     child events, i.e. when the process is idle.
516 root 1.2
517 root 1.20 The process will not block as long as any idle watchers are active, and
518     they will be called repeatedly until stopped.
519 root 1.2
520 root 1.20 The C<idle_ns> variant doesn't start (activate) the newly created watcher.
521 root 1.2
522    
523 root 1.20 =item $w = EV::prepare $callback
524 root 1.1
525 root 1.20 =item $w = EV::prepare_ns $callback
526 root 1.1
527 root 1.20 Call the callback just before the process would block. You can still
528     create/modify any watchers at this point.
529 root 1.1
530 root 1.20 See the EV::check watcher, below, for explanations and an example.
531 root 1.2
532 root 1.20 The C<prepare_ns> variant doesn't start (activate) the newly created watcher.
533 root 1.2
534    
535 root 1.20 =item $w = EV::check $callback
536 root 1.2
537 root 1.20 =item $w = EV::check_ns $callback
538 root 1.10
539 root 1.20 Call the callback just after the process wakes up again (after it has
540     gathered events), but before any other callbacks have been invoked.
541 root 1.10
542 root 1.20 This is used to integrate other event-based software into the EV
543     mainloop: You register a prepare callback and in there, you create io and
544     timer watchers as required by the other software. Here is a real-world
545     example of integrating Net::SNMP (with some details left out):
546 root 1.10
547 root 1.20 our @snmp_watcher;
548 root 1.2
549 root 1.20 our $snmp_prepare = EV::prepare sub {
550     # do nothing unless active
551     $dispatcher->{_event_queue_h}
552     or return;
553 root 1.2
554 root 1.20 # make the dispatcher handle any outstanding stuff
555 root 1.45 ... not shown
556 root 1.2
557 root 1.20 # create an IO watcher for each and every socket
558     @snmp_watcher = (
559     (map { EV::io $_, EV::READ, sub { } }
560     keys %{ $dispatcher->{_descriptors} }),
561 root 1.45
562     EV::timer +($event->[Net::SNMP::Dispatcher::_ACTIVE]
563     ? $event->[Net::SNMP::Dispatcher::_TIME] - EV::now : 0),
564     0, sub { },
565 root 1.20 );
566     };
567 root 1.2
568 root 1.45 The callbacks are irrelevant (and are not even being called), the
569     only purpose of those watchers is to wake up the process as soon as
570     one of those events occurs (socket readable, or timer timed out). The
571     corresponding EV::check watcher will then clean up:
572 root 1.2
573 root 1.20 our $snmp_check = EV::check sub {
574     # destroy all watchers
575     @snmp_watcher = ();
576 root 1.2
577 root 1.20 # make the dispatcher handle any new stuff
578 root 1.45 ... not shown
579 root 1.20 };
580 root 1.2
581 root 1.20 The callbacks of the created watchers will not be called as the watchers
582     are destroyed before this cna happen (remember EV::check gets called
583     first).
584 root 1.2
585 root 1.20 The C<check_ns> variant doesn't start (activate) the newly created watcher.
586 root 1.1
587     =back
588    
589 root 1.13 =head1 THREADS
590    
591 root 1.45 Threads are not supported by this module in any way. Perl pseudo-threads
592 root 1.46 is evil stuff and must die. As soon as Perl gains real threads I will work
593     on thread support for it.
594    
595     =head1 FORK
596    
597     Most of the "improved" event delivering mechanisms of modern operating
598     systems have quite a few problems with fork(2) (to put it bluntly: it is
599     not supported and usually destructive). Libev makes it possible to work
600     around this by having a function that recreates the kernel state after
601     fork in the child.
602    
603     On non-win32 platforms, this module requires the pthread_atfork
604     functionality to do this automatically for you. This function is quite
605     buggy on most BSDs, though, so YMMV. The overhead for this is quite
606     negligible, because everything the function currently does is set a flag
607     that is checked only when the event loop gets used the next time, so when
608     you do fork but not use EV, the overhead is minimal.
609    
610     On win32, there is no notion of fork so all this doesn't apply, of course.
611 root 1.13
612 root 1.1 =cut
613    
614 root 1.8 our $DIED = sub {
615     warn "EV: error in callback (ignoring): $@";
616     };
617    
618 root 1.28 default_loop
619 root 1.26 or die 'EV: cannot initialise libev backend. bad $ENV{LIBEV_METHODS}?';
620 root 1.1
621     1;
622    
623 root 1.3 =head1 SEE ALSO
624    
625 root 1.40 L<EV::DNS>.
626 root 1.3
627 root 1.1 =head1 AUTHOR
628    
629     Marc Lehmann <schmorp@schmorp.de>
630     http://home.schmorp.de/
631    
632     =cut
633