blob: 89ffbfafd25f24dbf8c4e361bfc5767bbdbce2c1 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.14.1) on Mon Apr 04 09:09:38 CDT 2022 -->
<title>Request.Content (Eclipse Jetty API Doc - v10.0.9)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2022-04-04">
<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="Request.Content (Eclipse Jetty API Doc - v10.0.9)";
}
}
catch(err) {
}
//-->
var data = {"i0":18,"i1":18,"i2":18,"i3":18,"i4":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],16:["t5","Default 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/Request.Content.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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&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>Constr&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.client.api</a></div>
<h2 title="Interface Request.Content" class="title">Interface Request.Content</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="../util/AbstractRequestContent.html" title="class in org.eclipse.jetty.client.util">AbstractRequestContent</a></code>, <code><a href="../util/AsyncRequestContent.html" title="class in org.eclipse.jetty.client.util">AsyncRequestContent</a></code>, <code><a href="../util/ByteBufferRequestContent.html" title="class in org.eclipse.jetty.client.util">ByteBufferRequestContent</a></code>, <code><a href="../util/BytesRequestContent.html" title="class in org.eclipse.jetty.client.util">BytesRequestContent</a></code>, <code><a href="../util/FormRequestContent.html" title="class in org.eclipse.jetty.client.util">FormRequestContent</a></code>, <code><a href="../util/InputStreamRequestContent.html" title="class in org.eclipse.jetty.client.util">InputStreamRequestContent</a></code>, <code><a href="../util/MultiPartRequestContent.html" title="class in org.eclipse.jetty.client.util">MultiPartRequestContent</a></code>, <code><a href="../util/OutputStreamRequestContent.html" title="class in org.eclipse.jetty.client.util">OutputStreamRequestContent</a></code>, <code><a href="../util/PathRequestContent.html" title="class in org.eclipse.jetty.client.util">PathRequestContent</a></code>, <code><a href="../../proxy/ProxyServlet.ProxyInputStreamRequestContent.html" title="class in org.eclipse.jetty.proxy">ProxyServlet.ProxyInputStreamRequestContent</a></code>, <code><a href="../internal/RequestContentAdapter.html" title="class in org.eclipse.jetty.client.internal">RequestContentAdapter</a></code>, <code><a href="../util/StringRequestContent.html" title="class in org.eclipse.jetty.client.util">StringRequestContent</a></code></dd>
</dl>
<dl>
<dt>Enclosing interface:</dt>
<dd><a href="Request.html" title="interface in org.eclipse.jetty.client.api">Request</a></dd>
</dl>
<hr>
<pre>public static interface <span class="typeNameLabel">Request.Content</span></pre>
<div class="block"><p>A reactive model to produce request content, similar to <code>Flow.Publisher</code>.</p>
<p>Implementations receive the content consumer via <a href="#subscribe(org.eclipse.jetty.client.api.Request.Content.Consumer,boolean)"><code>subscribe(Consumer, boolean)</code></a>,
and return a <a href="Request.Content.Subscription.html" title="interface in org.eclipse.jetty.client.api"><code>Request.Content.Subscription</code></a> as the link between producer and consumer.</p>
<p>Content producers must notify content to the consumer only if there is demand.</p>
<p>Content consumers can generate demand for content by invoking <a href="Request.Content.Subscription.html#demand()"><code>Request.Content.Subscription.demand()</code></a>.</p>
<p>Content production must follow this algorithm:</p>
<ul>
<li>the first time content is demanded
<ul>
<li>when the content is not available =&gt; produce an empty content</li>
<li>when the content is available:
<ul>
<li>when <code>emitInitialContent == false</code> =&gt; produce an empty content</li>
<li>when <code>emitInitialContent == true</code> =&gt; produce the content</li>
</ul>
</li>
</ul>
</li>
<li>the second and subsequent times content is demanded
<ul>
<li>when the content is not available =&gt; do not produce content</li>
<li>when the content is available =&gt; produce the content</li>
</ul>
</li>
</ul></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="#subscribe(org.eclipse.jetty.client.api.Request.Content.Consumer,boolean)"><code>subscribe(Consumer, boolean)</code></a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Interface</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="Request.Content.Consumer.html" title="interface in org.eclipse.jetty.client.api">Request.Content.Consumer</a></span></code></th>
<td class="colLast">
<div class="block">A reactive model to consume request content, similar to <code>Flow.Subscriber</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="Request.Content.Subscription.html" title="interface in org.eclipse.jetty.client.api">Request.Content.Subscription</a></span></code></th>
<td class="colLast">
<div class="block">The link between a content producer and a content consumer.</div>
</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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default 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>default void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#fail(java.lang.Throwable)">fail</a></span>&#8203;(java.lang.Throwable&nbsp;failure)</code></th>
<td class="colLast">
<div class="block">Fails this request content, possibly failing and discarding accumulated
content that was not demanded.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>default java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getContentType()">getContentType</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>default long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getLength()">getLength</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>default boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isReproducible()">isReproducible</a></span>()</code></th>
<td class="colLast">
<div class="block">Whether this content producer can produce exactly the same content more
than once.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="Request.Content.Subscription.html" title="interface in org.eclipse.jetty.client.api">Request.Content.Subscription</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#subscribe(org.eclipse.jetty.client.api.Request.Content.Consumer,boolean)">subscribe</a></span>&#8203;(<a href="Request.Content.Consumer.html" title="interface in org.eclipse.jetty.client.api">Request.Content.Consumer</a>&nbsp;consumer,
boolean&nbsp;emitInitialContent)</code></th>
<td class="colLast">
<div class="block">Initializes this content producer with the content consumer, and with
the indication of whether initial content, if present, must be emitted
upon the initial demand of content (to support delaying the send of the
request content in case of <code>Expect: 100-Continue</code> when
<code>emitInitialContent</code> is <code>false</code>).</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="getContentType()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getContentType</h4>
<pre class="methodSignature">default&nbsp;java.lang.String&nbsp;getContentType()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the content type string such as "application/octet-stream" or
"application/json;charset=UTF8", or null if no content type must be set</dd>
</dl>
</li>
</ul>
<a id="getLength()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLength</h4>
<pre class="methodSignature">default&nbsp;long&nbsp;getLength()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the content length, if known, or -1 if the content length is unknown</dd>
</dl>
</li>
</ul>
<a id="isReproducible()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isReproducible</h4>
<pre class="methodSignature">default&nbsp;boolean&nbsp;isReproducible()</pre>
<div class="block"><p>Whether this content producer can produce exactly the same content more
than once.</p>
<p>Implementations should return <code>true</code> only if the content can be
produced more than once, which means that <a href="#subscribe(org.eclipse.jetty.client.api.Request.Content.Consumer,boolean)"><code>subscribe(Consumer, boolean)</code></a>
may be called again.</p>
<p>The <a href="../HttpClient.html" title="class in org.eclipse.jetty.client"><code>HttpClient</code></a> implementation may use this method in particular
cases where it detects that it is safe to retry a request that failed.</p></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>whether the content can be produced more than once</dd>
</dl>
</li>
</ul>
<a id="subscribe(org.eclipse.jetty.client.api.Request.Content.Consumer,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>subscribe</h4>
<pre class="methodSignature"><a href="Request.Content.Subscription.html" title="interface in org.eclipse.jetty.client.api">Request.Content.Subscription</a>&nbsp;subscribe&#8203;(<a href="Request.Content.Consumer.html" title="interface in org.eclipse.jetty.client.api">Request.Content.Consumer</a>&nbsp;consumer,
boolean&nbsp;emitInitialContent)</pre>
<div class="block"><p>Initializes this content producer with the content consumer, and with
the indication of whether initial content, if present, must be emitted
upon the initial demand of content (to support delaying the send of the
request content in case of <code>Expect: 100-Continue</code> when
<code>emitInitialContent</code> is <code>false</code>).</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>consumer</code> - the content consumer to invoke when there is demand for content</dd>
<dd><code>emitInitialContent</code> - whether to emit initial content, if present</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the Subscription that links this producer to the consumer</dd>
</dl>
</li>
</ul>
<a id="fail(java.lang.Throwable)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>fail</h4>
<pre class="methodSignature">default&nbsp;void&nbsp;fail&#8203;(java.lang.Throwable&nbsp;failure)</pre>
<div class="block"><p>Fails this request content, possibly failing and discarding accumulated
content that was not demanded.</p>
<p>The failure may be notified to the consumer at a later time, when the
consumer demands for content.</p>
<p>Typical failure: the request being aborted by user code, or idle timeouts.</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>failure</code> - the reason of the failure</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/Request.Content.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><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&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>Constr&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>