Net-CascadeCopy
view release on metacpan or search on metacpan
lib/Net/CascadeCopy.pm view on Meta::CPAN
use Mouse;
use Benchmark;
use Log::Log4perl qw(:easy);
use POSIX ":sys_wait_h"; # imports WNOHANG
use Proc::Queue size => 32, debug => 0, trace => 0, delay => 1;
my $logger = get_logger( 'default' );
has data => ( is => 'ro', isa => 'HashRef', default => sub { return {} } );
has total_time => ( is => 'rw', isa => 'Num', default => 0 );
has ssh => ( is => 'ro', isa => 'Str', default => "ssh" );
has ssh_args => ( is => 'ro', isa => 'Str', default => "-x -A" );
has command => ( is => 'ro', isa => 'Str', required => 1 );
has command_args => ( is => 'ro', isa => 'Str', default => "" );
has source_path => ( is => 'ro', isa => 'Str', required => 1 );
lib/Net/CascadeCopy.pm view on Meta::CPAN
has output => ( is => 'ro', isa => 'Str', default => "" );
# maximum number of failures per server
has max_failures => ( is => 'ro', isa => 'Num', default => 3 );
# maximum processes per remote server
has max_forks => ( is => 'ro', isa => 'Num', default => 2 );
# keep track of child processes
has children => ( is => 'ro', isa => 'HashRef', default => sub { return {} } );
# for testing purposes
has transfer_map => ( is => 'ro', isa => 'HashRef', default => sub { return {} } );
# sort order
has sort_order => ( is => 'ro', isa => 'HashRef', default => sub { return {} } );
sub add_group {
my ( $self, $group, $servers_a ) = @_;
$logger->info( "Adding group: $group: ",
join( ", ", @$servers_a ),
);
# initialize data structures
for my $server ( @{ $servers_a } ) {
( run in 0.648 second using v1.01-cache-2.11-cpan-5f2e87ce722 )