Async::Hooks::Ctl - Hook control object
version 0.16
# inside a callback sub my_callback { my $ctl = shift; # This is the Async::Hooks::Ctl object my $args = shift; # Arguments for the hook $args = $ctl->args; # Args are also available with the args() method return $ctl->done; # no other callbacks are called # ... or ... return $ctl->decline; # call next callback }
A Async::Hooks::Ctl object controls the sequence of invocation of callbacks.
Async::Hooks::Ctl
Each callback receives two parameters: a Async::Hooks::Ctl object, and a arrayref with the hook arguments.
Each callback must call one of the sequence control methods before returning. Usually you just write:
return $ctl->done(); # ... or ... return $ctl->decline();
If you know what you are doing, you can also do this:
$ctl->decline(); # do other stuff here return;
But there are no guarantees that your code after the control method call will be run at the end of the callback sequence.
The important rule is that you must call one and only one of the control methods per callback.
The object provides two methods that control the invocation sequence, decline() and done(). The done() method will stop the sequence, and no other callback will be called. The decline() method will call the next callback in the sequence.
decline()
done()
A cleanup callback can also be defined, and it will be called at the end of all callbacks, or imediatly after done(). This callback receives a third argument, a flag $is_done, that will be true if the chain ended with a call to done() or stop().
$is_done
stop()
The decline() method can also be called as declined() or next(). The done() method can also be called as stop().
declined()
next()
The new() constructor returns a Async::Hooks::Ctl object. All parameters are optional.
new()
$hooks
An arrayref with all the callbacks to call.
$args
An arrayref with all the hook arguments.
$cleanup
A coderef with the cleanup callback to use.
Returns the hook arguments.
Calls the next callback in the hook sequence.
If there are no callbacks remaining and if a cleanup callback was defined, it will be called with the $is_done flag as false.
An alias to $ctl->decline().
$ctl->decline()
Stops the callback sequence. No other callbacks in the sequence will be called.
If a cleanup callback was defined, it will be called with the $is_done flag as true.
An alias to $ctl->done().
$ctl->done()
Pedro Melo <melo@cpan.org>
This software is Copyright (c) 2011 by Pedro Melo.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
To install Async::Hooks, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Async::Hooks
CPAN shell
perl -MCPAN -e shell install Async::Hooks
For more information on module installation, please visit the detailed CPAN module installation guide.