ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.pm
(Generate patch)

Comparing EV/EV.pm (file contents):
Revision 1.147 by root, Mon Jul 13 19:47:53 2015 UTC vs.
Revision 1.168 by root, Thu Oct 19 18:05:43 2023 UTC

10 10
11 my $w = EV::timer 2, 0, sub { 11 my $w = EV::timer 2, 0, sub {
12 warn "is called after 2s"; 12 warn "is called after 2s";
13 }; 13 };
14 14
15 my $w = EV::timer 2, 2, sub { 15 my $w = EV::timer 0, 3, sub {
16 warn "is called roughly every 2s (repeat = 2)"; 16 warn "is called as soon as possible, then every 3s";
17 }; 17 };
18 18
19 undef $w; # destroy event watcher again 19 undef $w; # destroy event watcher again
20 20
21 my $w = EV::periodic 0, 60, 0, sub { 21 my $w = EV::periodic 0, 60, 0, sub {
35 warn "sigquit received\n"; 35 warn "sigquit received\n";
36 }; 36 };
37 37
38 # CHILD/PID STATUS CHANGES 38 # CHILD/PID STATUS CHANGES
39 39
40 my $w = EV::child 666, 0, sub { 40 my $w = EV::child $pid, 0, sub {
41 my ($w, $revents) = @_; 41 my ($w, $revents) = @_;
42 my $status = $w->rstatus; 42 my $status = $w->rstatus;
43 }; 43 };
44 44
45 # STAT CHANGES 45 # STAT CHANGES
119package EV; 119package EV;
120 120
121use common::sense; 121use common::sense;
122 122
123BEGIN { 123BEGIN {
124 our $VERSION = 4.21; 124 our $VERSION = '4.34';
125 use XSLoader; 125 use XSLoader;
126 local $^W = 0; # avoid spurious warning 126 local $^W = 0; # avoid spurious warning
127 XSLoader::load "EV", $VERSION; 127 XSLoader::load "EV", $VERSION;
128} 128}
129 129
175or locally-installed as F<EV::libev> manpage) for more info. 175or locally-installed as F<EV::libev> manpage) for more info.
176 176
177The loop will automatically be destroyed when it is no longer referenced 177The loop will automatically be destroyed when it is no longer referenced
178by any watcher and the loop object goes out of scope. 178by any watcher and the loop object goes out of scope.
179 179
180If you are not embedding the loop, then Using C<EV::FLAG_FORKCHECK> 180If you are not embedding the loop, then using C<EV::FLAG_FORKCHECK>
181is recommended, as only the default event loop is protected by this 181is recommended, as only the default event loop is protected by this
182module. If you I<are> embedding this loop in the default loop, this is not 182module. If you I<are> embedding this loop in the default loop, this is not
183necessary, as C<EV::embed> automatically does the right thing on fork. 183necessary, as C<EV::embed> automatically does the right thing on fork.
184 184
185=item $loop->loop_fork 185=item $loop->loop_fork
248 248
249=item $loop->now_update 249=item $loop->now_update
250 250
251Establishes the current time by querying the kernel, updating the time 251Establishes the current time by querying the kernel, updating the time
252returned by C<EV::now> in the progress. This is a costly operation and 252returned by C<EV::now> in the progress. This is a costly operation and
253is usually done automatically within C<EV::loop>. 253is usually done automatically within C<EV::run>.
254 254
255This function is rarely useful, but when some event callback runs for a 255This function is rarely useful, but when some event callback runs for a
256very long time without entering the event loop, updating libev's idea of 256very long time without entering the event loop, updating libev's idea of
257the current time is a good idea. 257the current time is a good idea.
258 258
296=item $active = EV::run [$flags] 296=item $active = EV::run [$flags]
297 297
298=item $active = $loop->run ([$flags]) 298=item $active = $loop->run ([$flags])
299 299
300Begin checking for events and calling callbacks. It returns when a 300Begin checking for events and calling callbacks. It returns when a
301callback calls EV::break or the flasg are nonzero (in which case the 301callback calls EV::break or the flags are nonzero (in which case the
302return value is true) or when there are no active watchers which reference 302return value is true) or when there are no active watchers which reference
303the loop (keepalive is true), in which case the return value will be 303the loop (keepalive is true), in which case the return value will be
304false. The returnv alue can generally be interpreted as "if true, there is 304false. The return value can generally be interpreted as "if true, there is
305more work left to do". 305more work left to do".
306 306
307The $flags argument can be one of the following: 307The $flags argument can be one of the following:
308 308
309 0 as above 309 0 as above
313=item EV::break [$how] 313=item EV::break [$how]
314 314
315=item $loop->break ([$how]) 315=item $loop->break ([$how])
316 316
317When called with no arguments or an argument of EV::BREAK_ONE, makes the 317When called with no arguments or an argument of EV::BREAK_ONE, makes the
318innermost call to EV::loop return. 318innermost call to EV::run return.
319 319
320When called with an argument of EV::BREAK_ALL, all calls to EV::loop will 320When called with an argument of EV::BREAK_ALL, all calls to EV::run will
321return as fast as possible. 321return as fast as possible.
322 322
323When called with an argument of EV::BREAK_CANCEL, any pending break will 323When called with an argument of EV::BREAK_CANCEL, any pending break will
324be cancelled. 324be cancelled.
325 325
342| EV::WRITE>, indicating the type of I/O event you want to wait for. If 342| EV::WRITE>, indicating the type of I/O event you want to wait for. If
343you do not want to wait for some I/O event, specify C<undef> for 343you do not want to wait for some I/O event, specify C<undef> for
344C<$fh_or_undef> and C<0> for C<$events>). 344C<$fh_or_undef> and C<0> for C<$events>).
345 345
346If timeout is C<undef> or negative, then there will be no 346If timeout is C<undef> or negative, then there will be no
347timeout. Otherwise a EV::timer with this value will be started. 347timeout. Otherwise an C<EV::timer> with this value will be started.
348 348
349When an error occurs or either the timeout or I/O watcher triggers, then 349When an error occurs or either the timeout or I/O watcher triggers, then
350the callback will be called with the received event set (in general 350the callback will be called with the received event set (in general
351you can expect it to be a combination of C<EV::ERROR>, C<EV::READ>, 351you can expect it to be a combination of C<EV::ERROR>, C<EV::READ>,
352C<EV::WRITE> and C<EV::TIMER>). 352C<EV::WRITE> and C<EV::TIMER>).
370 370
371=item EV::feed_signal $signal 371=item EV::feed_signal $signal
372 372
373Feed a signal event into EV - unlike C<EV::feed_signal_event>, this works 373Feed a signal event into EV - unlike C<EV::feed_signal_event>, this works
374regardless of which loop has registered the signal, and is mainly useful 374regardless of which loop has registered the signal, and is mainly useful
375fro custom signal implementations. 375for custom signal implementations.
376 376
377=item EV::set_io_collect_interval $time 377=item EV::set_io_collect_interval $time
378 378
379=item $loop->set_io_collect_interval ($time) 379=item $loop->set_io_collect_interval ($time)
380 380
507returns its C<$revents> bitset (as if its callback was invoked). If the 507returns its C<$revents> bitset (as if its callback was invoked). If the
508watcher isn't pending it does nothing and returns C<0>. 508watcher isn't pending it does nothing and returns C<0>.
509 509
510=item $previous_state = $w->keepalive ($bool) 510=item $previous_state = $w->keepalive ($bool)
511 511
512Normally, C<EV::loop> will return when there are no active watchers 512Normally, C<EV::run> will return when there are no active watchers
513(which is a "deadlock" because no progress can be made anymore). This is 513(which is a "deadlock" because no progress can be made anymore). This is
514convenient because it allows you to start your watchers (and your jobs), 514convenient because it allows you to start your watchers (and your jobs),
515call C<EV::loop> once and when it returns you know that all your jobs are 515call C<EV::run> once and when it returns you know that all your jobs are
516finished (or they forgot to register some watchers for their task :). 516finished (or they forgot to register some watchers for their task :).
517 517
518Sometimes, however, this gets in your way, for example when the module 518Sometimes, however, this gets in your way, for example when the module
519that calls C<EV::loop> (usually the main program) is not the same module 519that calls C<EV::run> (usually the main program) is not the same module
520as a long-living watcher (for example a DNS client module written by 520as a long-living watcher (for example a DNS client module written by
521somebody else even). Then you might want any outstanding requests to be 521somebody else even). Then you might want any outstanding requests to be
522handled, but you would not want to keep C<EV::loop> from returning just 522handled, but you would not want to keep C<EV::run> from returning just
523because you happen to have this long-running UDP port watcher. 523because you happen to have this long-running UDP port watcher.
524 524
525In this case you can clear the keepalive status, which means that even 525In this case you can clear the keepalive status, which means that even
526though your watcher is active, it won't keep C<EV::loop> from returning. 526though your watcher is active, it won't keep C<EV::run> from returning.
527 527
528The initial value for keepalive is true (enabled), and you can change it 528The initial value for keepalive is true (enabled), and you can change it
529any time. 529any time.
530 530
531Example: Register an I/O watcher for some UDP socket but do not keep the 531Example: Register an I/O watcher for some UDP socket but do not keep the
598 598
599=item $w = $loop->timer ($after, $repeat, $callback) 599=item $w = $loop->timer ($after, $repeat, $callback)
600 600
601=item $w = $loop->timer_ns ($after, $repeat, $callback) 601=item $w = $loop->timer_ns ($after, $repeat, $callback)
602 602
603Calls the callback after C<$after> seconds (which may be fractional). If 603Calls the callback after C<$after> seconds (which may be fractional or
604C<$repeat> is non-zero, the timer will be restarted (with the $repeat 604negative). If C<$repeat> is non-zero, the timer will be restarted (with
605value as $after) after the callback returns. 605the $repeat value as $after) after the callback returns.
606 606
607This means that the callback would be called roughly after C<$after> 607This means that the callback would be called roughly after C<$after>
608seconds, and then every C<$repeat> seconds. The timer does his best not 608seconds, and then every C<$repeat> seconds. The timer does his best not
609to drift, but it will not invoke the timer more often then once per event 609to drift, but it will not invoke the timer more often then once per event
610loop iteration, and might drift in other cases. If that isn't acceptable, 610loop iteration, and might drift in other cases. If that isn't acceptable,
645value. 645value.
646 646
647=item $after = $w->remaining 647=item $after = $w->remaining
648 648
649Calculates and returns the remaining time till the timer will fire. 649Calculates and returns the remaining time till the timer will fire.
650
651=item $repeat = $w->repeat
652
653=item $old_repeat = $w->repeat ($new_repeat)
654
655Returns the current value of the repeat attribute and optionally sets a
656new one. Setting the new one will not restart the watcher - if the watcher
657is active, the new repeat value is used whenever it expires next.
650 658
651=back 659=back
652 660
653 661
654=head3 PERIODIC WATCHERS - to cron or not to cron? 662=head3 PERIODIC WATCHERS - to cron or not to cron?
682surpasses this time. 690surpasses this time.
683 691
684=item * repeating interval timer ($interval > 0, $reschedule_cb = 0) 692=item * repeating interval timer ($interval > 0, $reschedule_cb = 0)
685 693
686In this mode the watcher will always be scheduled to time out at the 694In this mode the watcher will always be scheduled to time out at the
687next C<$at + N * $interval> time (for some integer N) and then repeat, 695next C<$at + N * $interval> time (for the lowest integer N) and then repeat,
688regardless of any time jumps. 696regardless of any time jumps. Note that, since C<N> can be negative, the
697first trigger can happen before C<$at>.
689 698
690This can be used to create timers that do not drift with respect to system 699This can be used to create timers that do not drift with respect to system
691time: 700time:
692 701
693 my $hourly = EV::periodic 0, 3600, 0, sub { print "once/hour\n" }; 702 my $hourly = EV::periodic 0, 3600, 0, sub { print "once/hour\n" };
709time as second argument. 718time as second argument.
710 719
711I<This callback MUST NOT stop or destroy this or any other periodic 720I<This callback MUST NOT stop or destroy this or any other periodic
712watcher, ever, and MUST NOT call any event loop functions or methods>. If 721watcher, ever, and MUST NOT call any event loop functions or methods>. If
713you need to stop it, return 1e30 and stop it afterwards. You may create 722you need to stop it, return 1e30 and stop it afterwards. You may create
714and start a C<EV::prepare> watcher for this task. 723and start an C<EV::prepare> watcher for this task.
715 724
716It must return the next time to trigger, based on the passed time value 725It must return the next time to trigger, based on the passed time value
717(that is, the lowest time value larger than or equal to to the second 726(that is, the lowest time value larger than or equal to to the second
718argument). It will usually be called just before the callback will be 727argument). It will usually be called just before the callback will be
719triggered, but might be called at other times, too. 728triggered, but might be called at other times, too.
720 729
721This can be used to create very complex timers, such as a timer that 730This can be used to create very complex timers, such as a timer that
722triggers on each midnight, local time (actually 24 hours after the last 731triggers on each midnight, local time (actually one day after the last
723midnight, to keep the example simple. If you know a way to do it correctly 732midnight, to keep the example simple):
724in about the same space (without requiring elaborate modules), drop me a
725note :):
726 733
727 my $daily = EV::periodic 0, 0, sub { 734 my $daily = EV::periodic 0, 0, sub {
728 my ($w, $now) = @_; 735 my ($w, $now) = @_;
729 736
730 use Time::Local (); 737 use Time::Local ();
731 my (undef, undef, undef, $d, $m, $y) = localtime $now; 738 my (undef, undef, undef, $d, $m, $y) = localtime $now;
732 86400 + Time::Local::timelocal 0, 0, 0, $d, $m, $y 739 Time::Local::timelocal_nocheck 0, 0, 0, $d + 1, $m, $y
733 }, sub { 740 }, sub {
734 print "it's midnight or likely shortly after, now\n"; 741 print "it's midnight or likely shortly after, now\n";
735 }; 742 };
736 743
737=back 744=back
748Simply stops and starts the watcher again. 755Simply stops and starts the watcher again.
749 756
750=item $time = $w->at 757=item $time = $w->at
751 758
752Return the time that the watcher is expected to trigger next. 759Return the time that the watcher is expected to trigger next.
760
761=item $offset = $w->offset
762
763=item $old_offset = $w->offset ($new_offset)
764
765Returns the current value of the offset attribute and optionally sets a
766new one. Setting the new one will not restart the watcher - if the watcher
767is active, the new offset value is used whenever it expires next.
768
769=item $interval = $w->interval
770
771=item $old_interval = $w->interval ($new_interval)
772
773See above, for the interval attribute.
774
775=item $reschedule_cb = $w->reschedule_cb
776
777=item $old_reschedule_cb = $w->reschedule_cb ($new_reschedule_cb)
778
779See above, for the reschedule callback.
753 780
754=back 781=back
755 782
756 783
757=head3 SIGNAL WATCHERS - signal me when a signal gets signalled! 784=head3 SIGNAL WATCHERS - signal me when a signal gets signalled!
845 872
846=item $pid = $w->rpid 873=item $pid = $w->rpid
847 874
848Return the pid of the awaited child (useful when you have installed a 875Return the pid of the awaited child (useful when you have installed a
849watcher for all pids). 876watcher for all pids).
877
878=item EV::Child::reinit [EXPERIMENTAL]
879
880Internally, libev installs a signal handler for C<SIGCHLD>. Unfortunately,
881a lot of Perl code does soemthing like C<< local $SIG{CHLD} >>, which,
882unfortunately, is broken and will not restore the signal handler.
883
884If this has happened, you can call this function to stop/rrestart the
885internal libev watcher, which will reset the signal handler.
886
887Note that this is an experimental function, whose interface might change.
850 888
851=back 889=back
852 890
853 891
854=head3 STAT WATCHERS - did the file attributes just change? 892=head3 STAT WATCHERS - did the file attributes just change?

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines