1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
package FCGI::Engine::Manager::Server;
use Moose;
use MooseX::Daemonize::Pid::File;
use FCGI::Engine::Types;
use Config;
our $VERSION = '0.22';
our $AUTHORITY = 'cpan:STEVAN';
has 'name' => (
is => 'ro',
isa => 'Str',
lazy => 1,
default => sub {
((shift)->scriptname . '.server')
}
);
has 'socket' => (
is => 'ro',
isa => 'FCGI::Engine::Listener',
coerce => 1,
required => 1,
);
has $_ => (
is => 'ro',
isa => 'Path::Class::File',
coerce => 1,
required => 1,
) for qw[
scriptname
pidfile
];
has 'nproc' => (
is => 'ro',
isa => 'Int',
default => sub { 1 }
);
has 'additional_args' => (
is => 'ro',
isa => 'ArrayRef',
auto_deref => 1,
predicate => 'has_additional_args'
);
## ... internal attributes
has 'pid_obj' => (
is => 'ro',
isa => 'MooseX::Daemonize::Pid::File',
lazy => 1,
default => sub {
MooseX::Daemonize::Pid::File->new(file => (shift)->pidfile)
},
clearer => 'remove_pid_obj',
);
## methods ...
sub construct_command_line {
my $self = shift;
my $perl = $Config{perlpath};
$perl .= $Config{_exe} if $^O ne 'VMS' and $perl !~ /$Config{_exe}$/i;
return ($perl,
($self->has_additional_args
? $self->additional_args
: ()),
$self->scriptname,
"--nproc",
$self->nproc,
"--pidfile",
$self->pidfile,
"--listen",
$self->socket,
"--daemon");
}
# NOTE:
# perhaps the server status information
# should also go in here, so that we can
# keep it all in one place.
# - SL
1;
__END__
=pod
=head1 NAME
FCGI::Engine::Manager::Server - An abstraction to represent a single FCGI::Engine server
=head1 DESCRIPTION
Nothing here to see really, this just models the individual server
information in the config file for FCGI::Engine::Manager. It also
handles creating the command line as well.
=head1 BUGS
All complex software has bugs lurking in it, and this module is no
exception. If you find a bug please either email me, or add the bug
to cpan-RT.
=head1 AUTHOR
Stevan Little E<lt>stevan@iinteractive.comE<gt>
=head1 COPYRIGHT AND LICENSE
Copyright 2007-2010 by Infinity Interactive, Inc.
L<http://www.iinteractive.com>
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
|