File Coverage

blib/lib/Proc/JobQueue/RemoteDependencyJob.pm
Criterion Covered Total %
statement 16 18 88.8
branch n/a
condition n/a
subroutine 6 6 100.0
pod n/a
total 22 24 91.6


line stmt bran cond sub pod time code
1              
2             package Proc::JobQueue::RemoteDependencyJob;
3              
4 2     2   1343 use strict;
  2         5  
  2         67  
5 2     2   12 use warnings;
  2         6  
  2         63  
6 2     2   12 use Scalar::Util qw(blessed);
  2         4  
  2         124  
7 2     2   10 use Callback;
  2         4  
  2         75  
8 2     2   12 use Proc::JobQueue::Job;
  2         4  
  2         58  
9 2     2   3670 use RPC::ToWorker;
  0            
  0            
10             require Proc::JobQueue::Job;
11             use Carp qw(confess);
12              
13             our @ISA = qw(Proc::JobQueue::Job);
14              
15             sub create
16             {
17             my ($pkg, %params) = @_;
18              
19             my $job = $pkg->SUPER::new(
20             local_data => undef,
21             data => undef,
22             chdir => undef,
23             prequel => '',
24             when_done => undef,
25             all_done => undef,
26             %params,
27             );
28             return $job;
29             }
30              
31             sub new
32             {
33             my ($pkg, $dependency_graph, $preload, $func, %params) = @_;
34              
35             my $data = delete $params{args};
36             my $whendone = delete $params{whendone};
37              
38             return $pkg->create(
39             dependency_graph => $dependency_graph,
40             preload => $preload,
41             eval => "$func(\@\$data)",
42             desc => "RPC call to $func",
43             data => $data,
44             when_done => $whendone,
45             %params,
46             );
47             }
48              
49             sub startup
50             {
51             my ($job) = @_;
52             $job->{on_start}->($job, $job->{dependency_graph}) if $job->{on_start};
53             do_remote_job(
54             data => $job->{data},
55             desc => $job->{desc},
56             host => $job->{host},
57             eval => $job->{eval},
58             chdir => $job->{chdir},
59             prequel => $job->{prequel},
60             preload => $job->{preload},
61             prefix => $job->{prefix},
62             when_done => sub {
63             if ($job->{when_done}) {
64             $job->{when_done}(@_);
65             } else {
66             $job->finished(0);
67             }
68             },
69             all_done => $job->{all_done},
70             local_data => $job->{local_data} || {
71             dependency_graph => $job->{dependency_graph},
72             master_job => $job,
73             job_queue => $job->queue(),
74             },
75             );
76             }
77              
78             1;
79              
80             __END__