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

Comparing EV/EV.pm (file contents):
Revision 1.53 by root, Sat Nov 24 16:57:30 2007 UTC vs.
Revision 1.60 by root, Mon Dec 3 13:41:24 2007 UTC

38 # CHILD/PID STATUS CHANGES 38 # CHILD/PID STATUS CHANGES
39 39
40 my $w = EV::child 666, sub { 40 my $w = EV::child 666, sub {
41 my ($w, $revents) = @_; 41 my ($w, $revents) = @_;
42 my $status = $w->rstatus; 42 my $status = $w->rstatus;
43 };
44
45 # STAT CHANGES
46 my $w = EV::stat "/etc/passwd", 10, sub {
47 my ($w, $revents) = @_;
48 warn $w->path, " has changed somehow.\n";
43 }; 49 };
44 50
45 # MAINLOOP 51 # MAINLOOP
46 EV::loop; # loop until EV::unloop is called or all watchers stop 52 EV::loop; # loop until EV::unloop is called or all watchers stop
47 EV::loop EV::LOOP_ONESHOT; # block until at least one event could be handled 53 EV::loop EV::LOOP_ONESHOT; # block until at least one event could be handled
61package EV; 67package EV;
62 68
63use strict; 69use strict;
64 70
65BEGIN { 71BEGIN {
66 our $VERSION = '1.3'; 72 our $VERSION = '1.6';
67 use XSLoader; 73 use XSLoader;
68 XSLoader::load "EV", $VERSION; 74 XSLoader::load "EV", $VERSION;
69} 75}
70 76
71@EV::IO::ISA = 77@EV::IO::ISA =
72@EV::Timer::ISA = 78@EV::Timer::ISA =
73@EV::Periodic::ISA = 79@EV::Periodic::ISA =
74@EV::Signal::ISA = 80@EV::Signal::ISA =
81@EV::Child::ISA =
82@EV::Stat::ISA =
75@EV::Idle::ISA = 83@EV::Idle::ISA =
76@EV::Prepare::ISA = 84@EV::Prepare::ISA =
77@EV::Check::ISA = 85@EV::Check::ISA =
78@EV::Child::ISA = "EV::Watcher"; 86@EV::Embed::ISA =
87@EV::Fork::ISA =
88 "EV::Watcher";
79 89
80=head1 BASIC INTERFACE 90=head1 BASIC INTERFACE
81 91
82=over 4 92=over 4
83 93
120When called with no arguments or an argument of EV::UNLOOP_ONE, makes the 130When called with no arguments or an argument of EV::UNLOOP_ONE, makes the
121innermost call to EV::loop return. 131innermost call to EV::loop return.
122 132
123When called with an argument of EV::UNLOOP_ALL, all calls to EV::loop will return as 133When called with an argument of EV::UNLOOP_ALL, all calls to EV::loop will return as
124fast as possible. 134fast as possible.
135
136=item $count = EV::loop_count
137
138Return the number of times the event loop has polled for new
139events. Sometiems useful as a generation counter.
125 140
126=item EV::once $fh_or_undef, $events, $timeout, $cb->($revents) 141=item EV::once $fh_or_undef, $events, $timeout, $cb->($revents)
127 142
128This function rolls together an I/O and a timer watcher for a single 143This function rolls together an I/O and a timer watcher for a single
129one-shot event without the need for managing a watcher object. 144one-shot event without the need for managing a watcher object.
146of them triggers, then they will be stopped and freed, and the callback 161of them triggers, then they will be stopped and freed, and the callback
147invoked. 162invoked.
148 163
149=back 164=back
150 165
151=head2 WATCHER 166=head2 WATCHER OBJECTS
152 167
153A watcher is an object that gets created to record your interest in some 168A watcher is an object that gets created to record your interest in some
154event. For instance, if you want to wait for STDIN to become readable, you 169event. For instance, if you want to wait for STDIN to become readable, you
155would create an EV::io watcher for that: 170would create an EV::io watcher for that:
156 171
181 196
182Also, all methods changing some aspect of a watcher (->set, ->priority, 197Also, 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, 198->fh and so on) automatically stop and start it again if it is active,
184which means pending events get lost. 199which means pending events get lost.
185 200
186=head2 WATCHER TYPES 201=head2 COMMON WATCHER METHODS
187 202
188Now lets move to the existing watcher types and asociated methods. 203This section lists methods common to all watchers.
189
190The following methods are available for all watchers. Then followes a
191description of each watcher constructor (EV::io, EV::timer, EV::periodic,
192EV::signal, EV::child, EV::idle, EV::prepare and EV::check), followed by
193any type-specific methods (if any).
194 204
195=over 4 205=over 4
196 206
197=item $w->start 207=item $w->start
198 208
274 284
275 my $udp_socket = ... 285 my $udp_socket = ...
276 my $udp_watcher = EV::io $udp_socket, EV::READ, sub { ... }; 286 my $udp_watcher = EV::io $udp_socket, EV::READ, sub { ... };
277 $udp_watcher->keepalive (0); 287 $udp_watcher->keepalive (0);
278 288
289=back
290
291
292=head2 WATCHER TYPES
293
294Each of the following subsections describes a single watcher type.
295
296=head3 IO WATCHERS - is this file descriptor readable or writable?
297
298=over 4
299
279=item $w = EV::io $fileno_or_fh, $eventmask, $callback 300=item $w = EV::io $fileno_or_fh, $eventmask, $callback
280 301
281=item $w = EV::io_ns $fileno_or_fh, $eventmask, $callback 302=item $w = EV::io_ns $fileno_or_fh, $eventmask, $callback
282 303
283As long as the returned watcher object is alive, call the C<$callback> 304As long as the returned watcher object is alive, call the C<$callback>
284when the events specified in C<$eventmask>. 305when at least one of events specified in C<$eventmask> occurs.
285 306
286The $eventmask can be one or more of these constants ORed together: 307The $eventmask can be one or more of these constants ORed together:
287 308
288 EV::READ wait until read() wouldn't block anymore 309 EV::READ wait until read() wouldn't block anymore
289 EV::WRITE wait until write() wouldn't block anymore 310 EV::WRITE wait until write() wouldn't block anymore
305 326
306=item $old_eventmask = $w->events ($new_eventmask) 327=item $old_eventmask = $w->events ($new_eventmask)
307 328
308Returns the previously set event mask and optionally set a new one. 329Returns the previously set event mask and optionally set a new one.
309 330
331=back
332
333
334=head3 TIMER WATCHERS - relative and optionally repeating timeouts
335
336=over 4
310 337
311=item $w = EV::timer $after, $repeat, $callback 338=item $w = EV::timer $after, $repeat, $callback
312 339
313=item $w = EV::timer_ns $after, $repeat, $callback 340=item $w = EV::timer_ns $after, $repeat, $callback
314 341
328 355
329The C<timer_ns> variant doesn't start (activate) the newly created watcher. 356The C<timer_ns> variant doesn't start (activate) the newly created watcher.
330 357
331=item $w->set ($after, $repeat) 358=item $w->set ($after, $repeat)
332 359
333Reconfigures the watcher, see the constructor above for details. Can be at 360Reconfigures the watcher, see the constructor above for details. Can be called at
334any time. 361any time.
335 362
336=item $w->again 363=item $w->again
337 364
338Similar to the C<start> method, but has special semantics for repeating timers: 365Similar to the C<start> method, but has special semantics for repeating timers:
349This behaviour is useful when you have a timeout for some IO 376This behaviour is useful when you have a timeout for some IO
350operation. You create a timer object with the same value for C<$after> and 377operation. You create a timer object with the same value for C<$after> and
351C<$repeat>, and then, in the read/write watcher, run the C<again> method 378C<$repeat>, and then, in the read/write watcher, run the C<again> method
352on the timeout. 379on the timeout.
353 380
381=back
382
383
384=head3 PERIODIC WATCHERS - to cron or not to cron?
385
386=over 4
354 387
355=item $w = EV::periodic $at, $interval, $reschedule_cb, $callback 388=item $w = EV::periodic $at, $interval, $reschedule_cb, $callback
356 389
357=item $w = EV::periodic_ns $at, $interval, $reschedule_cb, $callback 390=item $w = EV::periodic_ns $at, $interval, $reschedule_cb, $callback
358 391
430 463
431The C<periodic_ns> variant doesn't start (activate) the newly created watcher. 464The C<periodic_ns> variant doesn't start (activate) the newly created watcher.
432 465
433=item $w->set ($at, $interval, $reschedule_cb) 466=item $w->set ($at, $interval, $reschedule_cb)
434 467
435Reconfigures the watcher, see the constructor above for details. Can be at 468Reconfigures the watcher, see the constructor above for details. Can be called at
436any time. 469any time.
437 470
438=item $w->again 471=item $w->again
439 472
440Simply stops and starts the watcher again. 473Simply stops and starts the watcher again.
441 474
475=back
476
477
478=head3 SIGNAL WATCHERS - signal me when a signal gets signalled!
479
480=over 4
442 481
443=item $w = EV::signal $signal, $callback 482=item $w = EV::signal $signal, $callback
444 483
445=item $w = EV::signal_ns $signal, $callback 484=item $w = EV::signal_ns $signal, $callback
446 485
447Call the callback when $signal is received (the signal can be specified 486Call the callback when $signal is received (the signal can be specified by
448by number or by name, just as with kill or %SIG). 487number or by name, just as with C<kill> or C<%SIG>).
449 488
450EV will grab the signal for the process (the kernel only allows one 489EV will grab the signal for the process (the kernel only allows one
451component to receive a signal at a time) when you start a signal watcher, 490component to receive a signal at a time) when you start a signal watcher,
452and removes it again when you stop it. Perl does the same when you 491and removes it again when you stop it. Perl does the same when you
453add/remove callbacks to %SIG, so watch out. 492add/remove callbacks to C<%SIG>, so watch out.
454 493
455You can have as many signal watchers per signal as you want. 494You can have as many signal watchers per signal as you want.
456 495
457The C<signal_ns> variant doesn't start (activate) the newly created watcher. 496The C<signal_ns> variant doesn't start (activate) the newly created watcher.
458 497
459=item $w->set ($signal) 498=item $w->set ($signal)
460 499
461Reconfigures the watcher, see the constructor above for details. Can be at 500Reconfigures the watcher, see the constructor above for details. Can be
462any time. 501called at any time.
463 502
464=item $current_signum = $w->signal 503=item $current_signum = $w->signal
465 504
466=item $old_signum = $w->signal ($new_signal) 505=item $old_signum = $w->signal ($new_signal)
467 506
468Returns the previously set signal (always as a number not name) and 507Returns the previously set signal (always as a number not name) and
469optionally set a new one. 508optionally set a new one.
470 509
510=back
511
512
513=head3 CHILD WATCHERS - watch out for process status changes
514
515=over 4
471 516
472=item $w = EV::child $pid, $callback 517=item $w = EV::child $pid, $callback
473 518
474=item $w = EV::child_ns $pid, $callback 519=item $w = EV::child_ns $pid, $callback
475 520
476Call the callback when a status change for pid C<$pid> (or any pid 521Call the callback when a status change for pid C<$pid> (or any pid if
477if C<$pid> is 0) has been received. More precisely: when the process 522C<$pid> is 0) has been received. More precisely: when the process receives
478receives a SIGCHLD, EV will fetch the outstanding exit/wait status for all 523a C<SIGCHLD>, EV will fetch the outstanding exit/wait status for all
479changed/zombie children and call the callback. 524changed/zombie children and call the callback.
480 525
481You can access both status and pid by using the C<rstatus> and C<rpid> 526It is valid (and fully supported) to install a child watcher after a child
482methods on the watcher object. 527has exited but before the event loop has started its next iteration (for
528example, first you C<fork>, then the new child process might exit, and
529only then do you install a child watcher in the parent for the new pid).
483 530
531You can access both exit (or tracing) status and pid by using the
532C<rstatus> and C<rpid> methods on the watcher object.
533
484You can have as many pid watchers per pid as you want. 534You can have as many pid watchers per pid as you want, they will all be
535called.
485 536
486The C<child_ns> variant doesn't start (activate) the newly created watcher. 537The C<child_ns> variant doesn't start (activate) the newly created watcher.
487 538
488=item $w->set ($pid) 539=item $w->set ($pid)
489 540
490Reconfigures the watcher, see the constructor above for details. Can be at 541Reconfigures the watcher, see the constructor above for details. Can be called at
491any time. 542any time.
492 543
493=item $current_pid = $w->pid 544=item $current_pid = $w->pid
494 545
495=item $old_pid = $w->pid ($new_pid) 546=item $old_pid = $w->pid ($new_pid)
504=item $pid = $w->rpid 555=item $pid = $w->rpid
505 556
506Return the pid of the awaited child (useful when you have installed a 557Return the pid of the awaited child (useful when you have installed a
507watcher for all pids). 558watcher for all pids).
508 559
560=back
561
562
563=head3 STAT WATCHERS - did the file attributes just change?
564
565=over 4
566
567=item $w = EV::stat $path, $interval, $callback
568
569=item $w = EV::stat_ns $path, $interval, $callback
570
571Call the callback when a file status change has been detected on
572C<$path>. The C<$path> does not need to exist, changing from "path exists"
573to "path does not exist" is a status change like any other.
574
575The C<$interval> is a recommended polling interval for systems where
576OS-supported change notifications don't exist or are not supported. If
577you use C<0> then an unspecified default is used (which is highly
578recommended!), which is to be expected to be around five seconds usually.
579
580This watcher type is not meant for massive numbers of stat watchers,
581as even with OS-supported change notifications, this can be
582resource-intensive.
583
584The C<stat_ns> variant doesn't start (activate) the newly created watcher.
585
586=item ... = $w->stat
587
588This call is very similar to the perl C<stat> built-in: It stats (using
589C<lstat>) the path specified in the watcher and sets perls stat cache (as
590well as EV's idea of the current stat values) to the values found.
591
592In scalar context, a boolean is return indicating success or failure of
593the stat. In list context, the same 13-value list as with stat is returned
594(except that the blksize and blocks fields are not reliable).
595
596In the case of an error, errno is set to C<ENOENT> (regardless of the
597actual error value) and the C<nlink> value is forced to zero (if the stat
598was successful then nlink is guaranteed to be non-zero).
599
600See also the next two entries for more info.
601
602=item ... = $w->attr
603
604Just like C<< $w->stat >>, but without the initial stat'ing: this returns
605the values most recently detected by EV. See the next entry for more info.
606
607=item ... = $w->prev
608
609Just like C<< $w->stat >>, but without the initial stat'ing: this returns
610the previous set of values, before the change.
611
612That is, when the watcher callback is invoked, C<< $w->prev >> will be set
613to the values found I<before> a change was detected, while C<< $w->attr >>
614returns the values found leading to the change detection. The difference (if any)
615between C<prev> and C<attr> is what triggered the callback.
616
617If you did something to the filesystem object and do not want to trigger
618yet another change, you can call C<stat> to update EV's idea of what the
619current attributes are.
620
621=item $w->set ($path, $interval)
622
623Reconfigures the watcher, see the constructor above for details. Can be
624called at any time.
625
626=item $current_path = $w->path
627
628=item $old_path = $w->path ($new_path)
629
630Returns the previously set path and optionally set a new one.
631
632=item $current_interval = $w->interval
633
634=item $old_interval = $w->interval ($new_interval)
635
636Returns the previously set interval and optionally set a new one. Can be
637used to query the actual interval used.
638
639=back
640
641
642=head3 IDLE WATCHERS - when you've got nothing better to do...
643
644=over 4
509 645
510=item $w = EV::idle $callback 646=item $w = EV::idle $callback
511 647
512=item $w = EV::idle_ns $callback 648=item $w = EV::idle_ns $callback
513 649
517The process will not block as long as any idle watchers are active, and 653The process will not block as long as any idle watchers are active, and
518they will be called repeatedly until stopped. 654they will be called repeatedly until stopped.
519 655
520The C<idle_ns> variant doesn't start (activate) the newly created watcher. 656The C<idle_ns> variant doesn't start (activate) the newly created watcher.
521 657
658=back
659
660
661=head3 PREPARE WATCHERS - customise your event loop!
662
663=over 4
522 664
523=item $w = EV::prepare $callback 665=item $w = EV::prepare $callback
524 666
525=item $w = EV::prepare_ns $callback 667=item $w = EV::prepare_ns $callback
526 668
529 671
530See the EV::check watcher, below, for explanations and an example. 672See the EV::check watcher, below, for explanations and an example.
531 673
532The C<prepare_ns> variant doesn't start (activate) the newly created watcher. 674The C<prepare_ns> variant doesn't start (activate) the newly created watcher.
533 675
676=back
677
678
679=head3 CHECK WATCHERS - customise your event loop even more!
680
681=over 4
534 682
535=item $w = EV::check $callback 683=item $w = EV::check $callback
536 684
537=item $w = EV::check_ns $callback 685=item $w = EV::check_ns $callback
538 686
583first). 731first).
584 732
585The C<check_ns> variant doesn't start (activate) the newly created watcher. 733The C<check_ns> variant doesn't start (activate) the newly created watcher.
586 734
587=back 735=back
736
737
738=head3 FORK WATCHERS - the audacity to resume the event loop after a fork
739
740Fork watchers are called when a C<fork ()> was detected. The invocation
741is done before the event loop blocks next and before C<check> watchers
742are being called, and only in the child after the fork.
743
744=over 4
745
746=item $w = EV::fork $callback
747
748=item $w = EV::fork_ns $callback
749
750Call the callback before the event loop is resumed in the child process
751after a fork.
752
753The C<fork_ns> variant doesn't start (activate) the newly created watcher.
754
755=back
756
588 757
589=head1 THREADS 758=head1 THREADS
590 759
591Threads are not supported by this module in any way. Perl pseudo-threads 760Threads are not supported by this module in any way. Perl pseudo-threads
592is evil stuff and must die. As soon as Perl gains real threads I will work 761is evil stuff and must die. As soon as Perl gains real threads I will work
620 789
6211; 7901;
622 791
623=head1 SEE ALSO 792=head1 SEE ALSO
624 793
625 L<EV::DNS>. 794L<EV::ADNS> (asynchronous dns), L<Glib::EV> (makes Glib/Gtk2 use EV as
795event loop), L<Coro::EV> (efficient coroutines with EV).
626 796
627=head1 AUTHOR 797=head1 AUTHOR
628 798
629 Marc Lehmann <schmorp@schmorp.de> 799 Marc Lehmann <schmorp@schmorp.de>
630 http://home.schmorp.de/ 800 http://home.schmorp.de/

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines