?? http.pm
字號:
package PunJab::Server::HTTP;use warnings;use strict;use POE qw/ Component::Server::TCP Filter::HTTPD /;use HTTP::Date;use HTTP::Status;use File::Spec;use Exporter();use PunJab::Util;sub new(){ my ($class, $config, $handler, $streamer, $error, $alias, $filter) = @_; die "handler must be a coderef" if defined($handler) and ref($handler) ne 'CODE'; die "streamer must be a coderef" if defined($streamer) and ref($streamer) ne 'CODE'; die "error must be a coderef" if defined($error) and ref($error) ne 'CODE'; $alias = 'web_server' if not defined $alias; $filter = 'POE::Filter::HTTPD' if not defined $filter; POE::Component::Server::TCP->new( Alias => $alias, Port => $config->{'port'}, ClientFilter => $filter, ClientInput => $handler, ClientFlushed => $streamer, ClientError => $error, #ClientShutdownOnError => 1, InlineStates => { 'send_response' => \&send_response, }, #SessionParams => [ options => { debug => $config->{'debug'}, # trace => $config->{'debug'}, } ], );}sub http_error(){ my ($syscall_name, $error_number, $error_string) = @_[ARG0, ARG1, ARG2]; warn $syscall_name; warn $error_number; warn "Error : ".$error_string;}sub send_response(){ my ( $kernel, $heap) = @_[ KERNEL, HEAP]; my $response = $_[ARG1]->[0]; my $stream = $_[ARG1]->[1]; my $buffer = $_[ARG1]->[2]; $heap->{client}->put($response) if defined $heap->{client} and defined $heap->{'stream_count'} and $heap->{'stream_count'} == 0; $heap->{buffer} = $buffer if defined $stream and defined $buffer; if (defined $heap->{'stream_count'} and $heap->{'stream_count'} > 0) { $heap->{client}->put("\n") if defined $heap->{'client'}; &debug("we died") if not defined $heap->{'client'}; } else { $kernel->yield("shutdown") if not defined $stream; } return;}1;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -