<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package Plack::Handler;
use strict;

1;

__END__

=head1 NAME

Plack::Handler - Connects PSGI applications and Web servers

=head1 SYNOPSIS

  package Plack::Handler::AwesomeWebServer;
  sub new {
      my($class, %opt) = @_;
      ...
      return $self;
  }

  sub run {
      my($self, $app) = @_;
      # launch the AwesomeWebServer and run $app in the loop
  }

  # then from command line
  plackup -s AwesomeWebServer -a app.psgi

=head1 DESCRIPTION

Plack::Handler defines an adapter (connector) interface to adapt
L&lt;plackup&gt; and L&lt;Plack::Runner&gt; to various PSGI web servers, such as
Apache2 for mod_perl and Standalone for L&lt;HTTP::Server::PSGI&gt;.

It is an empty class, and as long as they implement the methods
defined as an Server adapter interface, they do not need to inherit
Plack::Handler.

If you write a new handler for existing web servers, I recommend you
to include the full name of the server module after I&lt;Plack::Handler&gt;
prefix, like L&lt;Plack::Handler::Net::Server::Coro&gt; if you write a
handler for L&lt;Net::Server::Coro&gt;. That way you'll be using plackup
command line option like:

  plackup -s Net::Server::Coro

that makes it easy to figure out which web server you're going to use.

=head1 METHODS

=over 4

=item new

  $server = FooBarServer-&gt;new(%args);

Creates a new adapter object. I&lt;%args&gt; can take arbitrary parameters
to configure server environments but common parameters are:

=over 8

=item port

Port number the server listens to.

=item host

Address the server listens to. Set to undef to listen any interface.

=back

=item run

  $server-&gt;run($app);

Starts the server process and when a request comes in, run the PSGI
application passed in C&lt;$app&gt; in the loop.

=item register_service

  $server-&gt;register_service($app);

Optional interface if your server should run in parallel with other
event loop, particularly L&lt;AnyEvent&gt;. This is the same as C&lt;run&gt; but
doesn't run the main loop.

=back

=head1 SEE ALSO

rackup

=cut

</pre></body></html>