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

IO::Async::Timer(3pm)					User Contributed Perl Documentation				     IO::Async::Timer(3pm)

NAME
"IO::Async::Timer" - base class for Notifiers that use timed delays DESCRIPTION
This module provides a subclass of IO::Async::Notifier for implementing notifiers that use timed delays. For specific implementations, see one of the subclasses: o IO::Async::Timer::Absolute - event callback at a fixed future time o IO::Async::Timer::Countdown - event callback after a fixed delay o IO::Async::Timer::Periodic - event callback at regular intervals CONSTRUCTOR
$timer = IO::Async::Timer->new( %args ) Constructs a particular subclass of "IO::Async::Timer" object, and returns it. This constructor is provided for backward compatibility to older code which doesn't use the subclasses. New code should directly construct a subclass instead. mode => STRING The type of timer to create. Currently the only allowed mode is "countdown" but more types may be added in the future. Once constructed, the "Timer" will need to be added to the "Loop" before it will work. It will also need to be started by the "start" method. METHODS
$running = $timer->is_running Returns true if the Timer has been started, and has not yet expired, or been stopped. $timer->start Starts the Timer. Throws an error if it was already running. If the Timer is not yet in a Loop, the actual start will be deferred until it is added. Once added, it will be running, and will expire at the given duration after the time it was added. As a convenience, $timer is returned. This may be useful for starting timers at construction time: $loop->add( IO::Async::Timer->new( ... )->start ); $timer->stop Stops the Timer if it is running. If it has not yet been added to the "Loop" but there is a start pending, this will cancel it. AUTHOR
Paul Evans <leonerd@leonerd.org.uk> perl v5.14.2 2012-10-24 IO::Async::Timer(3pm)
Man Page