2013-12-14 15:50:30 +01:00
|
|
|
nghttp2 Python C extension module
|
|
|
|
=================================
|
|
|
|
|
|
|
|
This directory contains nghttp2 Python C extension module. Currently,
|
|
|
|
header compressor and decompressor are implemented in extension using
|
|
|
|
cython.
|
|
|
|
|
|
|
|
This is experimental and adds some dependencies which is a bit hard to
|
2013-12-19 17:35:59 +01:00
|
|
|
check, so this extension module does not built with usual ``make`` in
|
|
|
|
the top directory. Instead, a user has to run ``make build_ext`` in
|
|
|
|
this directory.
|
2013-12-14 15:50:30 +01:00
|
|
|
|
|
|
|
The build extension module is called ``nghttp2``.
|
|
|
|
|
|
|
|
The module refers to the libnghttp2.so. If nghttp2 is installed using
|
|
|
|
``make install``, then importing nghttp2 module should work. If a
|
|
|
|
user does not want to install nghttp2, then use ``LD_LIBRARY_PATH``
|
|
|
|
pointing to the location of libnghttp2.so, which is usually in
|
|
|
|
``lib/.libs``. If a user also does not want to install nghttp2 module,
|
|
|
|
use PYTHONPATH to point the location of extension module. This depends
|
|
|
|
on the architecture and Python version. For example, x86_64
|
|
|
|
architecture and Python 2.7 series, a module will be located at
|
|
|
|
``build/lib.linux-x86_64-2.7``.
|
|
|
|
|
|
|
|
Header compression
|
|
|
|
------------------
|
|
|
|
|
|
|
|
The following example code illustrates basic usage of compressor and
|
|
|
|
decompressor::
|
|
|
|
|
|
|
|
import binascii
|
|
|
|
import nghttp2
|
|
|
|
|
|
|
|
deflater = nghttp2.HDDeflater(nghttp2.HD_SIDE_REQUEST)
|
|
|
|
inflater = nghttp2.HDInflater(nghttp2.HD_SIDE_REQUEST)
|
|
|
|
|
|
|
|
data = deflater.deflate([(b'foo', b'bar'),
|
|
|
|
(b'baz', b'buz')])
|
|
|
|
print(binascii.b2a_hex(data))
|
2013-12-19 17:35:59 +01:00
|
|
|
|
|
|
|
hdrs = inflater.inflate(data)
|
|
|
|
print(hdrs)
|