Launcher-Cascade
view release on metacpan or search on metacpan
lib/Launcher/Cascade/Container.pm view on Meta::CPAN
package Launcher::Cascade::Container;
=head1 NAME
Launcher::Cascade::Container - a class to run L::C::Base launchers in cascade
=head1 SYNOPSIS
use Launcher::Cascade::Base::...;
use Launcher::Cascade::Container;
my $launcher1 = new Launcher::Cascade::Base:... ...;
my $launcher2 = new Launcher::Cascade::Base:... ...;
my $launcher3 = new Launcher::Cascade::Base:... ...;
my $container = new Launcher::Cascade::Container
-launchers => [ $launcher1, $launcher2, $launcher3 ];
$container->run_session();
=head1 DESCRIPTION
A C<L::C::Container> object maintains a list of launchers, which are instances
of C<L::C::Base> or of its subclasses. The run_session() method let all the
launchers run in turn and checks their status until all of them succeed or one
of them fails.
=cut
use strict;
use warnings;
use base qw( Launcher::Cascade );
=head2 Methods
=over 4
=item B<launchers>
=item B<launchers> I<LIST>
=item B<launchers> I<ARRAYREF>
Returns the list of C<Launcher::Cascade::Base> objects that are to be run in this section.
When called with a I<LIST> of arguments, this methods also sets the list of
launchers to I<LIST>. The argument can also be an I<ARRAYREF>, in which case
it will automatically be dereferenced.
All elements in I<LIST> or I<ARRAYREF> should be instances of
C<Launcher::Cascade::Base> or one of its subclasses.
=cut
sub launchers {
my $self = shift;
$self->{_launchers} ||= [];
if ( @_ ) {
if ( UNIVERSAL::isa($_[0], 'ARRAY') ) {
# Dereference the first arg if it is an arrayref (so that the
# method can be called with an arrayref from the constructor).
$self->{_launchers} = $_[0];
( run in 2.015 seconds using v1.01-cache-2.11-cpan-9581c071862 )