/usr/share/perl5/Protocol/HTTP2.pm is in libprotocol-http2-perl 1.08-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | package Protocol::HTTP2;
use 5.008005;
use strict;
use warnings;
our $VERSION = "1.08";
sub ident_plain {
'h2c';
}
sub ident_tls {
'h2';
}
1;
__END__
=encoding utf-8
=head1 NAME
Protocol::HTTP2 - HTTP/2 protocol implementation (RFC 7540)
=head1 SYNOPSIS
use Protocol::HTTP2;
# get protocol identification string for secure connections
print Protocol::HTTP2::ident_tls; # h2
# get protocol identification string for non-secure connections
print Protocol::HTTP2::ident_plain; # h2c
=head1 DESCRIPTION
Protocol::HTTP2 is HTTP/2 protocol implementation (RFC 7540) with stateful
decoders/encoders of HTTP/2 frames. You may use this module to implement your
own HTTP/2 client/server/intermediate on top of your favorite event loop over
plain or tls socket (see examples).
=head1 STATUS
Current status - beta. Structures, module names and methods seems like stable.
I've started this project to understand internals of HTTP/2 and may be it will
never become production, but at least it works.
| Spec | status |
| ----------------------- | --------------- |
| Negotiation | ALPN, NPN, |
| | Upgrade, direct |
| Preface | + |
| Headers (de)compression | + |
| Stream states | + |
| Flow control | ± |
| Stream priority | ± |
| Server push | + |
| Connect method | - |
| Frame | encoder | decoder |
| --------------- |:-------:|:-------:|
| DATA | ± | + |
| HEADERS | + | + |
| PRIORITY | + | + |
| RST_STREAM | + | + |
| SETTINGS | + | + |
| PUSH_PROMISE | + | + |
| PING | + | + |
| GOAWAY | + | + |
| WINDOW_UPDATE | + | + |
| CONTINUATION | ± | + |
=over
=item - -- not implemeted
=item ± -- incomplete
=item + -- implemented (may even work)
=back
=head1 MODULES
=head2 L<Protocol::HTTP2::Client>
Client protocol decoder/encoder with constructor of requests
=head2 L<Protocol::HTTP2::Server>
Server protocol decoder/encoder with constructor of responses/pushes
=head2 L<Protocol::HTTP2::Connection>
Main low level module for protocol logic and state processing. Connection
object is a mixin of L<Protocol::HTTP2::Frame> (frame encoding/decoding),
L<Protocol::HTTP2::Stream> (stream operations) and L<Protocol::HTTP2::Upgrade>
(HTTP/1.1 Upgrade support)
=head2 L<Protocol::HTTP2::HeaderCompression>
Module implements HPACK - Header Compression for HTTP/2 (RFC 7541).
L<https://tools.ietf.org/html/rfc7541>
=head2 L<Protocol::HTTP2::Constants>
Module contains all defined in HTTP/2 protocol constants and default values
=head2 L<Protocol::HTTP2::Trace>
Module for debugging. You can setup HTTP2_DEBUG environment variable to change
verbosity of the module (output to STDOUT). Default level is error.
$ export HTTP2_DEBUG=debug
$ perl ./http2_program
=head1 SEE ALSO
L<https://github.com/vlet/p5-Protocol-HTTP2/wiki> - Protocol::HTTP2 wiki
L<http://http2.github.io/> - official HTTP/2 specification site
L<http://daniel.haxx.se/http2/> - http2 explained
=head1 LICENSE
Copyright (C) Vladimir Lettiev.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=head1 AUTHOR
Vladimir Lettiev E<lt>thecrux@gmail.comE<gt>
=cut
|