docs(javadoc): publish 2.0.0
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html lang>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Generated by javadoc (21) on Tue May 12 13:57:37 UTC 2026 -->
|
||||
<title>RequestParser (flash-parent 2.0.0 API)</title>
|
||||
<!-- Generated by javadoc (21) on Tue May 12 14:36:52 UTC 2026 -->
|
||||
<title>RequestParser (flash-parent 2.1.0-SNAPSHOT API)</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta name="dc.created" content="2026-05-12">
|
||||
@@ -93,9 +93,25 @@ loadScripts(document, 'script');</script>
|
||||
<hr>
|
||||
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">RequestParser</span>
|
||||
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
|
||||
<div class="block">One instance per connection, the buffer is allocated once and reused across keep-alive
|
||||
requests. Grows on demand (doubling, up to <code>maxHeaderBufferSize</code>). Zero String
|
||||
allocations during parsing; paths, headers and protocol are exposed as <code>ByteView</code> slices.</div>
|
||||
<div class="block">One instance per connection. The buffer is allocated once and reused across
|
||||
keep-alive requests. Grows on demand (doubling, up to <code>maxHeaderBufferSize</code>).
|
||||
|
||||
<h3 id="zero-allocation-design-heading">Zero-allocation design</h3>
|
||||
<ul>
|
||||
<li>No <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link"><code>String</code></a> allocations during parsing: paths, headers and
|
||||
protocol are exposed as <code>ByteView</code> slices
|
||||
into the shared buffer.</li>
|
||||
<li><code>headerMap</code> is reset in-place per request — single allocation
|
||||
for the lifetime of the connection.</li>
|
||||
<li>Pipelining / keep-alive leftover bytes are tracked via <code>bufBase</code>
|
||||
and <code>bufLen</code> — no copy between requests on the common path.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="state-invariant-heading">State invariant</h3>
|
||||
<code>bufBase</code> and <code>bufLen</code> always reflect unconsumed bytes that belong
|
||||
to the <em>next</em> request. They are snapshotted at the top of <a href="#parse(java.io.InputStream)"><code>parse(java.io.InputStream)</code></a>
|
||||
and reset to <code>0/0</code> before any work begins, so an exception thrown mid-parse
|
||||
leaves the fields clean rather than pointing at stale data from a previous request.</div>
|
||||
</section>
|
||||
<section class="summary">
|
||||
<ul class="summary-list">
|
||||
@@ -130,7 +146,9 @@ loadScripts(document, 'script');</script>
|
||||
<div class="table-header col-last">Description</div>
|
||||
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="models/Request.html" title="class in dev.relism.flash.models">Request</a></code></div>
|
||||
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#parse(java.io.InputStream)" class="member-name-link">parse</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a> in)</code></div>
|
||||
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"> </div>
|
||||
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
|
||||
<div class="block">Parses the next HTTP request from <code>in</code>.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -180,9 +198,18 @@ loadScripts(document, 'script');</script>
|
||||
<h3>parse</h3>
|
||||
<div class="member-signature"><span class="modifiers">public</span> <span class="return-type"><a href="models/Request.html" title="class in dev.relism.flash.models">Request</a></span> <span class="element-name">parse</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/InputStream.html" title="class or interface in java.io" class="external-link">InputStream</a> in)</span>
|
||||
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
|
||||
<div class="block">Parses the next HTTP request from <code>in</code>.
|
||||
|
||||
<p><b>Exception safety:</b> <code>bufBase</code> and <code>bufLen</code> are reset
|
||||
to <code>0</code> before any parsing work begins. If an exception is thrown,
|
||||
the connection will be closed by the caller, so stale leftover state is
|
||||
never a problem — but the reset ensures correctness in test scenarios where
|
||||
the same parser instance is reused after an error.</div>
|
||||
<dl class="notes">
|
||||
<dt>Returns:</dt>
|
||||
<dd>the parsed <a href="models/Request.html" title="class in dev.relism.flash.models"><code>Request</code></a>, or <code>null</code> on clean EOF.</dd>
|
||||
<dt>Throws:</dt>
|
||||
<dd><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
|
||||
<dd><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code> - on malformed headers or I/O failure.</dd>
|
||||
</dl>
|
||||
</section>
|
||||
</li>
|
||||
|
||||
Reference in New Issue
Block a user