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

Comparing AnyEvent/lib/AE.pm (file contents):
Revision 1.4 by root, Sat Dec 5 02:58:30 2009 UTC vs.
Revision 1.8 by root, Tue Aug 31 00:59:55 2010 UTC

4 4
5=head1 SYNOPSIS 5=head1 SYNOPSIS
6 6
7 use AnyEvent; # not AE 7 use AnyEvent; # not AE
8 8
9 # file handle or descriptor readable
10 my $w = AE::io $fh, 0, sub { ... };
11
12 # one-shot or repeating timers
13 my $w = AE::timer $seconds, 0, sub { ... }; # once
14 my $w = AE::timer $seconds, $interval, sub { ... }; # repeated
15
16 print AE::now; # prints current event loop time
17 print AE::time; # think Time::HiRes::time or simply CORE::time.
18
19 # POSIX signal
20 my $w = AE::signal TERM => sub { ... };
21
22 # child process exit
23 my $w = AE::child $pid, sub {
24 my ($pid, $status) = @_;
25 ...
26 };
27
28 # called when event loop idle (if applicable)
29 my $w = AE::idle { ... };
30
31 my $w = AE::cv; # stores whether a condition was flagged
32 $w->send; # wake up current and all future recv's
33 $w->recv; # enters "main loop" till $condvar gets ->send
34 # use a condvar in callback mode:
35 $w->cb (sub { $_[0]->recv });
36
37
9=head1 DESCRIPTION 38=head1 DESCRIPTION
10 39
11This module documents the new simpler AnyEvent API. 40This module documents the new simpler AnyEvent API.
12 41
13The rationale for the new API is that experience with L<EV> shows that 42The rationale for the new API is that experience with L<EV> shows that
14this API actually "works", despite it's lack of extensibility, leading to 43this API actually "works", despite its lack of extensibility, leading to
15a shorter, easier and faster API. 44a shorter, easier and faster API.
16 45
17The main difference to AnyEvent is that instead of method calls, function 46The main differences from AnyEvent is that function calls are used
18calls are used, and that no named arguments are used. 47instead of method calls, and that no named arguments are used.
19 48
20This makes calls to watcher creation functions really short, which can 49This makes calls to watcher creation functions really short, which can
21make a program more readable, despite the lack of named parameters. 50make a program more readable despite the lack of named parameters.
22Function calls also allow more static type checking than method calls, so 51Function calls also allow more static type checking than method calls, so
23many mistakes are caught at compiletime with this API. 52many mistakes are caught at compile-time with this API.
24 53
25Also, some backends (Perl and EV) are so fast that the method call 54Also, some backends (Perl and EV) are so fast that the method call
26overhead is very noticable (with EV it increases the time five- to 55overhead is very noticeable (with EV it increases the execution time five-
27six-fold, with Perl the method call overhead is about a factor of two). 56to six-fold, with Perl the method call overhead is about a factor of two).
28 57
29At the moment, there will be no checking (L<AnyEvent::Strict> does not 58At the moment, there is no checking (L<AnyEvent::Strict> does not
30affect his API), so the L<AnyEvent> API has a definite advantage here 59affect this API), so the L<AnyEvent> API still has a definite advantage
31still. 60here.
32 61
33Note that the C<AE> API is an alternative to, not the future version of, 62Note that the C<AE> API is an alternative to, not the future version of,
34the AnyEvent API. Both APIs can be used interchangably and and there are 63the AnyEvent API. Both APIs can be used interchangeably and and there are
35no plans to "switch", so if in doubt, use the L<AnyEvent> API. 64no plans to "switch", so if in doubt, feel free to use the L<AnyEvent>
65API in new code.
36 66
37As the AE API is complementary, not everything in the AnyEvent API is 67As the AE API is complementary, not everything in the AnyEvent API is
38available, so you still need to use AnyEvent for the finer stuff. Also, 68available, and you still need to use AnyEvent for the finer stuff. Also,
39you should not C<use AE> directly, C<use AnyEvent> will provide the AE 69you should not C<use AE> directly, C<use AnyEvent> will provide the AE
40namespace. 70namespace.
41 71
42=head2 FUNCTIONS 72=head2 FUNCTIONS
43 73
44This section briefly describes the alternative watcher 74This section briefly describes the alternative watcher
45constructors. Semantics and any methods are not described here, please 75constructors. Semantics are not described here; please
46refer to the L<AnyEvent> manpage for the details. 76refer to the L<AnyEvent> manpage for the details.
47 77
48=over 4 78=over 4
49 79
50=cut 80=cut
66 96
67Example: wait until STDIN becomes readable. 97Example: wait until STDIN becomes readable.
68 98
69 $stdin_ready = AE::io *STDIN, 0, sub { scalar <STDIN> }; 99 $stdin_ready = AE::io *STDIN, 0, sub { scalar <STDIN> };
70 100
71Example. wait until STDOUT becomes writable and print something. 101Example: wait until STDOUT becomes writable and print something.
72 102
73 $stdout_ready = AE::io *STDOUT, 1, sub { print STDOUT "woaw\n" }; 103 $stdout_ready = AE::io *STDOUT, 1, sub { print STDOUT "woaw\n" };
74 104
75=item $w = AE::timer $after, $interval, $cb 105=item $w = AE::timer $after, $interval, $cb
76 106
77Creates a timer watcher that invokes the callback C<$cb> after at least 107Creates a timer watcher that invokes the callback C<$cb> after at least
78C<$after> second have passed (C<$after> can be negative or C<0>). 108C<$after> second have passed (C<$after> can be negative or C<0>).
79 109
80If C<$interval> is C<0>, then the clalback will only be invoked once, 110If C<$interval> is C<0>, then the callback will only be invoked once,
81otherwise it must be a positive number of seconds that specified the 111otherwise it must be a positive number of seconds that specifies the
82interval between successive invocations of the callback. 112interval between successive invocations of the callback.
83 113
84Example: print "too late" after at least one second has passed. 114Example: print "too late" after at least one second has passed.
85 115
86 $timer_once = AE::timer 1, 0, sub { print "too late\n" }; 116 $timer_once = AE::timer 1, 0, sub { print "too late\n" };
89 119
90 $timer_repeated = AE::timer 0, 1, sub { print "blubb\n" }; 120 $timer_repeated = AE::timer 0, 1, sub { print "blubb\n" };
91 121
92=item $w = AE::signal $signame, $cb 122=item $w = AE::signal $signame, $cb
93 123
94Invoke the callback c<$cb> each time one or more occurences of the named 124Invoke the callback C<$cb> each time one or more occurrences of the
95signal C<$signame> are detected. 125named signal C<$signame> are detected.
96 126
97=item $w = AE::child $pid, $cb 127=item $w = AE::child $pid, $cb
98 128
99Invokes the callbakc C<$cb> when the child with the given C<$pid> exits 129Invokes the callback C<$cb> when the child with the given C<$pid> exits
100(or all children, when C<$pid> is zero). 130(or all children, when C<$pid> is zero).
101 131
102The callback will get the actual pid and exit status as arguments. 132The callback will get the actual pid and exit status as arguments.
103 133
104=item $w = AE::idle $cb 134=item $w = AE::idle $cb

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines