Ubic-Service-ServerStarter
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Ubic/Service/ServerStarter.pm view on Meta::CPAN
use strict;
use warnings;
package Ubic::Service::ServerStarter;
$Ubic::Service::ServerStarter::VERSION = '0.003';
use base qw(Ubic::Service::Skeleton);
use Params::Validate qw(:all);
use Ubic::Daemon qw(:all);
# ABSTRACT: Run programs using Server::Starter
my $server_command = $ENV{'UBIC_SERVICE_SERVERSTARTER_BIN'} || 'start_server';
sub new {
my ($class) = (shift);
my $params = validate(@_, {
cmd => { type => ARRAYREF },
args => { type => HASHREF, optional => 1 },
user => { type => SCALAR, optional => 1 },
group => { type => SCALAR | ARRAYREF, optional => 1 },
status => { type => CODEREF, optional => 1 },
ubic_log => { type => SCALAR, optional => 1 },
env => { type => HASHREF, optional => 1 },
stdout => { type => SCALAR, optional => 1 },
stderr => { type => SCALAR, optional => 1 },
proxy_logs => { type => BOOLEAN, optional => 1 },
pidfile => { type => SCALAR, optional => 1 },
cwd => { type => SCALAR, optional => 1 },
});
return bless $params => $class;
}
sub pidfile {
my ($self) = @_;
return $self->{pidfile} if defined $self->{pidfile};
return "/tmp/".$self->full_name.".pid";
}
sub sspidfile {
my ($self) = @_;
return $self->{args}{'pid-file'} || $self->pidfile . '.ss';
}
sub statusfile {
my ($self) = @_;
return $self->{args}{'status-file'} || $self->pidfile . '.status.ss';
}
sub bin {
my ($self) = @_;
my @cmd = split(/\s+/, $server_command);
my %args = %{ $self->{args} };
$args{'pid-file'} = $self->sspidfile unless $args{'pid-file'};
$args{'status-file'} = $self->statusfile unless $args{'status-file'};
for my $key (keys %args) {
my $cmd_key = (length $key == 1) ? '-' : '--';
$cmd_key .= $key;
my $v = $args{$key};
next unless defined $v;
push @cmd, $cmd_key, $v;
}
push @cmd, '--', @{ $self->{cmd} };
return \@cmd;
}
sub start_impl {
my ($self) = @_;
my $daemon_opts = {
bin => $self->bin,
pidfile => $self->pidfile,
term_timeout => 5, # TODO - configurable?
};
for (qw/ env cwd stdout stderr ubic_log /, ($Ubic::Daemon::VERSION gt '1.48' ? 'proxy_logs' : ())) {
$daemon_opts->{$_} = $self->{$_} if defined $self->{$_};
}
start_daemon($daemon_opts);
return;
}
sub stop_impl {
my ($self) = @_;
return stop_daemon($self->pidfile, { timeout => 7 });
}
sub status_impl {
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.760 second using v1.00-cache-2.02-grep-82fe00e-cpan-48ebf85a1963 )