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

Comparing EV/EV.pm (file contents):
Revision 1.10 by root, Mon Oct 29 07:24:37 2007 UTC vs.
Revision 1.11 by root, Mon Oct 29 07:56:03 2007 UTC

2 2
3EV - perl interface to libevent, monkey.org/~provos/libevent/ 3EV - perl interface to libevent, monkey.org/~provos/libevent/
4 4
5=head1 SYNOPSIS 5=head1 SYNOPSIS
6 6
7 use EV; 7 use EV;
8 8
9 # TIMER 9 # TIMER
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, 1, sub { 15 my $w = EV::timer 2, 1, sub {
16 warn "is called roughly every 2s (repeat = 1)"; 16 warn "is called roughly every 2s (repeat = 1)";
17 }; 17 };
18 18
19 undef $w; # destroy event watcher again 19 undef $w; # destroy event watcher again
20 20
21 # IO
22
23 my $w = EV::timer_abs 0, 60, sub { 21 my $w = EV::timer_abs 0, 60, sub {
24 warn "is called every minute, on the minute, exactly"; 22 warn "is called every minute, on the minute, exactly";
25 }; 23 };
26 24
25 # IO
26
27 my $w = EV::io \*STDIN, EV::READ | EV::PERSIST, sub { 27 my $w = EV::io \*STDIN, EV::READ | EV::PERSIST, sub {
28 my ($w, $events) = @_; # all callbacks get the watcher object and event mask 28 my ($w, $events) = @_; # all callbacks get the watcher object and event mask
29 if ($events & EV::TIMEOUT) { 29 if ($events & EV::TIMEOUT) {
30 warn "nothing received on stdin for 10 seconds, retrying"; 30 warn "nothing received on stdin for 10 seconds, retrying";
31 } else { 31 } else {
32 warn "stdin is readable, you entered: ", <STDIN>; 32 warn "stdin is readable, you entered: ", <STDIN>;
33 } 33 }
34 }; 34 };
35 $w->timeout (10); 35 $w->timeout (10);
36 36
37 my $w = EV::timed_io \*STDIN, EV::READ, 30, sub {
38 my ($w, $events) = @_;
39 if ($_[1] & EV::TIMEOUT) {
40 warn "nothing entered within 30 seconds, bye bye.\n";
41 $w->stop;
42 } else {
43 my $line = <STDIN>;
44 warn "you entered something, you again have 30 seconds.\n";
45 }
46 };
47
48 # SIGNALS
49
50 my $w = EV::signal 'QUIT', sub {
51 warn "sigquit received\n";
52 };
53
54 my $w = EV::signal 3, sub {
55 warn "sigquit received (this is GNU/Linux, right?)\n";
56 };
57
37 # MAINLOOP 58 # MAINLOOP
38 EV::dispatch; # loop as long as watchers are active 59 EV::dispatch; # loop as long as watchers are active
39 EV::loop; # the same thing 60 EV::loop; # the same thing
40 EV::loop EV::LOOP_ONCE; 61 EV::loop EV::LOOP_ONCE; # block until some events could be handles
41 EV::loop EV::LOOP_ONSHOT; 62 EV::loop EV::LOOP_NONBLOCK; # check and handle some events, but do not wait
42 63
43=head1 DESCRIPTION 64=head1 DESCRIPTION
44 65
45This module provides an interface to libevent 66This module provides an interface to libevent
46(L<http://monkey.org/~provos/libevent/>). You probably should acquaint 67(L<http://monkey.org/~provos/libevent/>). You probably should acquaint
178C<timer_abs> will try to tun the callback at the next possible time where 199C<timer_abs> will try to tun the callback at the next possible time where
179C<$time = $at (mod $interval)>, regardless of any time jumps. 200C<$time = $at (mod $interval)>, regardless of any time jumps.
180 201
181The C<timer_abs_ns> variant doesn't add/start the newly created watcher. 202The C<timer_abs_ns> variant doesn't add/start the newly created watcher.
182 203
183=item my $w = EV::signal $signum, $callback 204=item my $w = EV::signal $signal, $callback
184 205
185=item my $w = EV::signal_ns $signum, $callback 206=item my $w = EV::signal_ns $signal, $callback
186 207
187Call the callback when signal $signum is received. 208Call the callback when $signal is received (the signal can be specified
209by number or by name, just as with kill or %SIG). Signal watchers are
210persistent no natter what.
211
212EV will grab the signal for the process (the kernel only allows one
213component to receive signals) when you start a signal watcher, and
214removes it again when you stop it. Pelr does the same when you add/remove
215callbacks to %SIG, so watch out.
216
217Unfortunately, only one handler can be registered per signal. Screw
218libevent.
188 219
189The C<signal_ns> variant doesn't add/start the newly created watcher. 220The C<signal_ns> variant doesn't add/start the newly created watcher.
190 221
191=back 222=back
192 223

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines