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

Comparing EV/EV.pm (file contents):
Revision 1.154 by root, Fri Dec 21 07:06:51 2018 UTC vs.
Revision 1.167 by root, Thu Oct 19 18:02:42 2023 UTC

119package EV; 119package EV;
120 120
121use common::sense; 121use common::sense;
122 122
123BEGIN { 123BEGIN {
124 our $VERSION = 4.25; 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
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
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
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?
748 756
749=item $time = $w->at 757=item $time = $w->at
750 758
751Return the time that the watcher is expected to trigger next. 759Return the time that the watcher is expected to trigger next.
752 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.
780
753=back 781=back
754 782
755 783
756=head3 SIGNAL WATCHERS - signal me when a signal gets signalled! 784=head3 SIGNAL WATCHERS - signal me when a signal gets signalled!
757 785
844 872
845=item $pid = $w->rpid 873=item $pid = $w->rpid
846 874
847Return 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
848watcher 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.
849 888
850=back 889=back
851 890
852 891
853=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