Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

cps::governor(3pm) [debian man page]

CPS::Governor(3pm)					User Contributed Perl Documentation					CPS::Governor(3pm)

NAME
"CPS::Governor" - control the iteration of the "CPS" functions DESCRIPTION
Objects based on this abstract class are used by the "gk*" variants of the CPS functions, to control their behavior. These objects are expected to provide a method, "again", which the functions will use to re-invoke iterations of loops, and so on. By providing a different implementation of this method, governor objects can provide such behaviours as rate-limiting, asynchronisation or parallelism, and integration with event-based IO frameworks. CONSTRUCTOR
$gov = CPS::Governor->new Must be called on a subclass which implements the "again" method. Returns a new instance of a governor object in that class. SUBCLASS METHODS
Because this is an abstract class, instances of it can only be constructed on a subclass which implements the following methods: $gov->again( $code, @args ) Execute the function given in the "CODE" reference $code, passing in the arguments @args. If this is going to be executed immediately, it should be invoked using a tail-call directly by the "again" method, so that the stack does not grow arbitrarily. This can be achieved by, for example: @_ = @args; goto &$code; Alternatively, the Sub::Call::Tail may be used to apply syntactic sugar, allowing you to write instead: use Sub::Call::Tail; ... tail $code->( @args ); EXAMPLES
A Governor With A Time Delay Consider the following subclass, which implements a "CPS::Governor" subclass that calls "sleep()" between every invocation. package Governor::Sleep use base qw( CPS::Governor ); sub new { my $class = shift; my ( $delay ) = @_; my $self = $class->SUPER::new; $self->{delay} = $delay; return $self; } sub again { my $self = shift; my $code = shift; sleep $self->{delay}; # @args are still in @_ goto &$code; } SEE ALSO
o Sub::Call::Tail - Tail calls for subroutines and methods AUTHOR
Paul Evans <leonerd@leonerd.org.uk> perl v5.14.2 2012-06-27 CPS::Governor(3pm)

Check Out this Related Man Page

Mojo::IOLoop::Delay(3pm)				User Contributed Perl Documentation				  Mojo::IOLoop::Delay(3pm)

NAME
Mojo::IOLoop::Delay - Synchronize events SYNOPSIS
use Mojo::IOLoop::Delay; # Synchronize multiple events my $delay = Mojo::IOLoop::Delay->new; $delay->on(finish => sub { say 'BOOM!' }); for my $i (1 .. 10) { $delay->begin; Mojo::IOLoop->timer($i => sub { say 10 - $i; $delay->end; }); } # Wait for events if necessary $delay->wait unless Mojo::IOLoop->is_running; DESCRIPTION
Mojo::IOLoop::Delay synchronizes events for Mojo::IOLoop. EVENTS
Mojo::IOLoop::Delay can emit the following events. "finish" $delay->on(finish => sub { my $delay = shift; ... }); Emitted safely once the active event counter reaches zero. ATTRIBUTES
Mojo::IOLoop::Delay implements the following attributes. "ioloop" my $ioloop = $delay->ioloop; $delay = $delay->ioloop(Mojo::IOLoop->new); Loop object to control, defaults to the global Mojo::IOLoop singleton. METHODS
Mojo::IOLoop::Delay inherits all methods from Mojo::EventEmitter and implements the following new ones. "begin" my $cb = $delay->begin; Increment active event counter, the returned callback can be used instead of "end". my $delay = Mojo::IOLoop->delay; Mojo::UserAgent->new->get('mojolicio.us' => $delay->begin); my $tx = $delay->wait; "end" $delay->end; $delay->end(@args); Decrement active event counter. "wait" my @args = $delay->wait; Start "ioloop" and stop it again once the "finish" event gets emitted, only works when "ioloop" is not running already. # Use the "finish" event to synchronize portably $delay->on(finish => sub { my ($delay, @args) = @_; ... }); $delay->wait unless $delay->ioloop->is_running; SEE ALSO
Mojolicious, Mojolicious::Guides, <http://mojolicio.us>. perl v5.14.2 2012-09-05 Mojo::IOLoop::Delay(3pm)
Man Page