File Coverage

lib/Rex/Fork/Task.pm
Criterion Covered Total %
statement 26 26 100.0
branch 4 4 100.0
condition 1 3 33.3
subroutine 6 6 100.0
pod 0 3 0.0
total 37 42 88.1


line stmt bran cond sub pod time code
1             #
2             # (c) Jan Gehring
3             #
4              
5             package Rex::Fork::Task;
6              
7 56     56   738 use v5.12.5;
  56         209  
8 56     56   412 use warnings;
  56         117  
  56         1629  
9 56     56   612 use POSIX ":sys_wait_h";
  56         60516  
  56         352  
10              
11             our $VERSION = '1.14.3'; # VERSION
12              
13             sub new {
14 135     135 0 811 my $that = shift;
15 135   33     1470 my $proto = ref($that) || $that;
16 135         806 my $self = {@_};
17              
18 135         427 bless( $self, $proto );
19              
20 135         508 $self->{'running'} = 0;
21              
22 135         636 return $self;
23             }
24              
25             sub start {
26 135     135 0 428 my ($self) = @_;
27              
28 135         322 $self->{'running'} = 1;
29 135         257042 $self->{pid} = fork;
30              
31 135 100       14213 if ( !$self->{pid} ) {
32 29         3808 $self->{coderef}->($self);
33 29         256 $self->{'running'} = 0;
34 29         9775 exit();
35             }
36             }
37              
38             sub wait {
39 6524     6524 0 24215 my ($self) = @_;
40 6524         121801 my $rpid = waitpid( $self->{pid}, &WNOHANG );
41 6524 100       36179 if ( $rpid == -1 ) { $self->{'running'} = 0; }
  106         616  
42              
43 6524         28354 return $rpid;
44             }
45              
46             1;