Net-Async-HTTP-Server
view release on metacpan or search on metacpan
lib/Net/Async/HTTP/Server.pm view on Meta::CPAN
}
=head2 make_request
$request = $server->make_request( @args );
Invoked by the protocol stream handler to create a new request object
representing an incoming request. This is provided as a method for subclasses
to overload, if they wish to represent requests with subclasses of the basic
request representation.
=cut
sub make_request
{
my $self = shift;
return $self->{request_class}->new( @_ );
}
sub _received_request
{
my $self = shift;
my ( $request ) = @_;
if( $metrics ) {
$metrics->inc_gauge( requests_in_flight => );
$metrics->inc_counter( requests => [ method => $request->method ] );
$self->{request_received_timestamp}{$request} = $self->loop->time;
}
$self->invoke_event( on_request => $request );
}
sub _done_request
{
my $self = shift;
my ( $request ) = @_;
if( $metrics ) {
my $received_timestamp = delete $self->{request_received_timestamp}{$request};
$metrics->dec_gauge( requests_in_flight => );
$metrics->inc_counter( responses => [ method => $request->method, code => $request->response_status_code ] );
$metrics->report_timer( request_duration => $self->loop->time - $received_timestamp );
$metrics->report_distribution( response_bytes => $request->bytes_written );
}
}
=head1 TODO
=over 2
=item *
Don't use L<HTTP::Message> objects as underlying implementation
=item *
Consider how to do streaming request inbound
=item *
Lots more testing
=back
=cut
=head1 AUTHOR
Paul Evans <leonerd@leonerd.org.uk>
=cut
0x55AA;
( run in 1.188 second using v1.01-cache-2.11-cpan-98e64b0badf )