App-Sv
view release on metacpan or search on metacpan
lib/App/Sv.pm view on Meta::CPAN
POSIX::_exit(1);
}
else {
# parent
$debug->("Watching pid $pid for '$svc->{name}'");
$svc->{pid} = $pid;
$svc->{watcher} = AE::child $pid, sub {
$self->_child_exited($svc, @_);
};
$svc->{start_ts} = time;
my $t; $t = AE::timer $svc->{start_wait}, 0, sub {
$self->_check_svc_up($svc);
undef $t;
};
}
return $pid;
}
sub _child_exited {
my ($self, $svc, undef, $status) = @_;
lib/App/Sv.pm view on Meta::CPAN
return;
}
}
else {
$svc->{state} = 'fatal';
return;
}
my $debug = $self->{log}->logger(8);
$svc->{state} = 'restart';
$debug->("Restarting '$svc->{name}' in $svc->{restart_delay} seconds");
my $t; $t = AE::timer $svc->{restart_delay}, 0, sub {
$self->_start_svc($svc);
undef $t;
};
}
sub _check_svc_up {
my ($self, $svc) = @_;
return unless $svc->{state} eq 'start';
if (!$svc->{pid}) {
lib/App/Sv.pm view on Meta::CPAN
delete $svc->{start_count};
$svc->{state} = 'up';
}
sub _stop_svc {
my ($self, $svc) = @_;
$svc->{state} = 'stop';
my $st = $self->_signal_svc($svc, 'TERM');
if ($svc->{stop_wait} && $svc->{stop_wait} > 0) {
my $t; $t = AE::timer $svc->{stop_wait}, 0, sub {
$self->_check_svc_down($svc);
undef $t;
};
}
return $st;
}
sub _check_svc_down {
my ($self, $svc) = @_;
( run in 0.495 second using v1.01-cache-2.11-cpan-49f99fa48dc )