File Coverage

blib/lib/Proc/JobQueue/Sequence.pm
Criterion Covered Total %
statement 36 36 100.0
branch 2 2 100.0
condition n/a
subroutine 10 10 100.0
pod 1 2 50.0
total 49 50 98.0


line stmt bran cond sub pod time code
1              
2             package Proc::JobQueue::Sequence;
3              
4             # $Id: Sequence.pm 13848 2009-07-23 21:34:00Z david $
5              
6 3     3   2393 use strict;
  3         5  
  3         110  
7 3     3   16 use warnings;
  3         5  
  3         82  
8 3     3   15 use Proc::JobQueue::Job;
  3         5  
  3         31  
9 3     3   113 use Hash::Util qw(lock_keys unlock_keys);
  3         5  
  3         28  
10             our @ISA = qw(Proc::JobQueue::Job);
11 3     3   272 use List::MoreUtils qw(all);
  3         6  
  3         149  
12 3     3   14 use Scalar::Util qw(weaken);
  3         5  
  3         136  
13 3     3   1897 use Proc::JobQueue::DependencyTask;
  3         7  
  3         36  
14              
15             sub new
16             {
17 5     5 0 65 my ($pkg, $opts, $config, @jobs) = @_;
18              
19 5         24 my $job = $pkg->SUPER::new(
20             opts => $opts,
21             config => $config,
22             jobs => \@jobs,
23             priority => 20,
24             );
25 5         170 return $job;
26             }
27              
28             sub startup
29             {
30 6     6 1 20 my $job = shift;
31              
32 6         42 my $graph = $job->{queue}->graph();
33              
34 6         12 my @last = ();
35 6         7 for my $subtask (@{$job->{jobs}}) {
  6         43  
36 72         244 $graph->add($subtask, @last);
37 72         3708 @last = ( $subtask );
38             }
39              
40             my $finish = Proc::JobQueue::DependencyTask->new(
41             desc => 'mark Sequence as done',
42             func => sub {
43 6 100   6   242 $graph->remove_dependency($job)
44             if $graph->is_dependency($job);
45 6         219 return 'done';
46             },
47 6         290 );
48              
49 6         19 $graph->add($finish, @last);
50              
51 6         481 $job->{queue}->job_part_finished($job, 0);
52             }
53              
54             __END__