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

Comparing AnyEvent/lib/AnyEvent.pm (file contents):
Revision 1.169 by root, Wed Jul 9 10:36:22 2008 UTC vs.
Revision 1.175 by root, Sun Jul 27 08:43:32 2008 UTC

6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
9 use AnyEvent; 9 use AnyEvent;
10 10
11 my $w = AnyEvent->io (fh => $fh, poll => "r|w", cb => sub { 11 my $w = AnyEvent->io (fh => $fh, poll => "r|w", cb => sub { ... });
12 ...
13 });
14 12
15 my $w = AnyEvent->timer (after => $seconds, cb => sub { 13 my $w = AnyEvent->timer (after => $seconds, cb => sub { ... });
14 my $w = AnyEvent->timer (after => $seconds, interval => $seconds, cb => ...
15
16 print AnyEvent->now; # prints current event loop time
17 print AnyEvent->time; # think Time::HiRes::time or simply CORE::time.
18
19 my $w = AnyEvent->signal (signal => "TERM", cb => sub { ... });
20
21 my $w = AnyEvent->child (pid => $pid, cb => sub {
22 my ($pid, $status) = @_;
16 ... 23 ...
17 }); 24 });
18 25
19 my $w = AnyEvent->condvar; # stores whether a condition was flagged 26 my $w = AnyEvent->condvar; # stores whether a condition was flagged
20 $w->send; # wake up current and all future recv's 27 $w->send; # wake up current and all future recv's
21 $w->recv; # enters "main loop" till $condvar gets ->send 28 $w->recv; # enters "main loop" till $condvar gets ->send
29 # use a condvar in callback mode:
30 $w->cb (sub { $_[0]->recv });
22 31
23=head1 INTRODUCTION/TUTORIAL 32=head1 INTRODUCTION/TUTORIAL
24 33
25This manpage is mainly a reference manual. If you are interested 34This manpage is mainly a reference manual. If you are interested
26in a tutorial or some gentle introduction, have a look at the 35in a tutorial or some gentle introduction, have a look at the
381The instrument to do that is called a "condition variable", so called 390The instrument to do that is called a "condition variable", so called
382because they represent a condition that must become true. 391because they represent a condition that must become true.
383 392
384Condition variables can be created by calling the C<< AnyEvent->condvar 393Condition variables can be created by calling the C<< AnyEvent->condvar
385>> method, usually without arguments. The only argument pair allowed is 394>> method, usually without arguments. The only argument pair allowed is
395
386C<cb>, which specifies a callback to be called when the condition variable 396C<cb>, which specifies a callback to be called when the condition variable
387becomes true. 397becomes true, with the condition variable as the first argument (but not
398the results).
388 399
389After creation, the condition variable is "false" until it becomes "true" 400After creation, the condition variable is "false" until it becomes "true"
390by calling the C<send> method (or calling the condition variable as if it 401by calling the C<send> method (or calling the condition variable as if it
391were a callback, read about the caveats in the description for the C<< 402were a callback, read about the caveats in the description for the C<<
392->send >> method). 403->send >> method).
448 459
449 my $done = AnyEvent->condvar; 460 my $done = AnyEvent->condvar;
450 my $delay = AnyEvent->timer (after => 5, cb => $done); 461 my $delay = AnyEvent->timer (after => 5, cb => $done);
451 $done->recv; 462 $done->recv;
452 463
464Example: Imagine an API that returns a condvar and doesn't support
465callbacks. This is how you make a synchronous call, for example from
466the main program:
467
468 use AnyEvent::CouchDB;
469
470 ...
471
472 my @info = $couchdb->info->recv;
473
474And this is how you would just ste a callback to be called whenever the
475results are available:
476
477 $couchdb->info->cb (sub {
478 my @info = $_[0]->recv;
479 });
480
453=head3 METHODS FOR PRODUCERS 481=head3 METHODS FOR PRODUCERS
454 482
455These methods should only be used by the producing side, i.e. the 483These methods should only be used by the producing side, i.e. the
456code/module that eventually sends the signal. Note that it is also 484code/module that eventually sends the signal. Note that it is also
457the producer side which creates the condvar in most cases, but it isn't 485the producer side which creates the condvar in most cases, but it isn't
590=item $bool = $cv->ready 618=item $bool = $cv->ready
591 619
592Returns true when the condition is "true", i.e. whether C<send> or 620Returns true when the condition is "true", i.e. whether C<send> or
593C<croak> have been called. 621C<croak> have been called.
594 622
595=item $cb = $cv->cb ([new callback]) 623=item $cb = $cv->cb ($cb->($cv))
596 624
597This is a mutator function that returns the callback set and optionally 625This is a mutator function that returns the callback set and optionally
598replaces it before doing so. 626replaces it before doing so.
599 627
600The callback will be called when the condition becomes "true", i.e. when 628The callback will be called when the condition becomes "true", i.e. when
826no warnings; 854no warnings;
827use strict; 855use strict;
828 856
829use Carp; 857use Carp;
830 858
831our $VERSION = 4.2; 859our $VERSION = 4.23;
832our $MODEL; 860our $MODEL;
833 861
834our $AUTOLOAD; 862our $AUTOLOAD;
835our @ISA; 863our @ISA;
836 864
1206 1234
1207=item C<PERL_ANYEVENT_STRICT> 1235=item C<PERL_ANYEVENT_STRICT>
1208 1236
1209AnyEvent does not do much argument checking by default, as thorough 1237AnyEvent does not do much argument checking by default, as thorough
1210argument checking is very costly. Setting this variable to a true value 1238argument checking is very costly. Setting this variable to a true value
1211will cause AnyEvent to thoroughly check the arguments passed to most 1239will cause AnyEvent to load C<AnyEvent::Strict> and then to thoroughly
1212method calls and croaks if it finds any problems. In other words, enables 1240check the arguments passed to most method calls. If it finds any problems
1241it will croak.
1242
1243In other words, enables "strict" mode.
1244
1213"strict" mode. Unlike C<use strict> it is definitely recommended ot keep 1245Unlike C<use strict> it is definitely recommended ot keep it off in
1214it off in production. 1246production.
1215 1247
1216=item C<PERL_ANYEVENT_MODEL> 1248=item C<PERL_ANYEVENT_MODEL>
1217 1249
1218This can be used to specify the event model to be used by AnyEvent, before 1250This can be used to specify the event model to be used by AnyEvent, before
1219auto detection and -probing kicks in. It must be a string consisting 1251auto detection and -probing kicks in. It must be a string consisting

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines