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   835 use v5.12.5;
  56         209  
8 56     56   310 use warnings;
  56         129  
  56         1690  
9 56     56   652 use POSIX ":sys_wait_h";
  56         64078  
  56         380  
10              
11             our $VERSION = '1.14.2.2'; # TRIAL VERSION
12              
13             sub new {
14 135     135 0 693 my $that = shift;
15 135   33     1281 my $proto = ref($that) || $that;
16 135         650 my $self = {@_};
17              
18 135         425 bless( $self, $proto );
19              
20 135         632 $self->{'running'} = 0;
21              
22 135         528 return $self;
23             }
24              
25             sub start {
26 135     135 0 407 my ($self) = @_;
27              
28 135         695 $self->{'running'} = 1;
29 135         280056 $self->{pid} = fork;
30              
31 135 100       15940 if ( !$self->{pid} ) {
32 29         4556 $self->{coderef}->($self);
33 29         264 $self->{'running'} = 0;
34 29         11772 exit();
35             }
36             }
37              
38             sub wait {
39 6110     6110 0 24644 my ($self) = @_;
40 6110         121468 my $rpid = waitpid( $self->{pid}, &WNOHANG );
41 6110 100       33851 if ( $rpid == -1 ) { $self->{'running'} = 0; }
  106         2073  
42              
43 6110         24360 return $rpid;
44             }
45              
46             1;