Bio-Das-ProServer
view release on metacpan or search on metacpan
lib/Bio/Das/ProServer.pm view on Meta::CPAN
my @args = @_;
my $heap = $args[HEAP];
DEBUG and
carp( "Client handler $PID/", $args[SESSION]->ID,
" flushed its response.\n",
"Client handler $PID/", $args[SESSION]->ID, " is shutting down.\n"
);
return delete $heap->{client};
}
### We're done.
sub make_pidfile {
my ($self, $pidfile) = @_;
my ($spidfile) = $pidfile =~ /([a-zA-Z0-9\.\/_\-]+)/mxs;
__PACKAGE__->log(qq(Writing pidfile $spidfile));
$self->{'pidfile'} = $pidfile;
open my $fh, '>', $spidfile or croak "Cannot create pid file: $ERRNO\n";
print {$fh} "$PID\n" or croak $OS_ERROR;
close $fh or carp "Error closing pid file: $ERRNO";
return $PID;
}
sub remove_pidfile {
my ($self) = @_;
my $spidfile = $self->{'pidfile'};
if($spidfile && -f $spidfile) {
unlink $spidfile;
DEBUG and carp 'Removed pidfile';
}
return;
}
sub log { ## no critic
my ($self, @args) = @_;
print {*STDERR} (strftime '[%Y-%m-%d %H:%M:%S] ', localtime), @args, "\n" or croak $OS_ERROR;
return;
}
1;
__END__
=head1 NAME
Bio::Das::ProServer
=head1 VERSION
$LastChangedRevision: 687 $
=head1 SYNOPSIS
eg/proserver -help
=head1 DESCRIPTION
ProServer is a server implementation of the DAS protocol.
http://biodas.org/
ProServer is based on example preforking POEserver at
http://poe.perl.org/?POE_Cookbook/Web_Server_With_Forking
=head1 DIAGNOSTICS
To run in non-pre-forking, debug mode:
eg/proserver -debug -x
Otherwise stdout logs to proserver-hostname.log and stderr to proserver-hostname.err
=head1 CONFIGURATION AND ENVIRONMENT
See eg/proserver.ini
=head1 SUBROUTINES/METHODS
=head2 run
=head2 DEBUG
=head2 server_spawn
=head2 server_start
=head2 server_stop
=head2 server_got_error
=head2 server_do_fork
=head2 server_got_sig_hup
=head2 server_got_sig_int
=head2 server_got_sig_chld
=head2 server_got_connection
=head2 client_start
=head2 client_stop
=head2 client_got_request
=head2 response_xsl
=head2 response_general
=head2 response_dsn
=head2 response_sources
=head2 response_homepage
=head2 build_das_response
=head2 client_got_error
=head2 client_flushed_request
=head2 make_pidfile
( run in 1.248 second using v1.01-cache-2.11-cpan-39bf76dae61 )