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 )