Update doc

This commit is contained in:
Tatsuhiro Tsujikawa 2013-12-09 00:07:37 +09:00
parent 6f0e7e2b46
commit 760a522e01
7 changed files with 184 additions and 349 deletions

View File

@ -1231,41 +1231,41 @@ Functions
or more times to receive frame header.
2. If the frame is DATA frame:
2.1. :member:`nghttp2_session_callbacks.recv_callback` is invoked
to receive DATA payload. For each chunk of data,
:member:`nghttp2_session_callbacks.on_data_chunk_recv_callback`
is invoked.
2.2. If one DATA frame is completely received,
:member:`nghttp2_session_callbacks.on_data_recv_callback` is
invoked. If the frame is the final frame of the request,
:member:`nghttp2_session_callbacks.on_request_recv_callback`
is invoked. If the reception of the frame triggers the
closure of the stream,
:member:`nghttp2_session_callbacks.on_stream_close_callback`
is invoked.
1. :member:`nghttp2_session_callbacks.recv_callback` is invoked
to receive DATA payload. For each chunk of data,
:member:`nghttp2_session_callbacks.on_data_chunk_recv_callback`
is invoked.
2. If one DATA frame is completely received,
:member:`nghttp2_session_callbacks.on_data_recv_callback` is
invoked. If the frame is the final frame of the request,
:member:`nghttp2_session_callbacks.on_request_recv_callback`
is invoked. If the reception of the frame triggers the
closure of the stream,
:member:`nghttp2_session_callbacks.on_stream_close_callback`
is invoked.
3. If the frame is the control frame:
3.1. :member:`nghttp2_session_callbacks.recv_callback` is invoked
one or more times to receive whole frame.
3.2. If the received frame is valid,
:member:`nghttp2_session_callbacks.on_frame_recv_callback` is
invoked. If the frame is the final frame of the request,
:member:`nghttp2_session_callbacks.on_request_recv_callback`
is invoked. If the reception of the frame triggers the
closure of the stream,
:member:`nghttp2_session_callbacks.on_stream_close_callback`
is invoked.
3.3. If the received frame is unpacked but is interpreted as
invalid,
:member:`nghttp2_session_callbacks.on_invalid_frame_recv_callback`
is invoked.
3.4. If the received frame could not be unpacked correctly,
:member:`nghttp2_session_callbacks.on_frame_recv_parse_error_callback`
is invoked.
3.5. If the received frame type is unknown,
:member:`nghttp2_session_callbacks.on_unknown_frame_recv_callback`
is invoked.
1. :member:`nghttp2_session_callbacks.recv_callback` is invoked
one or more times to receive whole frame.
2. If the received frame is valid,
:member:`nghttp2_session_callbacks.on_frame_recv_callback` is
invoked. If the frame is the final frame of the request,
:member:`nghttp2_session_callbacks.on_request_recv_callback`
is invoked. If the reception of the frame triggers the
closure of the stream,
:member:`nghttp2_session_callbacks.on_stream_close_callback`
is invoked.
3. If the received frame is unpacked but is interpreted as
invalid,
:member:`nghttp2_session_callbacks.on_invalid_frame_recv_callback`
is invoked.
4. If the received frame could not be unpacked correctly,
:member:`nghttp2_session_callbacks.on_frame_recv_parse_error_callback`
is invoked.
5. If the received frame type is unknown,
:member:`nghttp2_session_callbacks.on_unknown_frame_recv_callback`
is invoked.
This function returns 0 if it succeeds, or one of the following
negative error codes:
@ -1520,7 +1520,7 @@ Functions
Returns string describing the *lib_error_code*. The
*lib_error_code* must be one of the :macro:`nghttp2_error`.
.. function:: int nghttp2_submit_request(nghttp2_session *session, int32_t pri, const char **nv, const nghttp2_data_provider *data_prd, void *stream_user_data)
.. function:: int nghttp2_submit_request(nghttp2_session *session, int32_t pri, const nghttp2_nv *nva, size_t nvlen, const nghttp2_data_provider *data_prd, void *stream_user_data)
Submits HEADERS frame and optionally one or more DATA frames.
@ -1528,27 +1528,20 @@ Functions
The *pri* is priority of this request. 0 is the highest priority
value and :macro:`NGHTTP2_PRI_LOWEST` is the lowest value.
The *nv* contains the name/value pairs. For i >= 0, ``nv[2*i]``
contains a pointer to the name string and ``nv[2*i+1]`` contains a
pointer to the value string. The one beyond last value must be
``NULL``. That is, if the *nv* contains N name/value pairs,
``nv[2*N]`` must be ``NULL``.
The *nva* is an array of name/value pair :type:`nghttp2_nv` with
*nvlen* elements.
HTTP/2.0 specification has requirement about header fields in the
request HEADERS. See the specification for more details.
This function creates copies of all name/value pairs in *nv*. It
also lower-cases all names in *nv*.
The string in *nv* must be NULL-terminated. Use
`nghttp2_submit_request2()` if name/value pairs are not
NULL-terminated strings.
This function creates copies of all name/value pairs in *nva*. It
also lower-cases all names in *nva*.
If *data_prd* is not ``NULL``, it provides data which will be sent
in subsequent DATA frames. In this case, a method that allows
request message bodies
(http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9) must
be specified with ``:method`` key in *nv* (e.g. ``POST``). This
be specified with ``:method`` key in *nva* (e.g. ``POST``). This
function does not take ownership of the *data_prd*. The function
copies the members of the *data_prd*. If *data_prd* is ``NULL``,
HEADERS have END_STREAM set. The *stream_user_data* is data
@ -1572,45 +1565,25 @@ Functions
negative error codes:
:macro:`NGHTTP2_ERR_INVALID_ARGUMENT`
The *pri* is invalid; or the *nv* includes empty name or
``NULL`` value.
The *pri* is invalid; or the *nva* includes empty name, or name
which contains invalid characters.
:macro:`NGHTTP2_ERR_NOMEM`
Out of memory.
.. function:: int nghttp2_submit_request2(nghttp2_session *session, int32_t pri, const nghttp2_nv *nva, size_t nvlen, const nghttp2_data_provider *data_prd, void *stream_user_data)
Just like `nghttp2_submit_request()`, but this function takes the
*nva*, which is an array of ``nghttp2_nv`` with *nvlen* elements,
as name/value pairs. This function is useful if name/value pairs
are not NULL-terminated strings.
This function returns 0 if it succeeds, or one of the following
negative error codes:
:macro:`NGHTTP2_ERR_INVALID_ARGUMENT`
The *pri* is invalid; or the *nva* includes empty name or
name which contains invalid characters.
:macro:`NGHTTP2_ERR_NOMEM`
Out of memory.
.. function:: int nghttp2_submit_response(nghttp2_session *session, int32_t stream_id, const char **nv, const nghttp2_data_provider *data_prd)
.. function:: int nghttp2_submit_response(nghttp2_session *session, int32_t stream_id, const nghttp2_nv *nva, size_t nvlen, const nghttp2_data_provider *data_prd)
Submits response HEADERS frame and optionally one or more DATA
frames against the stream *stream_id*.
The *nv* contains the name/value pairs. For i >= 0, ``nv[2*i]``
contains a pointer to the name string and ``nv[2*i+1]`` contains a
pointer to the value string. The one beyond last value must be
``NULL``. That is, if the *nv* contains N name/value pairs,
``nv[2*N]`` must be ``NULL``.
The *nva* is an array of name/value pair :type:`nghttp2_nv` with
*nvlen* elements.
HTTP/2.0 specification has requirement about header fields in the
response HEADERS. See the specification for more details.
This function creates copies of all name/value pairs in *nv*. It
also lower-cases all names in *nv*.
This function creates copies of all name/value pairs in *nva*. It
also lower-cases all names in *nva*.
If *data_prd* is not ``NULL``, it provides data which will be sent
in subsequent DATA frames. This function does not take ownership
@ -1622,28 +1595,12 @@ Functions
negative error codes:
:macro:`NGHTTP2_ERR_INVALID_ARGUMENT`
The *nv* includes empty name or ``NULL`` value.
The *nva* includes empty name or name which contains invalid
characters.
:macro:`NGHTTP2_ERR_NOMEM`
Out of memory.
.. function:: int nghttp2_submit_response2(nghttp2_session *session, int32_t stream_id, const nghttp2_nv *nva, size_t nvlen, const nghttp2_data_provider *data_prd)
Just like `nghttp2_submit_response()`, but this function takes the
*nva*, which is an array of ``nghttp2_nv`` with *nvlen* elements,
as name/value pairs. This function is useful if name/value pairs
are not NULL-terminated strings.
This function returns 0 if it succeeds, or one of the following
negative error codes:
:macro:`NGHTTP2_ERR_INVALID_ARGUMENT`
The *pri* is invalid; or the *nva* includes empty name or
name which contains invalid characters.
:macro:`NGHTTP2_ERR_NOMEM`
Out of memory.
.. function:: int nghttp2_submit_headers(nghttp2_session *session, uint8_t flags, int32_t stream_id, int32_t pri, const char **nv, void *stream_user_data)
.. function:: int nghttp2_submit_headers(nghttp2_session *session, uint8_t flags, int32_t stream_id, int32_t pri, const nghttp2_nv *nva, size_t nvlen, void *stream_user_data)
Submits HEADERS frame. The *flags* is bitwise OR of the
@ -1666,14 +1623,11 @@ Functions
The *pri* is priority of this request.
The *nv* contains the name/value pairs. For i >= 0, ``nv[2*i]``
contains a pointer to the name string and ``nv[2*i+1]`` contains a
pointer to the value string. The one beyond last value must be
``NULL``. That is, if the *nv* contains N name/value pairs,
``nv[2*N]`` must be ``NULL``.
The *nva* is an array of name/value pair :type:`nghttp2_nv` with
*nvlen* elements.
This function creates copies of all name/value pairs in *nv*. It
also lower-cases all names in *nv*.
This function creates copies of all name/value pairs in *nva*. It
also lower-cases all names in *nva*.
The *stream_user_data* is a pointer to an arbitrary data which is
associated to the stream this frame will open. Therefore it is only
@ -1688,8 +1642,8 @@ Functions
negative error codes:
:macro:`NGHTTP2_ERR_INVALID_ARGUMENT`
The *pri* is invalid; or the *nv* includes empty name or
``NULL`` value.
The *pri* is invalid; or the *nva* includes empty name, or name
which contains invalid characters.
:macro:`NGHTTP2_ERR_NOMEM`
Out of memory.
@ -1775,7 +1729,7 @@ Functions
:macro:`NGHTTP2_ERR_NOMEM`
Out of memory.
.. function:: int nghttp2_submit_push_promise(nghttp2_session *session, uint8_t flags, int32_t stream_id, const char **nv)
.. function:: int nghttp2_submit_push_promise(nghttp2_session *session, uint8_t flags, int32_t stream_id, const nghttp2_nv *nva, size_t nvlen)
Submits PUSH_PROMISE frame. The *flags* is currently ignored and
@ -1785,14 +1739,11 @@ Functions
The *stream_id* must be client initiated stream ID.
The *nv* contains the name/value pairs. For i >= 0, ``nv[2*i]``
contains a pointer to the name string and ``nv[2*i+1]`` contains a
pointer to the value string. The one beyond last value must be
``NULL``. That is, if the *nv* contains N name/value pairs,
``nv[2*N]`` must be ``NULL``.
The *nva* is an array of name/value pair :type:`nghttp2_nv` with
*nvlen* elements.
This function creates copies of all name/value pairs in *nv*. It
also lower-cases all names in *nv*.
This function creates copies of all name/value pairs in *nva*. It
also lower-cases all names in *nva*.
Since the library reorders the frames and tries to send the highest
prioritized one first and the HTTP/2.0 specification requires the
@ -1807,7 +1758,8 @@ Functions
negative error codes:
:macro:`NGHTTP2_ERR_INVALID_ARGUMENT`
The *nv* includes empty name or ``NULL`` value.
The *nva* includes empty name, or name which contains invalid
characters.
:macro:`NGHTTP2_ERR_STREAM_CLOSED`
The stream is already closed or does not exist.
:macro:`NGHTTP2_ERR_NOMEM`

