AnyEvent-Plackup
view release on metacpan or search on metacpan
lib/AnyEvent/Plackup.pm view on Meta::CPAN
use warnings;
use 5.008_001;
use overload (
'""' => 'origin',
fallback => 1
);
use AnyEvent;
use Twiggy::Server;
use Net::EmptyPort qw(empty_port);
use Scalar::Util qw(weaken);
use Carp;
use Class::Accessor::Lite (
ro => [
'host', 'port',
'ready_cv', 'request_cv',
'twiggy',
],
);
lib/AnyEvent/Plackup.pm view on Meta::CPAN
}
sub origin {
my $self = shift;
return sprintf "http://%s:%s", $self->host, $self->port;
}
sub _run {
my $self = shift;
weaken $self;
$self->{ready_cv} = AE::cv;
my $app = $self->{app} || $self->_mk_default_app;
my $twiggy = Twiggy::Server->new(
port => $self->{port} || empty_port(),
%{ $self->{args} || {} },
server_ready => sub {
my $args = shift;
lib/AnyEvent/Plackup.pm view on Meta::CPAN
$self->{twiggy} = $twiggy;
}
sub _mk_default_app {
my $self = shift;
$self->{request_cv} = AE::cv;
$self->{request_queue} = [];
weaken $self;
require AnyEvent::Plackup::Request;
return sub {
my ($env) = @_;
my $req = AnyEvent::Plackup::Request->new($env);
push @{ $self->{request_queue} }, $req;
$self->{request_cv}->send if $self->{request_cv};
( run in 0.358 second using v1.01-cache-2.11-cpan-65fba6d93b7 )