Event-ExecFlow
view release on metacpan or search on metacpan
lib/Event/ExecFlow/Job/Group.pm view on Meta::CPAN
package Event::ExecFlow::Job::Group;
use base qw( Event::ExecFlow::Job );
use strict;
use Scalar::Util qw(weaken);
sub get_type { "group" }
sub get_jobs { shift->{jobs} }
sub get_fail_with_members { shift->{fail_with_members} }
sub get_stop_on_failure { shift->{stop_on_failure} }
sub get_parallel { shift->{parallel} }
sub get_scheduler { shift->{scheduler} }
sub get_member_finished_callbacks { shift->{member_finished_callbacks} }
lib/Event/ExecFlow/Job/Group.pm view on Meta::CPAN
return $sum;
}
sub init {
my $self = shift;
$self->SUPER::init();
foreach my $job ( @{$self->get_jobs} ) {
$job->set_group($self);
weaken($job->{group});
$self->add_child_post_callback($job);
}
$self->set_progress_max($self->get_job_cnt);
1;
}
sub reset_non_finished_jobs {
my $self = shift;
lib/Event/ExecFlow/Job/Group.pm view on Meta::CPAN
1;
}
sub set_group_in_all_childs {
my $self = shift;
foreach my $job ( @{$self->get_jobs} ) {
if ( $job->get_type eq 'group' ) {
$job->set_group($self);
weaken($job->{group});
$job->set_group_in_all_childs;
}
else {
$job->set_group($self);
weaken($job->{group});
}
}
1;
}
sub increase_progress_max {
my $self = shift;
my ($add) = @_;
lib/Event/ExecFlow/Job/Group.pm view on Meta::CPAN
}
sub add_job {
my $self = shift;
my ($job) = @_;
push @{$self->get_jobs}, $job;
$job->set_frontend($self->get_frontend);
$job->set_group($self);
weaken($job->{group});
my $job_cnt = $job->get_job_cnt;
$self->increase_progress_max($job_cnt) if $job_cnt != 0;
if ( $self->get_state eq 'finished' ||
$self->get_state eq 'error' ) {
$self->set_state("waiting");
}
$self->add_child_post_callback($job);
( run in 0.348 second using v1.01-cache-2.11-cpan-65fba6d93b7 )