Arriba
view release on metacpan or search on metacpan
lib/Arriba/Connection/HTTP.pm view on Meta::CPAN
use Data::Dump qw(dump);
use HTTP::Status qw(status_message);
use IO::Socket qw(:crlf);
use Plack::Util;
use Socket qw(IPPROTO_TCP TCP_NODELAY);
use base 'Arriba::Connection';
sub new {
my $class = shift;
my $self = $class->SUPER::new(@_);
if ($self->{client}->NS_proto eq 'TCP') {
setsockopt($self->{client}, IPPROTO_TCP, TCP_NODELAY, 1)
or die $!;
}
$self->{_inputbuf} = '';
$self->{_current_req} = undef;
$self->{_keepalive} = 1;
lib/Arriba/Connection/SPDY.pm view on Meta::CPAN
} else {
die 'Unknown frame type '.$frame{type};
}
return %frame;
};
}
sub new {
my $class = shift;
my $self = $class->SUPER::new(@_);
$self->{_spdy} = {
session => Net::SPDY::Session->new($self->{client}),
streams => {},
};
return $self;
}
sub read_request {
lib/Arriba/Server.pm view on Meta::CPAN
proto => 'unix',
);
}
push @port, \%listen;
}
my $workers = $options->{workers} || 5;
local @ARGV = ();
$self->SUPER::run(
port => \@port,
host => '*',
proto => $options->{ssl} ? 'ssl' : 'tcp',
serialize => 'flock',
log_level => DEBUG ? 4 : 2,
($options->{error_log} ? ( log_file => $options->{error_log} ) : () ),
min_servers => $options->{min_servers} || $workers,
min_spare_servers => $options->{min_spare_servers} || $workers - 1,
max_spare_servers => $options->{max_spare_servers} || $workers - 1,
max_servers => $options->{max_servers} || $workers,
lib/Arriba/Server.pm view on Meta::CPAN
# FIXME: Is this (configure_hook) the best place for this?
if ($self->{options}->{listen_ssl}) {
$self->{server}->{ssl_args}->{SSL_key_file} =
$self->{options}->{ssl_key_file};
$self->{server}->{ssl_args}->{SSL_cert_file} =
$self->{options}->{ssl_cert_file};
}
$self->SUPER::configure_hook(@_);
}
sub pre_bind {
my $self = shift;
$self->SUPER::pre_bind(@_);
if ($self->{options}->{spdy}) {
# Enable SPDY on SSL sockets
for my $sock (@{$self->{server}->{sock}}) {
if ($sock->NS_proto eq 'SSL') {
$sock->SSL_npn_protocols(['spdy/3']);
}
}
}
}
lib/Arriba/Server.pm view on Meta::CPAN
$self->hup_children;
while (1) {
Net::Server::SIG::check_sigs();
$self->coordinate_children;
last if !keys %{$self->{server}{children}};
sleep 1;
}
$self->log(2, $self->log_time . " Worker processes cleaned up\n");
}
$self->SUPER::server_close();
}
sub run_parent {
my $self = shift;
$0 = "arriba master " . join(" ", @{$self->{options}{argv} || []});
no warnings 'redefine';
local *Net::Server::PreFork::register_sig = sub {
my %args = @_;
delete $args{QUIT};
Net::Server::SIG::register_sig(%args);
};
$self->SUPER::run_parent(@_);
}
sub child_init_hook {
my $self = shift;
srand();
if ($self->{options}->{psgi_app_builder}) {
$self->{app} = $self->{options}->{psgi_app_builder}->();
}
$0 = "arriba worker " . join(" ", @{$self->{options}{argv} || []});
}
( run in 0.351 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )