sub finalize_headers { }
-=item $c->handler( $class, $engine )
+=item $c->handler( $class, @arguments )
Handles the request.
=cut
sub handler {
- my ( $class, $engine ) = @_;
+ my ( $class, @arguments ) = @_;
# Always expect worst case!
my $status = -1;
my @stats = ();
my $handler = sub {
- my $c = $class->prepare($engine);
+ my $c = $class->prepare(@arguments);
$c->{stats} = \@stats;
$c->dispatch;
return $c->finalize;
return $status;
}
-=item $c->prepare($engine)
+=item $c->prepare(@arguments)
Turns the engine-specific request( Apache, CGI ... )
into a Catalyst context .
=cut
sub prepare {
- my ( $class, $engine ) = @_;
+ my ( $class, @arguments ) = @_;
my $c = bless {
counter => {},
$c->res->headers->header( 'X-Catalyst' => $Catalyst::VERSION );
}
- $c->prepare_request($engine);
+ $c->prepare_request(@arguments);
$c->prepare_connection;
$c->prepare_headers;
$c->prepare_cookies;
use CGI;
+__PACKAGE__->mk_accessors('cgi');
+
=head1 NAME
Catalyst::Engine::CGI - The CGI Engine
The performance of this way of using Catalyst is not expected to be
useful in production applications, but it may be helpful for development.
+=head1 METHODS
+
+=over 4
+
+=item $c->cgi
+
+Contains the C<CGI> object.
+
+=back
+
=head1 OVERLOADED METHODS
This class overloads some methods from C<Catalyst::Engine::CGI::Base>.
use APR::Request::CGI;
use APR::Request::Param;
+__PACKAGE__->mk_accessors('apr');
+
=head1 NAME
Catalyst::Engine::CGI::APR - The CGI APR Engine
=head1 DESCRIPTION
-This Catalyst engine uses C<APR::Request> for parsing of message body.
+This Catalyst engine uses C<APR::Request::CGI> for parsing of message body.
+
+=head1 METHODS
+
+=over 4
+
+=item $c->apr
+
+Contains the C<APR::Request::CGI> object.
+
+=back
=head1 OVERLOADED METHODS
my @params;
- $c->cgi->param->do( sub {
+ $c->apr->param->do( sub {
my ( $field, $value ) = @_;
push( @params, $field, $value );
return 1;
sub prepare_request {
my $c = shift;
- $c->cgi( APR::Request::CGI->new( APR::Pool->new ) );
+ $c->apr( APR::Request::CGI->handle( APR::Pool->new ) );
}
=item $c->prepare_uploads
my @uploads;
- $c->cgi->upload->do( sub {
+ $c->apr->upload->do( sub {
my ( $field, $upload ) = @_;
my $object = Catalyst::Request::Upload->new(
=head1 SEE ALSO
-L<Catalyst>, L<Catalyst::Engine>, L<Catalyst::Engine::CGI::Base>,
-sL<APR::Request>.
+L<Catalyst>, L<APR::Request::CGI>, L<Catalyst::Engine::CGI::Base>.
=head1 AUTHOR
use strict;
use base 'Catalyst::Engine';
-use IO::File ();
use URI;
use URI::http;
-__PACKAGE__->mk_accessors('cgi');
-
=head1 NAME
Catalyst::Engine::CGI::Base - Base class for CGI Engines
This is a base class for CGI engines.
-=head1 METHODS
-
-=over 4
-
-=item $c->cgi
-
-This config parameter contains the C<CGI> object.
-
-=back
-
=head1 OVERLOADED METHODS
This class overloads some methods from C<Catalyst::Engine>.
sub prepare_body {
my $c = shift;
- my $handle = IO::File->new_from_fd( fileno(STDIN), IO::File::O_RDONLY );
- my $body = undef;
+ my $body = undef;
- while ( $handle->sysread( my $buffer, 8192 ) ) {
+ while ( read( STDIN, my $buffer, 8192 ) ) {
$body .= $buffer;
}
This is the Catalyst engine for FastCGI.
+=head1 OVERLOADED METHODS
+
+This class overloads some methods from C<Catalyst::Engine::FastCGI::Base>.
+
+=over 4
+
+=item $c->prepare_body
+
+=cut
+
+sub prepare_body {
+ shift->Catalyst::Engine::CGI::prepare_body(@_);
+}
+
+=item $c->prepare_parameters
+
+=cut
+
+sub prepare_parameters {
+ shift->Catalyst::Engine::CGI::prepare_parameters(@_);
+}
+
+=item $c->prepare_request
+
+=cut
+
+sub prepare_request {
+ my ( $c, $fastcgi, @arguments ) = @_;
+ $c->SUPER::prepare_request($fastcgi);
+ $c->Catalyst::Engine::CGI::prepare_request(@arguments);
+}
+
+=item $c->prepare_uploads
+
+=cut
+
+sub prepare_uploads {
+ shift->Catalyst::Engine::CGI::prepare_uploads(@_);
+}
+
=head1 SEE ALSO
-L<Catalyst>, L<Catalyst::Engine::CGI>.
+L<Catalyst>, L<Catalyst::Engine::FastCGI::Base>, L<Catalyst::Engine::CGI>.
=head1 AUTHOR
This is the Catalyst engine for FastCGI and APR.
+=head1 OVERLOADED METHODS
+
+This class overloads some methods from C<Catalyst::Engine::FastCGI::Base>.
+
+=over 4
+
+=item $c->prepare_body
+
+=cut
+
+sub prepare_body {
+ shift->Catalyst::Engine::CGI::APR::prepare_body(@_);
+}
+
+=item $c->prepare_parameters
+
+=cut
+
+sub prepare_parameters {
+ shift->Catalyst::Engine::CGI::APR::prepare_parameters(@_);
+}
+
+=item $c->prepare_request
+
+=cut
+
+sub prepare_request {
+ my ( $c, $fastcgi, @arguments ) = @_;
+ $c->SUPER::prepare_request($fastcgi);
+ $c->Catalyst::Engine::CGI::APR::prepare_request(@arguments);
+}
+
+=item $c->prepare_uploads
+
+=cut
+
+sub prepare_uploads {
+ shift->Catalyst::Engine::CGI::APR::prepare_uploads(@_);
+}
+
=head1 SEE ALSO
-L<Catalyst>, L<Catalyst::Engine::CGI::APR>.
+L<Catalyst>, L<Catalyst::Engine::FastCGI::Base>, L<Catalyst::Engine::CGI::APR>.
=head1 AUTHOR
package Catalyst::Engine::FastCGI::Base;
use strict;
+use base 'Catalyst::Engine::CGI::Base';
+
use FCGI;
+__PACKAGE__->mk_accessors('fastcgi');
+
=head1 NAME
Catalyst::Engine::FastCGI::Base - Base class for FastCGI Engines
=over 4
+=item $c->fastcgi
+
+Contains the C<FCGI::Request> object.
+
+=back
+
+=head1 OVERLOADED METHODS
+
+This class overloads some methods from C<Catalyst::Engine::CGI::Base>.
+
+=over 4
+
+=item $c->prepare_request
+
+=cut
+
+sub prepare_request {
+ my ( $c, $fastcgi ) = @_;
+ $c->fastcgi($fastcgi);
+}
+
=item $c->run
=cut
sub run {
- my $class = shift;
+ my ( $class, @arguments ) = @_;
+
my $request = FCGI::Request();
- while ( $request->Accept() >= 0 ) {
- $class->handler;
+
+ while ( $request->Accept >= 0 ) {
+ $class->handler( $request, @arguments );
}
}
=head1 SEE ALSO
-L<Catalyst>.
+L<Catalyst>, L<FCGI>, L<Catalyst::Engine::CGI::Base>.
=head1 AUTHOR
my $class = shift;
my $port = shift || 3000;
- my $daemon = Catalyst::Engine::HTTP::Base::struct->new(
+ my $daemon = Catalyst::Engine::HTTP::Catalyst->new(
Listen => SOMAXCONN,
LocalPort => $port,
ReuseAddr => 1,
--- /dev/null
+package Catalyst::Engine::SpeedyCGI;
+
+use strict;
+use base qw(Catalyst::Engine::SpeedyCGI::Base Catalyst::Engine::CGI);
+
+=head1 NAME
+
+Catalyst::Engine::SpeedyCGI - Catalyst SpeedyCGI Engine
+
+=head1 SYNOPSIS
+
+A script using the Catalyst::Engine::SpeedyCGI module might look like:
+
+ #!/usr/bin/speedy -w
+
+ BEGIN {
+ $ENV{CATALYST_ENGINE} = 'SpeedyCGI';
+ }
+
+ use strict;
+ use lib '/path/to/MyApp/lib';
+ use MyApp;
+
+ MyApp->run;
+
+=head1 DESCRIPTION
+
+This is the Catalyst engine for SpeedyCGI.
+
+=head1 OVERLOADED METHODS
+
+This class overloads some methods from C<Catalyst::Engine::SpeedyCGI::Base>.
+
+=over 4
+
+=item $c->prepare_body
+
+=cut
+
+sub prepare_body {
+ shift->Catalyst::Engine::CGI::prepare_body(@_);
+}
+
+=item $c->prepare_parameters
+
+=cut
+
+sub prepare_parameters {
+ shift->Catalyst::Engine::CGI::prepare_parameters(@_);
+}
+
+=item $c->prepare_request
+
+=cut
+
+sub prepare_request {
+ my ( $c, $speedycgi, @arguments ) = @_;
+ $c->SUPER::prepare_request($speedycgi);
+ $c->Catalyst::Engine::CGI::prepare_request(@arguments);
+}
+
+=item $c->prepare_uploads
+
+=cut
+
+sub prepare_uploads {
+ shift->Catalyst::Engine::CGI::prepare_uploads(@_);
+}
+
+=head1 SEE ALSO
+
+L<Catalyst>, L<Catalyst::Engine::SpeedyCGI::Base>, L<Catalyst::Engine::CGI>.
+
+=head1 AUTHOR
+
+Sebastian Riedel, C<sri@cpan.org>
+Christian Hansen, C<ch@ngmedia.com>
+
+=head1 COPYRIGHT
+
+This program is free software, you can redistribute it and/or modify it under
+the same terms as Perl itself.
+
+=cut
+
+1;
--- /dev/null
+package Catalyst::Engine::SpeedyCGI::Base;
+
+use strict;
+use base 'Catalyst::Engine::CGI::Base';
+
+use CGI::SpeedyCGI;
+
+__PACKAGE__->mk_accessors('speedycgi');
+
+=head1 NAME
+
+Catalyst::Engine::SpeedyCGI::Base - Base class for SpeedyCGI Engines
+
+=head1 DESCRIPTION
+
+This is a base class for SpeedyCGI engines.
+
+=head1 METHODS
+
+=over 4
+
+=item $c->speedycgi
+
+Contains the C<CGI::SpeedyCGI> object.
+
+=back
+
+=head1 OVERLOADED METHODS
+
+This class overloads some methods from C<Catalyst::Engine::CGI::Base>.
+
+=over 4
+
+=item $c->prepare_request
+
+=cut
+
+sub prepare_request {
+ my ( $c, $speedycgi ) = @_;
+ $c->speedycgi($speedycgi);
+}
+
+=item $c->run
+
+=cut
+
+sub run {
+ my ( $class, @arguments ) = @_;
+ $class->handler( CGI::SpeedyCGI->new, @arguments );
+}
+
+=back
+
+=head1 SEE ALSO
+
+L<Catalyst>, L<CGI::SpeedyCGI>, L<Catalyst::Engine::CGI::Base>.
+
+=head1 AUTHOR
+
+Sebastian Riedel, C<sri@cpan.org>
+Christian Hansen, C<ch@ngmedia.com>
+
+=head1 COPYRIGHT
+
+This program is free software, you can redistribute it and/or modify it under
+the same terms as Perl itself.
+
+=cut
+
+1;