AE-AdHoc

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Revision history for AE-AdHoc
 
0.08    Sat Oct 27 2012
        * API: Add ae_action { CODE } for delayed execution.
                * API: Add timeout and soft_timeout options to ae_recv.
 
0.07    Sun Sep 16 2012
        * API: Add magic variables for error handling
        * FIX: Fix ae_goal, add verbose error messages for leftover callbacks
 
0.05    Sun Sep 09 2012
        * API: Add multiple goal interface (ae_goal)
 
0.04    Sun Sep 09 2012
        * API: Add arglist support to callbacks: ae_recv { ae_send->(1..5) };
        * API: Add extra arguments to callback: ae_recv { ae_send(1..5) };
        * Example added (port-probe.pl)
 
0.03    Thu Sep 06 2012
        * API: Make empty/zero $timeout illegal.
 
0.0203  Tue Aug 14 2012
        * Fixed empty $timeout undef warning.
        * Minor code cleanup.

lib/AE/AdHoc.pm  view on Meta::CPAN

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
BEGIN {
        our @ISA = qw(Exporter);
        our @EXPORT = qw(ae_recv ae_send ae_croak ae_begin ae_end ae_goal ae_action);
};
 
=head2 ae_recv { CODE; } [ $timeout ] %options;
 
The main entry point of the module.
 
Run CODE block, enter event loop and wait for $timeout seconds for callbacks
set up in CODE to fire, then die. Return whatever was sent via C<ae_send>.
 
$timeout must be a nonzero real number. Negative value means "run forever".
$timeout=0 would be ambigous, so it's excluded.
 
Options may include:
 
=over
 
=item * timeout - override the $timeout parameter (one timeout MUST be present).

lib/AE/AdHoc.pm  view on Meta::CPAN

368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
        croak shift;
};
 
=head1 CAVEATS
 
This module is still under heavy development, and is subject to change.
Feature/change requests are accepted.
 
=head2 Callback confinement
 
If event loop is entered several times, the callbacks created in one
invocations will NOT fire in another. Instead, they'll issue a warning
and return (see "Error handling" below).
 
Error message will be like C<ae_send at file:13 from ae_recv[1] at file:12
called in ae_recv[2] at file:117>
 
This is done so to isolate invocations as much as possible.
 
However, detection of "this invocation" will go wrong if callback maker is
called in a callback itself. For instance, this will always work the same:



( run in 0.503 second using v1.01-cache-2.11-cpan-ec4f86ec37b )