View File

@ -1772,51 +1772,45 @@ callback is invoked:</p>
<ol class="arabic simple">
<li><a class="reference internal" href="#nghttp2_session_callbacks.recv_callback" title="nghttp2_session_callbacks.recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> is invoked one
or more times to receive frame header.</li>
<li>If the frame is DATA frame:</li>
</ol>
<blockquote>
<div><dl class="docutils">
<dt>2.1. <a class="reference internal" href="#nghttp2_session_callbacks.recv_callback" title="nghttp2_session_callbacks.recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> is invoked</dt>
<dd>to receive DATA payload. For each chunk of data,
<li>If the frame is DATA frame:<ol class="arabic">
<li><a class="reference internal" href="#nghttp2_session_callbacks.recv_callback" title="nghttp2_session_callbacks.recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> is invoked
to receive DATA payload. For each chunk of data,
<a class="reference internal" href="#nghttp2_session_callbacks.on_data_chunk_recv_callback" title="nghttp2_session_callbacks.on_data_chunk_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_data_chunk_recv_callback</span></tt></a>
is invoked.</dd>
<dt>2.2. If one DATA frame is completely received,</dt>
<dd><a class="reference internal" href="#nghttp2_session_callbacks.on_data_recv_callback" title="nghttp2_session_callbacks.on_data_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_data_recv_callback</span></tt></a> is
is invoked.</li>
<li>If one DATA frame is completely received,
<a class="reference internal" href="#nghttp2_session_callbacks.on_data_recv_callback" title="nghttp2_session_callbacks.on_data_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_data_recv_callback</span></tt></a> is
invoked. If the frame is the final frame of the request,
<a class="reference internal" href="#nghttp2_session_callbacks.on_request_recv_callback" title="nghttp2_session_callbacks.on_request_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_request_recv_callback</span></tt></a>
is invoked. If the reception of the frame triggers the
closure of the stream,
<a class="reference internal" href="#nghttp2_session_callbacks.on_stream_close_callback" title="nghttp2_session_callbacks.on_stream_close_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_stream_close_callback</span></tt></a>
is invoked.</dd>
</dl>
</div></blockquote>
<ol class="arabic simple" start="3">
<li>If the frame is the control frame:</li>
is invoked.</li>
</ol>
<blockquote>
<div><dl class="docutils">
<dt>3.1. <a class="reference internal" href="#nghttp2_session_callbacks.recv_callback" title="nghttp2_session_callbacks.recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> is invoked</dt>
<dd>one or more times to receive whole frame.</dd>
<dt>3.2. If the received frame is valid,</dt>
<dd><a class="reference internal" href="#nghttp2_session_callbacks.on_frame_recv_callback" title="nghttp2_session_callbacks.on_frame_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_frame_recv_callback</span></tt></a> is
</li>
<li>If the frame is the control frame:<ol class="arabic">
<li><a class="reference internal" href="#nghttp2_session_callbacks.recv_callback" title="nghttp2_session_callbacks.recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.recv_callback</span></tt></a> is invoked
one or more times to receive whole frame.</li>
<li>If the received frame is valid,
<a class="reference internal" href="#nghttp2_session_callbacks.on_frame_recv_callback" title="nghttp2_session_callbacks.on_frame_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_frame_recv_callback</span></tt></a> is
invoked. If the frame is the final frame of the request,
<a class="reference internal" href="#nghttp2_session_callbacks.on_request_recv_callback" title="nghttp2_session_callbacks.on_request_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_request_recv_callback</span></tt></a>
is invoked. If the reception of the frame triggers the
closure of the stream,
<a class="reference internal" href="#nghttp2_session_callbacks.on_stream_close_callback" title="nghttp2_session_callbacks.on_stream_close_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_stream_close_callback</span></tt></a>
is invoked.</dd>
<dt>3.3. If the received frame is unpacked but is interpreted as</dt>
<dd>invalid,
is invoked.</li>
<li>If the received frame is unpacked but is interpreted as
invalid,
<a class="reference internal" href="#nghttp2_session_callbacks.on_invalid_frame_recv_callback" title="nghttp2_session_callbacks.on_invalid_frame_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_invalid_frame_recv_callback</span></tt></a>
is invoked.</dd>
<dt>3.4. If the received frame could not be unpacked correctly,</dt>
<dd><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_frame_recv_parse_error_callback</span></tt>
is invoked.</dd>
<dt>3.5. If the received frame type is unknown,</dt>
<dd><a class="reference internal" href="#nghttp2_session_callbacks.on_unknown_frame_recv_callback" title="nghttp2_session_callbacks.on_unknown_frame_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_unknown_frame_recv_callback</span></tt></a>
is invoked.</dd>
</dl>
</div></blockquote>
is invoked.</li>
<li>If the received frame could not be unpacked correctly,
<tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_frame_recv_parse_error_callback</span></tt>
is invoked.</li>
<li>If the received frame type is unknown,
<a class="reference internal" href="#nghttp2_session_callbacks.on_unknown_frame_recv_callback" title="nghttp2_session_callbacks.on_unknown_frame_recv_callback"><tt class="xref c c-member docutils literal"><span class="pre">nghttp2_session_callbacks.on_unknown_frame_recv_callback</span></tt></a>
is invoked.</li>
</ol>
</li>
</ol>
<p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p>
<dl class="docutils">
@ -2071,27 +2065,21 @@ const char* <tt class="descname">nghttp2_strerror</tt><big>(</big>int<em>&nbsp;l
<dl class="function">
<dt id="nghttp2_submit_request">
int <tt class="descname">nghttp2_submit_request</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, int32_t<em>&nbsp;pri</em>, const char<em>&nbsp;**nv</em>, const <a class="reference internal" href="#nghttp2_data_provider" title="nghttp2_data_provider">nghttp2_data_provider</a><em>&nbsp;*data_prd</em>, void<em>&nbsp;*stream_user_data</em><big>)</big><a class="headerlink" href="#nghttp2_submit_request" title="Permalink to this definition"></a></dt>
int <tt class="descname">nghttp2_submit_request</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, int32_t<em>&nbsp;pri</em>, const <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a><em>&nbsp;*nva</em>, size_t<em>&nbsp;nvlen</em>, const <a class="reference internal" href="#nghttp2_data_provider" title="nghttp2_data_provider">nghttp2_data_provider</a><em>&nbsp;*data_prd</em>, void<em>&nbsp;*stream_user_data</em><big>)</big><a class="headerlink" href="#nghttp2_submit_request" title="Permalink to this definition"></a></dt>
<dd><p>Submits HEADERS frame and optionally one or more DATA frames.</p>
<p>The <em>pri</em> is priority of this request. 0 is the highest priority
value and <a class="reference internal" href="#NGHTTP2_PRI_LOWEST" title="NGHTTP2_PRI_LOWEST"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_PRI_LOWEST</span></tt></a> is the lowest value.</p>
<p>The <em>nv</em> contains the name/value pairs. For i &gt;= 0, <tt class="docutils literal"><span class="pre">nv[2*i]</span></tt>
contains a pointer to the name string and <tt class="docutils literal"><span class="pre">nv[2*i+1]</span></tt> contains a
pointer to the value string. The one beyond last value must be
<tt class="docutils literal"><span class="pre">NULL</span></tt>. That is, if the <em>nv</em> contains N name/value pairs,
<tt class="docutils literal"><span class="pre">nv[2*N]</span></tt> must be <tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
<p>The <em>nva</em> is an array of name/value pair <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_nv</span></tt></a> with
<em>nvlen</em> elements.</p>
<p>HTTP/2.0 specification has requirement about header fields in the
request HEADERS. See the specification for more details.</p>
<p>This function creates copies of all name/value pairs in <em>nv</em>. It
also lower-cases all names in <em>nv</em>.</p>
<p>The string in <em>nv</em> must be NULL-terminated. Use
<a class="reference internal" href="#nghttp2_submit_request2" title="nghttp2_submit_request2"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_request2()</span></tt></a> if name/value pairs are not
NULL-terminated strings.</p>
<p>This function creates copies of all name/value pairs in <em>nva</em>. It
also lower-cases all names in <em>nva</em>.</p>
<p>If <em>data_prd</em> is not <tt class="docutils literal"><span class="pre">NULL</span></tt>, it provides data which will be sent
in subsequent DATA frames. In this case, a method that allows
request message bodies
(<a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9">http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9</a>) must
be specified with <tt class="docutils literal"><span class="pre">:method</span></tt> key in <em>nv</em> (e.g. <tt class="docutils literal"><span class="pre">POST</span></tt>). This
be specified with <tt class="docutils literal"><span class="pre">:method</span></tt> key in <em>nva</em> (e.g. <tt class="docutils literal"><span class="pre">POST</span></tt>). This
function does not take ownership of the <em>data_prd</em>. The function
copies the members of the <em>data_prd</em>. If <em>data_prd</em> is <tt class="docutils literal"><span class="pre">NULL</span></tt>,
HEADERS have END_STREAM set. The <em>stream_user_data</em> is data
@ -2113,26 +2101,8 @@ the stream is already opened,
negative error codes:</p>
<dl class="docutils">
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
<dd>The <em>pri</em> is invalid; or the <em>nv</em> includes empty name or
<tt class="docutils literal"><span class="pre">NULL</span></tt> value.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="nghttp2_submit_request2">
int <tt class="descname">nghttp2_submit_request2</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, int32_t<em>&nbsp;pri</em>, const <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a><em>&nbsp;*nva</em>, size_t<em>&nbsp;nvlen</em>, const <a class="reference internal" href="#nghttp2_data_provider" title="nghttp2_data_provider">nghttp2_data_provider</a><em>&nbsp;*data_prd</em>, void<em>&nbsp;*stream_user_data</em><big>)</big><a class="headerlink" href="#nghttp2_submit_request2" title="Permalink to this definition"></a></dt>
<dd><p>Just like <a class="reference internal" href="#nghttp2_submit_request" title="nghttp2_submit_request"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_request()</span></tt></a>, but this function takes the
<em>nva</em>, which is an array of <tt class="docutils literal"><span class="pre">nghttp2_nv</span></tt> with <em>nvlen</em> elements,
as name/value pairs. This function is useful if name/value pairs
are not NULL-terminated strings.</p>
<p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p>
<dl class="docutils">
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
<dd>The <em>pri</em> is invalid; or the <em>nva</em> includes empty name or
name which contains invalid characters.</dd>
<dd>The <em>pri</em> is invalid; or the <em>nva</em> includes empty name, or name
which contains invalid characters.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd>
</dl>
@ -2140,18 +2110,15 @@ name which contains invalid characters.</dd>
<dl class="function">
<dt id="nghttp2_submit_response">
int <tt class="descname">nghttp2_submit_response</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, int32_t<em>&nbsp;stream_id</em>, const char<em>&nbsp;**nv</em>, const <a class="reference internal" href="#nghttp2_data_provider" title="nghttp2_data_provider">nghttp2_data_provider</a><em>&nbsp;*data_prd</em><big>)</big><a class="headerlink" href="#nghttp2_submit_response" title="Permalink to this definition"></a></dt>
int <tt class="descname">nghttp2_submit_response</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, int32_t<em>&nbsp;stream_id</em>, const <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a><em>&nbsp;*nva</em>, size_t<em>&nbsp;nvlen</em>, const <a class="reference internal" href="#nghttp2_data_provider" title="nghttp2_data_provider">nghttp2_data_provider</a><em>&nbsp;*data_prd</em><big>)</big><a class="headerlink" href="#nghttp2_submit_response" title="Permalink to this definition"></a></dt>
<dd><p>Submits response HEADERS frame and optionally one or more DATA
frames against the stream <em>stream_id</em>.</p>
<p>The <em>nv</em> contains the name/value pairs. For i &gt;= 0, <tt class="docutils literal"><span class="pre">nv[2*i]</span></tt>
contains a pointer to the name string and <tt class="docutils literal"><span class="pre">nv[2*i+1]</span></tt> contains a
pointer to the value string. The one beyond last value must be
<tt class="docutils literal"><span class="pre">NULL</span></tt>. That is, if the <em>nv</em> contains N name/value pairs,
<tt class="docutils literal"><span class="pre">nv[2*N]</span></tt> must be <tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
<p>The <em>nva</em> is an array of name/value pair <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_nv</span></tt></a> with
<em>nvlen</em> elements.</p>
<p>HTTP/2.0 specification has requirement about header fields in the
response HEADERS. See the specification for more details.</p>
<p>This function creates copies of all name/value pairs in <em>nv</em>. It
also lower-cases all names in <em>nv</em>.</p>
<p>This function creates copies of all name/value pairs in <em>nva</em>. It
also lower-cases all names in <em>nva</em>.</p>
<p>If <em>data_prd</em> is not <tt class="docutils literal"><span class="pre">NULL</span></tt>, it provides data which will be sent
in subsequent DATA frames. This function does not take ownership
of the <em>data_prd</em>. The function copies the members of the
@ -2161,25 +2128,8 @@ END_STREAM flag set.</p>
negative error codes:</p>
<dl class="docutils">
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
<dd>The <em>nv</em> includes empty name or <tt class="docutils literal"><span class="pre">NULL</span></tt> value.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd>
</dl>
</dd></dl>
<dl class="function">
<dt id="nghttp2_submit_response2">
int <tt class="descname">nghttp2_submit_response2</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, int32_t<em>&nbsp;stream_id</em>, const <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a><em>&nbsp;*nva</em>, size_t<em>&nbsp;nvlen</em>, const <a class="reference internal" href="#nghttp2_data_provider" title="nghttp2_data_provider">nghttp2_data_provider</a><em>&nbsp;*data_prd</em><big>)</big><a class="headerlink" href="#nghttp2_submit_response2" title="Permalink to this definition"></a></dt>
<dd><p>Just like <a class="reference internal" href="#nghttp2_submit_response" title="nghttp2_submit_response"><tt class="xref c c-func docutils literal"><span class="pre">nghttp2_submit_response()</span></tt></a>, but this function takes the
<em>nva</em>, which is an array of <tt class="docutils literal"><span class="pre">nghttp2_nv</span></tt> with <em>nvlen</em> elements,
as name/value pairs. This function is useful if name/value pairs
are not NULL-terminated strings.</p>
<p>This function returns 0 if it succeeds, or one of the following
negative error codes:</p>
<dl class="docutils">
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
<dd>The <em>pri</em> is invalid; or the <em>nva</em> includes empty name or
name which contains invalid characters.</dd>
<dd>The <em>nva</em> includes empty name or name which contains invalid
characters.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd>
</dl>
@ -2187,7 +2137,7 @@ name which contains invalid characters.</dd>
<dl class="function">
<dt id="nghttp2_submit_headers">
int <tt class="descname">nghttp2_submit_headers</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, uint8_t<em>&nbsp;flags</em>, int32_t<em>&nbsp;stream_id</em>, int32_t<em>&nbsp;pri</em>, const char<em>&nbsp;**nv</em>, void<em>&nbsp;*stream_user_data</em><big>)</big><a class="headerlink" href="#nghttp2_submit_headers" title="Permalink to this definition"></a></dt>
int <tt class="descname">nghttp2_submit_headers</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, uint8_t<em>&nbsp;flags</em>, int32_t<em>&nbsp;stream_id</em>, int32_t<em>&nbsp;pri</em>, const <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a><em>&nbsp;*nva</em>, size_t<em>&nbsp;nvlen</em>, void<em>&nbsp;*stream_user_data</em><big>)</big><a class="headerlink" href="#nghttp2_submit_headers" title="Permalink to this definition"></a></dt>
<dd><p>Submits HEADERS frame. The <em>flags</em> is bitwise OR of the
following values:</p>
<ul class="simple">
@ -2205,13 +2155,10 @@ request HEADERS frame which opens new stream). In this case, the
actual stream ID is assigned just before the frame is sent. For
response, specify stream ID in <em>stream_id</em>.</p>
<p>The <em>pri</em> is priority of this request.</p>
<p>The <em>nv</em> contains the name/value pairs. For i &gt;= 0, <tt class="docutils literal"><span class="pre">nv[2*i]</span></tt>
contains a pointer to the name string and <tt class="docutils literal"><span class="pre">nv[2*i+1]</span></tt> contains a
pointer to the value string. The one beyond last value must be
<tt class="docutils literal"><span class="pre">NULL</span></tt>. That is, if the <em>nv</em> contains N name/value pairs,
<tt class="docutils literal"><span class="pre">nv[2*N]</span></tt> must be <tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
<p>This function creates copies of all name/value pairs in <em>nv</em>. It
also lower-cases all names in <em>nv</em>.</p>
<p>The <em>nva</em> is an array of name/value pair <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_nv</span></tt></a> with
<em>nvlen</em> elements.</p>
<p>This function creates copies of all name/value pairs in <em>nva</em>. It
also lower-cases all names in <em>nva</em>.</p>
<p>The <em>stream_user_data</em> is a pointer to an arbitrary data which is
associated to the stream this frame will open. Therefore it is only
used if this frame opens streams, in other words, it changes stream
@ -2223,8 +2170,8 @@ specify flags directly. For usual HTTP request,
negative error codes:</p>
<dl class="docutils">
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
<dd>The <em>pri</em> is invalid; or the <em>nv</em> includes empty name or
<tt class="docutils literal"><span class="pre">NULL</span></tt> value.</dd>
<dd>The <em>pri</em> is invalid; or the <em>nva</em> includes empty name, or name
which contains invalid characters.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>
<dd>Out of memory.</dd>
</dl>
@ -2311,19 +2258,16 @@ flow control).</dd>
<dl class="function">
<dt id="nghttp2_submit_push_promise">
int <tt class="descname">nghttp2_submit_push_promise</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, uint8_t<em>&nbsp;flags</em>, int32_t<em>&nbsp;stream_id</em>, const char<em>&nbsp;**nv</em><big>)</big><a class="headerlink" href="#nghttp2_submit_push_promise" title="Permalink to this definition"></a></dt>
int <tt class="descname">nghttp2_submit_push_promise</tt><big>(</big><a class="reference internal" href="#nghttp2_session" title="nghttp2_session">nghttp2_session</a><em>&nbsp;*session</em>, uint8_t<em>&nbsp;flags</em>, int32_t<em>&nbsp;stream_id</em>, const <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv">nghttp2_nv</a><em>&nbsp;*nva</em>, size_t<em>&nbsp;nvlen</em><big>)</big><a class="headerlink" href="#nghttp2_submit_push_promise" title="Permalink to this definition"></a></dt>
<dd><p>Submits PUSH_PROMISE frame. The <em>flags</em> is currently ignored and
the resulting PUSH_PROMISE frame always has
<a class="reference internal" href="#NGHTTP2_FLAG_END_PUSH_PROMISE" title="NGHTTP2_FLAG_END_PUSH_PROMISE"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_FLAG_END_PUSH_PROMISE</span></tt></a> flag set due to the lack of
header continuation support in the library.</p>
<p>The <em>stream_id</em> must be client initiated stream ID.</p>
<p>The <em>nv</em> contains the name/value pairs. For i &gt;= 0, <tt class="docutils literal"><span class="pre">nv[2*i]</span></tt>
contains a pointer to the name string and <tt class="docutils literal"><span class="pre">nv[2*i+1]</span></tt> contains a
pointer to the value string. The one beyond last value must be
<tt class="docutils literal"><span class="pre">NULL</span></tt>. That is, if the <em>nv</em> contains N name/value pairs,
<tt class="docutils literal"><span class="pre">nv[2*N]</span></tt> must be <tt class="docutils literal"><span class="pre">NULL</span></tt>.</p>
<p>This function creates copies of all name/value pairs in <em>nv</em>. It
also lower-cases all names in <em>nv</em>.</p>
<p>The <em>nva</em> is an array of name/value pair <a class="reference internal" href="#nghttp2_nv" title="nghttp2_nv"><tt class="xref c c-type docutils literal"><span class="pre">nghttp2_nv</span></tt></a> with
<em>nvlen</em> elements.</p>
<p>This function creates copies of all name/value pairs in <em>nva</em>. It
also lower-cases all names in <em>nva</em>.</p>
<p>Since the library reorders the frames and tries to send the highest
prioritized one first and the HTTP/2.0 specification requires the
stream ID must be strictly increasing, the promised stream ID
@ -2336,7 +2280,8 @@ frame, the argument frame has the promised stream ID assigned.</p>
negative error codes:</p>
<dl class="docutils">
<dt><a class="reference internal" href="#NGHTTP2_ERR_INVALID_ARGUMENT" title="NGHTTP2_ERR_INVALID_ARGUMENT"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_INVALID_ARGUMENT</span></tt></a></dt>
<dd>The <em>nv</em> includes empty name or <tt class="docutils literal"><span class="pre">NULL</span></tt> value.</dd>
<dd>The <em>nva</em> includes empty name, or name which contains invalid
characters.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_STREAM_CLOSED" title="NGHTTP2_ERR_STREAM_CLOSED"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_STREAM_CLOSED</span></tt></a></dt>
<dd>The stream is already closed or does not exist.</dd>
<dt><a class="reference internal" href="#NGHTTP2_ERR_NOMEM" title="NGHTTP2_ERR_NOMEM"><tt class="xref c c-macro docutils literal"><span class="pre">NGHTTP2_ERR_NOMEM</span></tt></a></dt>

View File

@ -597,12 +597,12 @@
<dt><a href="apiref.html#nghttp2_on_frame_not_send_callback">nghttp2_on_frame_not_send_callback (C type)</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="apiref.html#nghttp2_on_frame_recv_callback">nghttp2_on_frame_recv_callback (C type)</a>
</dt>
</dl></td>
<td style="width: 33%" valign="top"><dl>
<dt><a href="apiref.html#nghttp2_on_frame_recv_parse_error_callback">nghttp2_on_frame_recv_parse_error_callback (C type)</a>
</dt>
@ -1012,18 +1012,10 @@
</dt>
<dt><a href="apiref.html#nghttp2_submit_request2">nghttp2_submit_request2 (C function)</a>
</dt>
<dt><a href="apiref.html#nghttp2_submit_response">nghttp2_submit_response (C function)</a>
</dt>
<dt><a href="apiref.html#nghttp2_submit_response2">nghttp2_submit_response2 (C function)</a>
</dt>
<dt><a href="apiref.html#nghttp2_submit_rst_stream">nghttp2_submit_rst_stream (C function)</a>
</dt>

View File

@ -1551,41 +1551,41 @@
<span class="cm"> * or more times to receive frame header.</span>
<span class="cm"> * 2. If the frame is DATA frame:</span>
<span class="cm"> *</span>
<span class="cm"> * 2.1. :member:`nghttp2_session_callbacks.recv_callback` is invoked</span>
<span class="cm"> * to receive DATA payload. For each chunk of data,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_data_chunk_recv_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> * 2.2. If one DATA frame is completely received,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_data_recv_callback` is</span>
<span class="cm"> * invoked. If the frame is the final frame of the request,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_request_recv_callback`</span>
<span class="cm"> * is invoked. If the reception of the frame triggers the</span>
<span class="cm"> * closure of the stream,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_stream_close_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> * 1. :member:`nghttp2_session_callbacks.recv_callback` is invoked</span>
<span class="cm"> * to receive DATA payload. For each chunk of data,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_data_chunk_recv_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> * 2. If one DATA frame is completely received,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_data_recv_callback` is</span>
<span class="cm"> * invoked. If the frame is the final frame of the request,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_request_recv_callback`</span>
<span class="cm"> * is invoked. If the reception of the frame triggers the</span>
<span class="cm"> * closure of the stream,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_stream_close_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> *</span>
<span class="cm"> * 3. If the frame is the control frame:</span>
<span class="cm"> *</span>
<span class="cm"> * 3.1. :member:`nghttp2_session_callbacks.recv_callback` is invoked</span>
<span class="cm"> * one or more times to receive whole frame.</span>
<span class="cm"> * 3.2. If the received frame is valid,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_frame_recv_callback` is</span>
<span class="cm"> * invoked. If the frame is the final frame of the request,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_request_recv_callback`</span>
<span class="cm"> * is invoked. If the reception of the frame triggers the</span>
<span class="cm"> * closure of the stream,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_stream_close_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> * 3.3. If the received frame is unpacked but is interpreted as</span>
<span class="cm"> * invalid,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_invalid_frame_recv_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> * 3.4. If the received frame could not be unpacked correctly,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_frame_recv_parse_error_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> * 3.5. If the received frame type is unknown,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_unknown_frame_recv_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> * 1. :member:`nghttp2_session_callbacks.recv_callback` is invoked</span>
<span class="cm"> * one or more times to receive whole frame.</span>
<span class="cm"> * 2. If the received frame is valid,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_frame_recv_callback` is</span>
<span class="cm"> * invoked. If the frame is the final frame of the request,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_request_recv_callback`</span>
<span class="cm"> * is invoked. If the reception of the frame triggers the</span>
<span class="cm"> * closure of the stream,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_stream_close_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> * 3. If the received frame is unpacked but is interpreted as</span>
<span class="cm"> * invalid,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_invalid_frame_recv_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> * 4. If the received frame could not be unpacked correctly,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_frame_recv_parse_error_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> * 5. If the received frame type is unknown,</span>
<span class="cm"> * :member:`nghttp2_session_callbacks.on_unknown_frame_recv_callback`</span>
<span class="cm"> * is invoked.</span>
<span class="cm"> *</span>
<span class="cm"> * This function returns 0 if it succeeds, or one of the following</span>
<span class="cm"> * negative error codes:</span>
@ -1893,27 +1893,20 @@
<span class="cm"> * The |pri| is priority of this request. 0 is the highest priority</span>
<span class="cm"> * value and :macro:`NGHTTP2_PRI_LOWEST` is the lowest value.</span>
<span class="cm"> *</span>
<span class="cm"> * The |nv| contains the name/value pairs. For i &gt;= 0, ``nv[2*i]``</span>
<span class="cm"> * contains a pointer to the name string and ``nv[2*i+1]`` contains a</span>
<span class="cm"> * pointer to the value string. The one beyond last value must be</span>
<span class="cm"> * ``NULL``. That is, if the |nv| contains N name/value pairs,</span>
<span class="cm"> * ``nv[2*N]`` must be ``NULL``.</span>
<span class="cm"> * The |nva| is an array of name/value pair :type:`nghttp2_nv` with</span>
<span class="cm"> * |nvlen| elements.</span>
<span class="cm"> *</span>
<span class="cm"> * HTTP/2.0 specification has requirement about header fields in the</span>
<span class="cm"> * request HEADERS. See the specification for more details.</span>
<span class="cm"> *</span>
<span class="cm"> * This function creates copies of all name/value pairs in |nv|. It</span>
<span class="cm"> * also lower-cases all names in |nv|.</span>
<span class="cm"> *</span>
<span class="cm"> * The string in |nv| must be NULL-terminated. Use</span>
<span class="cm"> * `nghttp2_submit_request2()` if name/value pairs are not</span>
<span class="cm"> * NULL-terminated strings.</span>
<span class="cm"> * This function creates copies of all name/value pairs in |nva|. It</span>
<span class="cm"> * also lower-cases all names in |nva|.</span>
<span class="cm"> *</span>
<span class="cm"> * If |data_prd| is not ``NULL``, it provides data which will be sent</span>
<span class="cm"> * in subsequent DATA frames. In this case, a method that allows</span>
<span class="cm"> * request message bodies</span>
<span class="cm"> * (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9) must</span>
<span class="cm"> * be specified with ``:method`` key in |nv| (e.g. ``POST``). This</span>
<span class="cm"> * be specified with ``:method`` key in |nva| (e.g. ``POST``). This</span>
<span class="cm"> * function does not take ownership of the |data_prd|. The function</span>
<span class="cm"> * copies the members of the |data_prd|. If |data_prd| is ``NULL``,</span>
<span class="cm"> * HEADERS have END_STREAM set. The |stream_user_data| is data</span>
@ -1937,55 +1930,30 @@
<span class="cm"> * negative error codes:</span>
<span class="cm"> *</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |pri| is invalid; or the |nv| includes empty name or</span>
<span class="cm"> * ``NULL`` value.</span>
<span class="cm"> * The |pri| is invalid; or the |nva| includes empty name, or name</span>
<span class="cm"> * which contains invalid characters.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_NOMEM`</span>
<span class="cm"> * Out of memory.</span>
<span class="cm"> */</span>
<span class="kt">int</span> <span class="nf">nghttp2_submit_request</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span> <span class="kt">int32_t</span> <span class="n">pri</span><span class="p">,</span>
<span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">nv</span><span class="p">,</span>
<span class="k">const</span> <span class="n">nghttp2_nv</span> <span class="o">*</span><span class="n">nva</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">nvlen</span><span class="p">,</span>
<span class="k">const</span> <span class="n">nghttp2_data_provider</span> <span class="o">*</span><span class="n">data_prd</span><span class="p">,</span>
<span class="kt">void</span> <span class="o">*</span><span class="n">stream_user_data</span><span class="p">);</span>
<span class="cm">/**</span>
<span class="cm"> * @function</span>
<span class="cm"> *</span>
<span class="cm"> * Just like `nghttp2_submit_request()`, but this function takes the</span>
<span class="cm"> * |nva|, which is an array of ``nghttp2_nv`` with |nvlen| elements,</span>
<span class="cm"> * as name/value pairs. This function is useful if name/value pairs</span>
<span class="cm"> * are not NULL-terminated strings.</span>
<span class="cm"> *</span>
<span class="cm"> * This function returns 0 if it succeeds, or one of the following</span>
<span class="cm"> * negative error codes:</span>
<span class="cm"> *</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |pri| is invalid; or the |nva| includes empty name or</span>
<span class="cm"> * name which contains invalid characters.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_NOMEM`</span>
<span class="cm"> * Out of memory.</span>
<span class="cm"> */</span>
<span class="kt">int</span> <span class="nf">nghttp2_submit_request2</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span> <span class="kt">int32_t</span> <span class="n">pri</span><span class="p">,</span>
<span class="k">const</span> <span class="n">nghttp2_nv</span> <span class="o">*</span><span class="n">nva</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">nvlen</span><span class="p">,</span>
<span class="k">const</span> <span class="n">nghttp2_data_provider</span> <span class="o">*</span><span class="n">data_prd</span><span class="p">,</span>
<span class="kt">void</span> <span class="o">*</span><span class="n">stream_user_data</span><span class="p">);</span>
<span class="cm">/**</span>
<span class="cm"> * @function</span>
<span class="cm"> *</span>
<span class="cm"> * Submits response HEADERS frame and optionally one or more DATA</span>
<span class="cm"> * frames against the stream |stream_id|.</span>
<span class="cm"> *</span>
<span class="cm"> * The |nv| contains the name/value pairs. For i &gt;= 0, ``nv[2*i]``</span>
<span class="cm"> * contains a pointer to the name string and ``nv[2*i+1]`` contains a</span>
<span class="cm"> * pointer to the value string. The one beyond last value must be</span>
<span class="cm"> * ``NULL``. That is, if the |nv| contains N name/value pairs,</span>
<span class="cm"> * ``nv[2*N]`` must be ``NULL``.</span>
<span class="cm"> * The |nva| is an array of name/value pair :type:`nghttp2_nv` with</span>
<span class="cm"> * |nvlen| elements.</span>
<span class="cm"> *</span>
<span class="cm"> * HTTP/2.0 specification has requirement about header fields in the</span>
<span class="cm"> * response HEADERS. See the specification for more details.</span>
<span class="cm"> *</span>
<span class="cm"> * This function creates copies of all name/value pairs in |nv|. It</span>
<span class="cm"> * also lower-cases all names in |nv|.</span>
<span class="cm"> * This function creates copies of all name/value pairs in |nva|. It</span>
<span class="cm"> * also lower-cases all names in |nva|.</span>
<span class="cm"> *</span>
<span class="cm"> * If |data_prd| is not ``NULL``, it provides data which will be sent</span>
<span class="cm"> * in subsequent DATA frames. This function does not take ownership</span>
@ -1997,36 +1965,16 @@
<span class="cm"> * negative error codes:</span>
<span class="cm"> *</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |nv| includes empty name or ``NULL`` value.</span>
<span class="cm"> * The |nva| includes empty name or name which contains invalid</span>
<span class="cm"> * characters.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_NOMEM`</span>
<span class="cm"> * Out of memory.</span>
<span class="cm"> */</span>
<span class="kt">int</span> <span class="nf">nghttp2_submit_response</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span>
<span class="kt">int32_t</span> <span class="n">stream_id</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">nv</span><span class="p">,</span>
<span class="kt">int32_t</span> <span class="n">stream_id</span><span class="p">,</span>
<span class="k">const</span> <span class="n">nghttp2_nv</span> <span class="o">*</span><span class="n">nva</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">nvlen</span><span class="p">,</span>
<span class="k">const</span> <span class="n">nghttp2_data_provider</span> <span class="o">*</span><span class="n">data_prd</span><span class="p">);</span>
<span class="cm">/**</span>
<span class="cm"> * @function</span>
<span class="cm"> *</span>
<span class="cm"> * Just like `nghttp2_submit_response()`, but this function takes the</span>
<span class="cm"> * |nva|, which is an array of ``nghttp2_nv`` with |nvlen| elements,</span>
<span class="cm"> * as name/value pairs. This function is useful if name/value pairs</span>
<span class="cm"> * are not NULL-terminated strings.</span>
<span class="cm"> *</span>
<span class="cm"> * This function returns 0 if it succeeds, or one of the following</span>
<span class="cm"> * negative error codes:</span>
<span class="cm"> *</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |pri| is invalid; or the |nva| includes empty name or</span>
<span class="cm"> * name which contains invalid characters.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_NOMEM`</span>
<span class="cm"> * Out of memory.</span>
<span class="cm"> */</span>
<span class="kt">int</span> <span class="nf">nghttp2_submit_response2</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span>
<span class="kt">int32_t</span> <span class="n">stream_id</span><span class="p">,</span>
<span class="k">const</span> <span class="n">nghttp2_nv</span> <span class="o">*</span><span class="n">nva</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">nvlen</span><span class="p">,</span>
<span class="k">const</span> <span class="n">nghttp2_data_provider</span> <span class="o">*</span><span class="n">data_prd</span><span class="p">);</span>
<span class="cm">/**</span>
<span class="cm"> * @function</span>
<span class="cm"> *</span>
@ -2050,14 +1998,11 @@
<span class="cm"> *</span>
<span class="cm"> * The |pri| is priority of this request.</span>
<span class="cm"> *</span>
<span class="cm"> * The |nv| contains the name/value pairs. For i &gt;= 0, ``nv[2*i]``</span>
<span class="cm"> * contains a pointer to the name string and ``nv[2*i+1]`` contains a</span>
<span class="cm"> * pointer to the value string. The one beyond last value must be</span>
<span class="cm"> * ``NULL``. That is, if the |nv| contains N name/value pairs,</span>
<span class="cm"> * ``nv[2*N]`` must be ``NULL``.</span>
<span class="cm"> * The |nva| is an array of name/value pair :type:`nghttp2_nv` with</span>
<span class="cm"> * |nvlen| elements.</span>
<span class="cm"> *</span>
<span class="cm"> * This function creates copies of all name/value pairs in |nv|. It</span>
<span class="cm"> * also lower-cases all names in |nv|.</span>
<span class="cm"> * This function creates copies of all name/value pairs in |nva|. It</span>
<span class="cm"> * also lower-cases all names in |nva|.</span>
<span class="cm"> *</span>
<span class="cm"> * The |stream_user_data| is a pointer to an arbitrary data which is</span>
<span class="cm"> * associated to the stream this frame will open. Therefore it is only</span>
@ -2072,13 +2017,14 @@
<span class="cm"> * negative error codes:</span>
<span class="cm"> *</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |pri| is invalid; or the |nv| includes empty name or</span>
<span class="cm"> * ``NULL`` value.</span>
<span class="cm"> * The |pri| is invalid; or the |nva| includes empty name, or name</span>
<span class="cm"> * which contains invalid characters.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_NOMEM`</span>
<span class="cm"> * Out of memory.</span>
<span class="cm"> */</span>
<span class="kt">int</span> <span class="nf">nghttp2_submit_headers</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span> <span class="kt">uint8_t</span> <span class="n">flags</span><span class="p">,</span>
<span class="kt">int32_t</span> <span class="n">stream_id</span><span class="p">,</span> <span class="kt">int32_t</span> <span class="n">pri</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">nv</span><span class="p">,</span>
<span class="kt">int32_t</span> <span class="n">stream_id</span><span class="p">,</span> <span class="kt">int32_t</span> <span class="n">pri</span><span class="p">,</span>
<span class="k">const</span> <span class="n">nghttp2_nv</span> <span class="o">*</span><span class="n">nva</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">nvlen</span><span class="p">,</span>
<span class="kt">void</span> <span class="o">*</span><span class="n">stream_user_data</span><span class="p">);</span>
<span class="cm">/**</span>
@ -2188,14 +2134,11 @@
<span class="cm"> *</span>
<span class="cm"> * The |stream_id| must be client initiated stream ID.</span>
<span class="cm"> *</span>
<span class="cm"> * The |nv| contains the name/value pairs. For i &gt;= 0, ``nv[2*i]``</span>
<span class="cm"> * contains a pointer to the name string and ``nv[2*i+1]`` contains a</span>
<span class="cm"> * pointer to the value string. The one beyond last value must be</span>
<span class="cm"> * ``NULL``. That is, if the |nv| contains N name/value pairs,</span>
<span class="cm"> * ``nv[2*N]`` must be ``NULL``.</span>
<span class="cm"> * The |nva| is an array of name/value pair :type:`nghttp2_nv` with</span>
<span class="cm"> * |nvlen| elements.</span>
<span class="cm"> *</span>
<span class="cm"> * This function creates copies of all name/value pairs in |nv|. It</span>
<span class="cm"> * also lower-cases all names in |nv|.</span>
<span class="cm"> * This function creates copies of all name/value pairs in |nva|. It</span>
<span class="cm"> * also lower-cases all names in |nva|.</span>
<span class="cm"> *</span>
<span class="cm"> * Since the library reorders the frames and tries to send the highest</span>
<span class="cm"> * prioritized one first and the HTTP/2.0 specification requires the</span>
@ -2210,14 +2153,16 @@
<span class="cm"> * negative error codes:</span>
<span class="cm"> *</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_INVALID_ARGUMENT`</span>
<span class="cm"> * The |nv| includes empty name or ``NULL`` value.</span>
<span class="cm"> * The |nva| includes empty name, or name which contains invalid</span>
<span class="cm"> * characters.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_STREAM_CLOSED`</span>
<span class="cm"> * The stream is already closed or does not exist.</span>
<span class="cm"> * :enum:`NGHTTP2_ERR_NOMEM`</span>
<span class="cm"> * Out of memory.</span>
<span class="cm"> */</span>
<span class="kt">int</span> <span class="nf">nghttp2_submit_push_promise</span><span class="p">(</span><span class="n">nghttp2_session</span> <span class="o">*</span><span class="n">session</span><span class="p">,</span> <span class="kt">uint8_t</span> <span class="n">flags</span><span class="p">,</span>
<span class="kt">int32_t</span> <span class="n">stream_id</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">nv</span><span class="p">);</span>
<span class="kt">int32_t</span> <span class="n">stream_id</span><span class="p">,</span>
<span class="k">const</span> <span class="n">nghttp2_nv</span> <span class="o">*</span><span class="n">nva</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">nvlen</span><span class="p">);</span>
<span class="cm">/**</span>
<span class="cm"> * @function</span>

Binary file not shown.

View File

@ -395,6 +395,7 @@ multiplexes connections using non-blocking socket.</p>
disable it.</p>
<p><tt class="docutils literal"><span class="pre">nghttpd</span></tt> only accept the HTTP/2.0 connection via NPN or direct
HTTP/2.0 connection. No HTTP Upgrade is supported.</p>
<p><tt class="docutils literal"><span class="pre">-p</span></tt> option allows users to configure server push.</p>
<p>Just like <tt class="docutils literal"><span class="pre">nghttp</span></tt>, it has verbose output mode for framing
information. Here is sample output from <tt class="docutils literal"><span class="pre">nghttpd</span></tt> server:</p>
<div class="highlight-c"><pre>$ src/nghttpd --no-tls -v 8080

File diff suppressed because one or more lines are too long