SYNOPSIS

    use Coro;
    use base qw/Net::Server::Coro/;

    _\|_PACKAGE_\|_->new->run;

    sub process_request {
       ...
       cede;
       ...
    }

DESCRIPTION

Net::Server::Coro implements multithreaded server for the Net::Server architecture, using Coro and Coro::Socket to make all reads and writes non-blocking. Additionally, it supports non-blocking \s-1SSL\s0 negotiation.

METHODS

Most methods are inherited from Net::Server \*(-- see it for further usage details.

new

Create new Net::Server::Coro object. It accepts these parameters (in addition to Net::Server parameters):

server_cert

Path to the \s-1SSL\s0 certificate that the server should use. This can be either relative or absolute path. Defaults to certs/server-cert.pem

server_key

Path to the \s-1SSL\s0 certificate key that the server should use. This can be either relative or absolute path. Defaults to certs/server-key.pem

proto_object \s-1HOST\s0, \s-1PORT\s0, \s-1PROTO\s0

Wraps socket creation, turning all socket types into Net::Server::Proto::Coro objects.

loop

The main loop uses starts a number of Coro coroutines:

  • One for each listening socket.

  • One for each active connection. Since these may respawn on a firlay frequent basis, \*(L"async_pool\*(R" in Coro is used to maintain a pool of coroutines.

  • An AnyEvent infinite wait, which equates to the \*(L"run the event loop.\*(R"

server_cert [\s-1PATH\s0]

Gets or sets the path of the \s-1SSL\s0 certificate used by the server.

server_key [\s-1PATH\s0]

Gets or sets the path of the \s-1SSL\s0 key file used by the server.

DEPENDENCIES

Coro, AnyEvent, Net::Server

BUGS AND LIMITATIONS

The client filehandle, socket, and peer information all use Coro::Specific in order to constrain their information to their coroutine. Attempting to access them from a different coroutine will yield possibly unexpected results.

Generally, all those of Coro. Please report any bugs or feature requests specific to Net::Server::Coro to \*(C`[email protected]\*(C', or through the web interface at <http://rt.cpan.org>.

AUTHORS

Alex Vandiver \*(C`<[email protected]>\*(C'; code originally from Audrey Tang \*(C`<[email protected]>\*(C'

COPYRIGHT

Copyright 2006 by Audrey Tang <[email protected]>

Copyright 2007-2008 by Best Practical Solutions

This software is released under the \s-1MIT\s0 license cited below. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \*(L"Software\*(R"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

\s-1THE\s0 \s-1SOFTWARE\s0 \s-1IS\s0 \s-1PROVIDED\s0 \*(L"\s-1AS\s0 \s-1IS\s0\*(R", \s-1WITHOUT\s0 \s-1WARRANTY\s0 \s-1OF\s0 \s-1ANY\s0 \s-1KIND\s0, \s-1EXPRESS\s0 \s-1OR\s0 \s-1IMPLIED\s0, \s-1INCLUDING\s0 \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 \s-1TO\s0 \s-1THE\s0 \s-1WARRANTIES\s0 \s-1OF\s0 \s-1MERCHANTABILITY\s0, \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0 \s-1AND\s0 \s-1NONINFRINGEMENT\s0. \s-1IN\s0 \s-1NO\s0 \s-1EVENT\s0 \s-1SHALL\s0 \s-1THE\s0 \s-1AUTHORS\s0 \s-1OR\s0 \s-1COPYRIGHT\s0 \s-1HOLDERS\s0 \s-1BE\s0 \s-1LIABLE\s0 \s-1FOR\s0 \s-1ANY\s0 \s-1CLAIM\s0, \s-1DAMAGES\s0 \s-1OR\s0 \s-1OTHER\s0 \s-1LIABILITY\s0, \s-1WHETHER\s0 \s-1IN\s0 \s-1AN\s0 \s-1ACTION\s0 \s-1OF\s0 \s-1CONTRACT\s0, \s-1TORT\s0 \s-1OR\s0 \s-1OTHERWISE\s0, \s-1ARISING\s0 \s-1FROM\s0, \s-1OUT\s0 \s-1OF\s0 \s-1OR\s0 \s-1IN\s0 \s-1CONNECTION\s0 \s-1WITH\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1OR\s0 \s-1THE\s0 \s-1USE\s0 \s-1OR\s0 \s-1OTHER\s0 \s-1DEALINGS\s0 \s-1IN\s0 \s-1THE\s0 \s-1SOFTWARE\s0.