Continuity
view release on metacpan or search on metacpan
lib/Continuity/Adapt/PSGI.pm view on Meta::CPAN
package Continuity::Adapt::PSGI;
=head1 NAME
Continuity::Adapt::PSGI - PSGI backend for Continuity
=head1 SYNOPSIS
# Run with on of these:
# corona demo.pl
# twiggy demo.pl
# ./myapp.pl # Will try to fall back to HttpDaemon ;)
# "Twiggy is a lightweight and fast HTTP server"
# "Corona is a Coro based Plack web server. It uses Net::Server::Coro under the hood"
use Continuity;
my $server = Continuity->new;
sub main {
my $request = shift;
my $i = 0;
while(++$i) {
$request->print("Hello number $i!");
$request->next;
}
}
# This is actually returning a subref to PSI/Plack
# So put it at the end
$server->loop;
=cut
use strict;
use warnings;
use Continuity::Request;
use base 'Continuity::Request';
use Coro;
use Coro::Channel;
use Plack;
use Plack::App::File; # use this now; no surprises for later
warn "tested against Plack 0.9938; you have $Plack::VERSION" if $Plack::VERSION < 0.9938;
sub debug_level { exists $_[1] ? $_[0]->{debug_level} = $_[1] : $_[0]->{debug_level} }
sub debug_callback { exists $_[1] ? $_[0]->{debug_callback} = $_[1] : $_[0]->{debug_callback} }
sub docroot { exists $_[1] ? $_[0]->{docroot} = $_[1] : $_[0]->{docroot} }
sub new {
my $class = shift;
bless {
first_request => 1,
debug_level => 1,
debug_callback => sub { print STDERR "@_\n" },
request_queue => Coro::Channel->new(),
@_
}, $class;
}
sub get_request {
# called from Continuity's main loop (new calls start_request_loop; start_request_loop gets requests from here or wherever and passes them to the mapper)
my ($self) = @_;
my $request = $self->{request_queue}->get or die;
return $request;
( run in 0.548 second using v1.01-cache-2.11-cpan-39bf76dae61 )