--- EV/EV.pm 2007/12/22 11:50:04 1.78 +++ EV/EV.pm 2007/12/22 16:37:07 1.79 @@ -104,7 +104,7 @@ default loop as this is fastest (perl-wise), best supported by other modules (e.g. AnyEvent or Coro) and most portable event loop. -For specific programs you cna create additional event loops dynamically. +For specific programs you can create additional event loops dynamically. =over 4 @@ -128,6 +128,10 @@ this fucntion automatically, at some performance loss (refer to the libev documentation). +=item $loop = EV::default_loop [$flags] + +Return the default loop (which is a singleton object). + =back @@ -143,6 +147,16 @@ If this callback throws an exception it will be silently ignored. +=item $flags = EV::supported_backends + +=item $flags = EV::recommended_backends + +=item $flags = EV::embeddable_backends + +Returns the set (see C flags) of backends supported by this +instance of EV, the set of recommended backends (supposed to be good) for +this platform and the set of embeddable backends (see EMBED WATCHERS). + =item $time = EV::time Returns the current time in (fractional) seconds since the epoch. @@ -230,6 +244,19 @@ Feed a signal event into EV. EV will react to this call as if the signal specified by C<$signal> had occured. +=item EV::set_io_collect_interval $time + +=item $loop->set_io_collect_interval ($time) + +=item EV::set_timeout_collect_interval $time + +=item $loop->set_timeout_collect_interval ($time) + +These advanced functions set the minimum block interval when polling for I/O events and the minimum +wait interval for timer events. See the libev documentation at +L for +a more detailed discussion. + =back @@ -891,6 +918,54 @@ =back + +=head3 EMBED WATCHERS - when one backend isn't enough... + +This is a rather advanced watcher type that lets you embed one event loop +into another (currently only IO events are supported in the embedded +loop, other types of watchers might be handled in a delayed or incorrect +fashion and must not be used). + +See the libev documentation at +L +for more details. + +In short, this watcher is most useful on BSD systems without working +kqueue to still be able to handle a large number of sockets: + + my $socket_loop; + + # check wether we use SELECT or POLL _and_ KQUEUE is supported + if ( + (EV::backend & (EV::BACKEND_POLL | EV::BACKEND_SELECT)) + && (EV::supported_backends & EV::embeddable_backends & EV::BACKEND_KQUEUE) + ) { + # use kqueue for sockets + $socket_loop = new EV::Loop EV::BACKEND_KQUEUE | EV::FLAG_NOENV; + } + + # use the default loop otherwise + $socket_loop ||= EV::default_loop; + +=over 4 + +=item $w = EV::embed $otherloop, $callback + +=item $w = EV::embed_ns $otherloop, $callback + +=item $w = $loop->embed ($otherloop, $callback) + +=item $w = $loop->embed_ns ($otherloop, $callback) + +Call the callback when the embedded event loop (C<$otherloop>) has any +I/O activity. The C<$callback> should alwas be specified as C in +this version of EV, which means the embedded event loop will be managed +automatically. + +The C variant doesn't start (activate) the newly created watcher. + +=back + =head1 PERL SIGNALS