package Dancer::Handler::Standalone;
BEGIN {
$Dancer::Handler::Standalone::AUTHORITY = 'cpan:SUKRIA';
}
$Dancer::Handler::Standalone::VERSION = '1.3130';
use strict;
use warnings;
use HTTP::Server::Simple::PSGI;
use base 'Dancer::Handler', 'HTTP::Server::Simple::PSGI';
use Dancer::HTTP;
use Dancer::GetOpt;
use Dancer::Config 'setting';
use Dancer::FileUtils qw(read_glob_content);
use Dancer::SharedData;
# in standalone mode, this method initializes the process
# and start an HTTP server
sub start {
my $self = shift;
my $ipaddr = setting('server');
my $port = setting('port');
my $dancer = Dancer::Handler::Standalone->new($port);
$dancer->host($ipaddr);
my $app = $self->psgi_app();
$dancer->app($app);
if (setting('daemon')) {
my $pid = $dancer->background();
print_startup_info($pid);
return $pid;
}
else {
print_startup_info($$);
$dancer->run();
}
}
sub print_startup_info {
my $pid = shift;
my $ipaddr = setting('server');
my $port = setting('port');
# we only print the info if we need to
setting('startup_info') or return;
# bare minimum
print STDERR ">> Dancer $Dancer::VERSION server $pid listening " .
"on http://$ipaddr:$port\n";
# all loaded plugins
foreach my $module ( grep { $_ =~ m{^Dancer/Plugin/} } keys %INC ) {
$module =~ s{/}{::}g; # change / to ::
$module =~ s{\.pm$}{}; # remove .pm at the end
my $version = $module->VERSION;
defined $version or $version = 'no version number defined';
print ">> $module ($version)\n";
}
}
# Restore expected behavior for wait(), as
# HTTP::Server::Simple sets SIGCHLD to IGNORE.
# (Issue #499)
sub after_setup_listener {
$SIG{CHLD} = '';
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Dancer::Handler::Standalone
=head1 VERSION
version 1.3130
=head1 AUTHOR
Dancer Core Developers
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Alexis Sukrieh.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut