1 package Catalyst::Engine::HTTP::Daemon;
4 use base 'Catalyst::Engine::HTTP::Base';
6 use IO::Socket qw( SOCK_STREAM SOMAXCONN );
10 Catalyst::Engine::HTTP::Daemon - Catalyst HTTP Daemon Engine
14 A script using the Catalyst::Engine::HTTP::Daemon module might look like:
18 BEGIN { $ENV{CATALYST_ENGINE} = 'HTTP::Daemon' }
21 use lib '/path/to/MyApp/lib';
28 This is the Catalyst engine specialized for development and testing.
30 =head1 OVERLOADED METHODS
32 This class overloads some methods from C<Catalyst::Engine::HTTP::Base>.
41 my ( $class, $client ) = @_;
45 while ( my $request = $client->get_request ) {
47 $request->uri->scheme('http'); # Force URI::http
48 $request->uri->host( $request->header('Host') || $client->sockhost );
49 $request->uri->port( $client->sockport );
51 my $http = Catalyst::Engine::HTTP::Base::struct->new(
52 address => $client->peerhost,
54 response => HTTP::Response->new
57 $class->SUPER::handler($http);
59 $client->send_response( $http->response );
71 my $port = shift || 3000;
73 $SIG{'PIPE'} = 'IGNORE';
75 $HTTP::Daemon::PROTO = 'HTTP/1.0'; # For now until we resolve the blocking
76 # issues with HTTP 1.1
78 my $daemon = Catalyst::Engine::HTTP::Daemon::Catalyst->new(
85 unless ( defined $daemon ) {
86 die( qq/Failed to create daemon. Reason: '$!'/ );
89 my $base = URI->new( $daemon->url )->canonical;
91 printf( "You can connect to your server at %s\n", $base );
93 while ( my $client = $daemon->accept ) {
94 $class->handler($client);
102 L<Catalyst>, L<Catalyst::Engine>, L<Catalyst::Engine::HTTP::Base>,
107 Sebastian Riedel, C<sri@cpan.org>
108 Christian Hansen, C<ch@ngmedia.com>
112 This program is free software, you can redistribute it and/or modify it under
113 the same terms as Perl itself.
117 package Catalyst::Engine::HTTP::Daemon::Catalyst;
120 use base 'HTTP::Daemon';
123 "Catalyst/$Catalyst::VERSION";