blob: bf00f2accd7c56919f51799748e4aa5d67f1edf2 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.13) on Tue Feb 08 12:40:05 CST 2022 -->
<title>GZIPContentDecoder (Eclipse Jetty API Doc - v10.0.8)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2022-02-08">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="GZIPContentDecoder (Eclipse Jetty API Doc - v10.0.8)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/GZIPContentDecoder.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.eclipse.jetty.http</a></div>
<h2 title="Class GZIPContentDecoder" class="title">Class GZIPContentDecoder</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.eclipse.jetty.http.GZIPContentDecoder</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../util/component/Destroyable.html" title="interface in org.eclipse.jetty.util.component">Destroyable</a></code></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="../client/GZIPContentDecoder.html" title="class in org.eclipse.jetty.client">GZIPContentDecoder</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">GZIPContentDecoder</span>
extends java.lang.Object
implements <a href="../util/component/Destroyable.html" title="interface in org.eclipse.jetty.util.component">Destroyable</a></pre>
<div class="block"><p>Decoder for the "gzip" content encoding.</p>
<p>This decoder inflates gzip compressed data, and has
been optimized for async usage with minimal data copies.</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">GZIPContentDecoder</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(int)">GZIPContentDecoder</a></span>&#8203;(int&nbsp;bufferSize)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.eclipse.jetty.io.ByteBufferPool,int)">GZIPContentDecoder</a></span>&#8203;(<a href="../io/ByteBufferPool.html" title="interface in org.eclipse.jetty.io">ByteBufferPool</a>&nbsp;pool,
int&nbsp;bufferSize)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.eclipse.jetty.util.compression.InflaterPool,org.eclipse.jetty.io.ByteBufferPool,int)">GZIPContentDecoder</a></span>&#8203;(<a href="../util/compression/InflaterPool.html" title="class in org.eclipse.jetty.util.compression">InflaterPool</a>&nbsp;inflaterPool,
<a href="../io/ByteBufferPool.html" title="interface in org.eclipse.jetty.io">ByteBufferPool</a>&nbsp;pool,
int&nbsp;bufferSize)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>java.nio.ByteBuffer</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#acquire(int)">acquire</a></span>&#8203;(int&nbsp;capacity)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>java.nio.ByteBuffer</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decode(java.nio.ByteBuffer)">decode</a></span>&#8203;(java.nio.ByteBuffer&nbsp;compressed)</code></th>
<td class="colLast">
<div class="block">Inflates compressed data from a buffer.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decodeChunks(java.nio.ByteBuffer)">decodeChunks</a></span>&#8203;(java.nio.ByteBuffer&nbsp;compressed)</code></th>
<td class="colLast">
<div class="block">Inflates compressed data.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#decodedChunk(java.nio.ByteBuffer)">decodedChunk</a></span>&#8203;(java.nio.ByteBuffer&nbsp;chunk)</code></th>
<td class="colLast">
<div class="block">Called when a chunk of data is inflated.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#destroy()">destroy</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isFinished()">isFinished</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#release(java.nio.ByteBuffer)">release</a></span>&#8203;(java.nio.ByteBuffer&nbsp;buffer)</code></th>
<td class="colLast">
<div class="block">Releases an allocated buffer.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>GZIPContentDecoder</h4>
<pre>public&nbsp;GZIPContentDecoder()</pre>
</li>
</ul>
<a id="&lt;init&gt;(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>GZIPContentDecoder</h4>
<pre>public&nbsp;GZIPContentDecoder&#8203;(int&nbsp;bufferSize)</pre>
</li>
</ul>
<a id="&lt;init&gt;(org.eclipse.jetty.io.ByteBufferPool,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>GZIPContentDecoder</h4>
<pre>public&nbsp;GZIPContentDecoder&#8203;(<a href="../io/ByteBufferPool.html" title="interface in org.eclipse.jetty.io">ByteBufferPool</a>&nbsp;pool,
int&nbsp;bufferSize)</pre>
</li>
</ul>
<a id="&lt;init&gt;(org.eclipse.jetty.util.compression.InflaterPool,org.eclipse.jetty.io.ByteBufferPool,int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>GZIPContentDecoder</h4>
<pre>public&nbsp;GZIPContentDecoder&#8203;(<a href="../util/compression/InflaterPool.html" title="class in org.eclipse.jetty.util.compression">InflaterPool</a>&nbsp;inflaterPool,
<a href="../io/ByteBufferPool.html" title="interface in org.eclipse.jetty.io">ByteBufferPool</a>&nbsp;pool,
int&nbsp;bufferSize)</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="decode(java.nio.ByteBuffer)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decode</h4>
<pre class="methodSignature">public&nbsp;java.nio.ByteBuffer&nbsp;decode&#8203;(java.nio.ByteBuffer&nbsp;compressed)</pre>
<div class="block"><p>Inflates compressed data from a buffer.</p>
<p>The buffers returned by this method should be released
via <a href="#release(java.nio.ByteBuffer)"><code>release(ByteBuffer)</code></a>.</p>
<p>This method may fully consume the input buffer, but return
only a chunk of the inflated bytes, to allow applications to
consume the inflated chunk before performing further inflation,
applying backpressure. In this case, this method should be
invoked again with the same input buffer (even if
it's already fully consumed) and that will produce another
chunk of inflated bytes. Termination happens when the input
buffer is fully consumed, and the returned buffer is empty.</p>
<p>See <a href="#decodedChunk(java.nio.ByteBuffer)"><code>decodedChunk(ByteBuffer)</code></a> to perform inflating
in a non-blocking way that allows to apply backpressure.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>compressed</code> - the buffer containing compressed data.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a buffer containing inflated data.</dd>
</dl>
</li>
</ul>
<a id="decodedChunk(java.nio.ByteBuffer)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decodedChunk</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;decodedChunk&#8203;(java.nio.ByteBuffer&nbsp;chunk)</pre>
<div class="block"><p>Called when a chunk of data is inflated.</p>
<p>The default implementation aggregates all the chunks
into a single buffer returned from <a href="#decode(java.nio.ByteBuffer)"><code>decode(ByteBuffer)</code></a>.</p>
<p>Derived implementations may choose to consume inflated chunks
individually and return <code>true</code> from this method to prevent
further inflation until a subsequent call to <a href="#decode(java.nio.ByteBuffer)"><code>decode(ByteBuffer)</code></a>
or <a href="#decodeChunks(java.nio.ByteBuffer)"><code>decodeChunks(ByteBuffer)</code></a> is made.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>chunk</code> - the inflated chunk of data</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>false if inflating should continue, or true if the call
to <a href="#decodeChunks(java.nio.ByteBuffer)"><code>decodeChunks(ByteBuffer)</code></a> or <a href="#decode(java.nio.ByteBuffer)"><code>decode(ByteBuffer)</code></a>
should return, allowing to consume the inflated chunk and apply
backpressure</dd>
</dl>
</li>
</ul>
<a id="decodeChunks(java.nio.ByteBuffer)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decodeChunks</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;decodeChunks&#8203;(java.nio.ByteBuffer&nbsp;compressed)</pre>
<div class="block"><p>Inflates compressed data.</p>
<p>Inflation continues until the compressed block end is reached, there is no
more compressed data or a call to <a href="#decodedChunk(java.nio.ByteBuffer)"><code>decodedChunk(ByteBuffer)</code></a> returns true.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>compressed</code> - the buffer of compressed data to inflate</dd>
</dl>
</li>
</ul>
<a id="destroy()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>destroy</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;destroy()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../util/component/Destroyable.html#destroy()">destroy</a></code>&nbsp;in interface&nbsp;<code><a href="../util/component/Destroyable.html" title="interface in org.eclipse.jetty.util.component">Destroyable</a></code></dd>
</dl>
</li>
</ul>
<a id="isFinished()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isFinished</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isFinished()</pre>
</li>
</ul>
<a id="acquire(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>acquire</h4>
<pre class="methodSignature">public&nbsp;java.nio.ByteBuffer&nbsp;acquire&#8203;(int&nbsp;capacity)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>capacity</code> - capacity of the ByteBuffer to acquire</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a heap buffer of the configured capacity either from the pool or freshly allocated.</dd>
</dl>
</li>
</ul>
<a id="release(java.nio.ByteBuffer)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>release</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;release&#8203;(java.nio.ByteBuffer&nbsp;buffer)</pre>
<div class="block"><p>Releases an allocated buffer.</p>
<p>This method calls <a href="../io/ByteBufferPool.html#release(java.nio.ByteBuffer)"><code>ByteBufferPool.release(ByteBuffer)</code></a> if a buffer pool has
been configured.</p>
<p>This method should be called once for all buffers returned from <a href="#decode(java.nio.ByteBuffer)"><code>decode(ByteBuffer)</code></a>
or passed to <a href="#decodedChunk(java.nio.ByteBuffer)"><code>decodedChunk(ByteBuffer)</code></a>.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>buffer</code> - the buffer to release.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/GZIPContentDecoder.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2022 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>