blob: bd6f7e7520a29fdfd9d3997e6ee7b0387844b70b [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>ClientInterceptors.CheckedForwardingClientCall (grpc-all 1.74.0 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../jquery-ui.overrides.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.7.1.min.js"></script>
<script type="text/javascript" src="../../jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ClientInterceptors.CheckedForwardingClientCall (grpc-all 1.74.0 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":6,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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/ClientInterceptors.CheckedForwardingClientCall.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><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">io.grpc</a></div>
<h2 title="Class ClientInterceptors.CheckedForwardingClientCall" class="title">Class ClientInterceptors.CheckedForwardingClientCall&lt;ReqT,&#8203;RespT&gt;</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="ClientCall.html" title="class in io.grpc">io.grpc.ClientCall</a>&lt;ReqT,&#8203;RespT&gt;</li>
<li>
<ul class="inheritance">
<li><a href="ForwardingClientCall.html" title="class in io.grpc">io.grpc.ForwardingClientCall</a>&lt;ReqT,&#8203;RespT&gt;</li>
<li>
<ul class="inheritance">
<li>io.grpc.ClientInterceptors.CheckedForwardingClientCall&lt;ReqT,&#8203;RespT&gt;</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Enclosing class:</dt>
<dd><a href="ClientInterceptors.html" title="class in io.grpc">ClientInterceptors</a></dd>
</dl>
<hr>
<pre>public abstract static class <span class="typeNameLabel">ClientInterceptors.CheckedForwardingClientCall&lt;ReqT,&#8203;RespT&gt;</span>
extends <a href="ForwardingClientCall.html" title="class in io.grpc">ForwardingClientCall</a>&lt;ReqT,&#8203;RespT&gt;</pre>
<div class="block">A <a href="ForwardingClientCall.html" title="class in io.grpc"><code>ForwardingClientCall</code></a> that delivers exceptions from its start logic to the
call listener.
<p><a href="ClientCall.html#start(io.grpc.ClientCall.Listener,io.grpc.Metadata)"><code>ClientCall.start(ClientCall.Listener, Metadata)</code></a> should not throw any
exception other than those caused by misuse, e.g., <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalStateException.html?is-external=true" title="class or interface in java.lang" class="externalLink"><code>IllegalStateException</code></a>. <code>
CheckedForwardingClientCall</code> provides <code>checkedStart()</code> in which throwing exceptions is
allowed.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.io.grpc.ForwardingClientCall">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;io.grpc.<a href="ForwardingClientCall.html" title="class in io.grpc">ForwardingClientCall</a></h3>
<code><a href="ForwardingClientCall.SimpleForwardingClientCall.html" title="class in io.grpc">ForwardingClientCall.SimpleForwardingClientCall</a>&lt;<a href="ForwardingClientCall.SimpleForwardingClientCall.html" title="type parameter in ForwardingClientCall.SimpleForwardingClientCall">ReqT</a>,&#8203;<a href="ForwardingClientCall.SimpleForwardingClientCall.html" title="type parameter in ForwardingClientCall.SimpleForwardingClientCall">RespT</a>&gt;</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.io.grpc.ClientCall">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;io.grpc.<a href="ClientCall.html" title="class in io.grpc">ClientCall</a></h3>
<code><a href="ClientCall.Listener.html" title="class in io.grpc">ClientCall.Listener</a>&lt;<a href="ClientCall.Listener.html" title="type parameter in ClientCall.Listener">T</a>&gt;</code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section>
<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">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(io.grpc.ClientCall)">CheckedForwardingClientCall</a></span>&#8203;(<a href="ClientCall.html" title="class in io.grpc">ClientCall</a>&lt;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">ReqT</a>,&#8203;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">RespT</a>&gt;&nbsp;delegate)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section>
<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="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>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink">cancel</span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;message,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang" class="externalLink">Throwable</a>&nbsp;cause)</code></th>
<td class="colLast">
<div class="block">Prevent any further processing for this <code>ClientCall</code>.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected abstract void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#checkedStart(io.grpc.ClientCall.Listener,io.grpc.Metadata)">checkedStart</a></span>&#8203;(<a href="ClientCall.Listener.html" title="class in io.grpc">ClientCall.Listener</a>&lt;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">RespT</a>&gt;&nbsp;responseListener,
<a href="Metadata.html" title="class in io.grpc">Metadata</a>&nbsp;headers)</code></th>
<td class="colLast">
<div class="block">Subclasses implement the start logic here that would normally belong to <code>start()</code>.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected <a href="ClientCall.html" title="class in io.grpc">ClientCall</a>&lt;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">ReqT</a>,&#8203;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">RespT</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#delegate()">delegate</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the delegated <code>ClientCall</code>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="Attributes.html" title="class in io.grpc">Attributes</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink">getAttributes</span>()</code></th>
<td class="colLast">
<div class="block">Returns additional properties of the call.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink">halfClose</span>()</code></th>
<td class="colLast">
<div class="block">Close the call for request message sending.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink">isReady</span>()</code></th>
<td class="colLast">
<div class="block">If <code>true</code>, indicates that the call is capable of sending additional messages
without requiring excessive buffering internally.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink">request</span>&#8203;(int&nbsp;numMessages)</code></th>
<td class="colLast">
<div class="block">Requests up to the given number of messages from the call to be delivered to
<a href="ClientCall.Listener.html#onMessage(T)"><code>ClientCall.Listener.onMessage(Object)</code></a>.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink">setMessageCompression</span>&#8203;(boolean&nbsp;enabled)</code></th>
<td class="colLast">
<div class="block">Enables per-message compression, if an encoding type has been negotiated.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#start(io.grpc.ClientCall.Listener,io.grpc.Metadata)">start</a></span>&#8203;(<a href="ClientCall.Listener.html" title="class in io.grpc">ClientCall.Listener</a>&lt;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">RespT</a>&gt;&nbsp;responseListener,
<a href="Metadata.html" title="class in io.grpc">Metadata</a>&nbsp;headers)</code></th>
<td class="colLast">
<div class="block">Start a call, using <code>responseListener</code> for processing response messages.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink">toString</span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.io.grpc.ForwardingClientCall">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;io.grpc.<a href="ForwardingClientCall.html" title="class in io.grpc">ForwardingClientCall</a></h3>
<code><a href="ForwardingClientCall.html#sendMessage(ReqT)">sendMessage</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(io.grpc.ClientCall)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>CheckedForwardingClientCall</h4>
<pre>protected&nbsp;CheckedForwardingClientCall&#8203;(<a href="ClientCall.html" title="class in io.grpc">ClientCall</a>&lt;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">ReqT</a>,&#8203;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">RespT</a>&gt;&nbsp;delegate)</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="checkedStart(io.grpc.ClientCall.Listener,io.grpc.Metadata)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkedStart</h4>
<pre class="methodSignature">protected abstract&nbsp;void&nbsp;checkedStart&#8203;(<a href="ClientCall.Listener.html" title="class in io.grpc">ClientCall.Listener</a>&lt;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">RespT</a>&gt;&nbsp;responseListener,
<a href="Metadata.html" title="class in io.grpc">Metadata</a>&nbsp;headers)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang" class="externalLink">Exception</a></pre>
<div class="block">Subclasses implement the start logic here that would normally belong to <code>start()</code>.
<p>Implementation should call <code>this.delegate().start()</code> in the normal path. Exceptions
may safely be thrown prior to calling <code>this.delegate().start()</code>. Such exceptions will
be handled by <code>CheckedForwardingClientCall</code> and be delivered to <code>
responseListener</code>. Exceptions <em>must not</em> be thrown after calling <code>
this.delegate().start()</code>, as this can result in <a href="ClientCall.Listener.html#onClose(io.grpc.Status,io.grpc.Metadata)"><code>ClientCall.Listener.onClose(io.grpc.Status, io.grpc.Metadata)</code></a> being
called multiple times.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang" class="externalLink">Exception</a></code></dd>
</dl>
</li>
</ul>
<a id="delegate()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>delegate</h4>
<pre class="methodSignature">protected final&nbsp;<a href="ClientCall.html" title="class in io.grpc">ClientCall</a>&lt;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">ReqT</a>,&#8203;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">RespT</a>&gt;&nbsp;delegate()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="ForwardingClientCall.html#delegate()">ForwardingClientCall</a></code></span></div>
<div class="block">Returns the delegated <code>ClientCall</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="ForwardingClientCall.html#delegate()">delegate</a></code>&nbsp;in class&nbsp;<code><a href="ForwardingClientCall.html" title="class in io.grpc">ForwardingClientCall</a>&lt;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">ReqT</a>,&#8203;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">RespT</a>&gt;</code></dd>
</dl>
</li>
</ul>
<a id="start(io.grpc.ClientCall.Listener,io.grpc.Metadata)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>start</h4>
<pre class="methodSignature">public final&nbsp;void&nbsp;start&#8203;(<a href="ClientCall.Listener.html" title="class in io.grpc">ClientCall.Listener</a>&lt;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">RespT</a>&gt;&nbsp;responseListener,
<a href="Metadata.html" title="class in io.grpc">Metadata</a>&nbsp;headers)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="ClientCall.html#start(io.grpc.ClientCall.Listener,io.grpc.Metadata)">ClientCall</a></code></span></div>
<div class="block">Start a call, using <code>responseListener</code> for processing response messages.
<p>It must be called prior to any other method on this class, except for <a href="ClientCall.html#cancel(java.lang.String,java.lang.Throwable)"><code>ClientCall.cancel(java.lang.String, java.lang.Throwable)</code></a> which
may be called at any time.
<p>Since <a href="Metadata.html" title="class in io.grpc"><code>Metadata</code></a> is not thread-safe, the caller must not access (read or write) <code>
headers</code> after this point.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="ForwardingClientCall.html#start(io.grpc.ClientCall.Listener,io.grpc.Metadata)">start</a></code>&nbsp;in class&nbsp;<code><a href="ForwardingClientCall.html" title="class in io.grpc">ForwardingClientCall</a>&lt;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">ReqT</a>,&#8203;<a href="ClientInterceptors.CheckedForwardingClientCall.html" title="type parameter in ClientInterceptors.CheckedForwardingClientCall">RespT</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>responseListener</code> - receives response messages</dd>
<dd><code>headers</code> - which can contain extra call metadata, e.g. authentication credentials.</dd>
</dl>
</li>
</ul>
<a id="request(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>request</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;request&#8203;(int&nbsp;numMessages)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="ClientCall.html#request(int)">ClientCall</a></code></span></div>
<div class="block">Requests up to the given number of messages from the call to be delivered to
<a href="ClientCall.Listener.html#onMessage(T)"><code>ClientCall.Listener.onMessage(Object)</code></a>. No additional messages will be delivered.
<p>Message delivery is guaranteed to be sequential in the order received. In addition, the
listener methods will not be accessed concurrently. While it is not guaranteed that the same
thread will always be used, it is guaranteed that only a single thread will access the listener
at a time.
<p>If it is desired to bypass inbound flow control, a very large number of messages can be
specified (e.g. <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true#MAX_VALUE" title="class or interface in java.lang" class="externalLink"><code>Integer.MAX_VALUE</code></a>).
<p>If called multiple times, the number of messages able to delivered will be the sum of the
calls.
<p>This method is safe to call from multiple threads without external synchronization.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="ClientCall.html#request(int)">request</a></code>&nbsp;in class&nbsp;<code><a href="ClientCall.html" title="class in io.grpc">ClientCall</a>&lt;ReqT,&#8203;RespT&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>numMessages</code> - the requested number of messages to be delivered to the listener. Must be
non-negative.</dd>
</dl>
</li>
</ul>
<a id="cancel(java.lang.String,java.lang.Throwable)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cancel</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;cancel&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/javax/annotation/Nullable.html?is-external=true" title="class or interface in javax.annotation" class="externalLink">@Nullable</a>
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;message,
<a href="https://docs.oracle.com/javase/8/docs/api/javax/annotation/Nullable.html?is-external=true" title="class or interface in javax.annotation" class="externalLink">@Nullable</a>
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang" class="externalLink">Throwable</a>&nbsp;cause)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="ClientCall.html#cancel(java.lang.String,java.lang.Throwable)">ClientCall</a></code></span></div>
<div class="block">Prevent any further processing for this <code>ClientCall</code>. No further messages may be sent or
will be received. The server is informed of cancellations, but may not stop processing the
call. Cancellation is permitted even if previously <a href="ClientCall.html#halfClose()"><code>ClientCall.halfClose()</code></a>d. Cancelling an already
<code>cancel()</code>ed <code>ClientCall</code> has no effect.
<p>No other methods on this class can be called after this method has been called.
<p>It is recommended that at least one of the arguments to be non-<code>null</code>, to provide
useful debug information. Both argument being null may log warnings and result in suboptimal
performance. Also note that the provided information will not be sent to the server.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="ClientCall.html#cancel(java.lang.String,java.lang.Throwable)">cancel</a></code>&nbsp;in class&nbsp;<code><a href="ClientCall.html" title="class in io.grpc">ClientCall</a>&lt;ReqT,&#8203;RespT&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>message</code> - if not <code>null</code>, will appear as the description of the CANCELLED status</dd>
<dd><code>cause</code> - if not <code>null</code>, will appear as the cause of the CANCELLED status</dd>
</dl>
</li>
</ul>
<a id="halfClose()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>halfClose</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;halfClose()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="ClientCall.html#halfClose()">ClientCall</a></code></span></div>
<div class="block">Close the call for request message sending. Incoming response messages are unaffected. This
should be called when no more messages will be sent from the client.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="ClientCall.html#halfClose()">halfClose</a></code>&nbsp;in class&nbsp;<code><a href="ClientCall.html" title="class in io.grpc">ClientCall</a>&lt;ReqT,&#8203;RespT&gt;</code></dd>
</dl>
</li>
</ul>
<a id="setMessageCompression(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setMessageCompression</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setMessageCompression&#8203;(boolean&nbsp;enabled)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="ClientCall.html#setMessageCompression(boolean)">ClientCall</a></code></span></div>
<div class="block">Enables per-message compression, if an encoding type has been negotiated. If no message
encoding has been negotiated, this is a no-op. By default per-message compression is enabled,
but may not have any effect if compression is not enabled on the call.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="ClientCall.html#setMessageCompression(boolean)">setMessageCompression</a></code>&nbsp;in class&nbsp;<code><a href="ClientCall.html" title="class in io.grpc">ClientCall</a>&lt;ReqT,&#8203;RespT&gt;</code></dd>
</dl>
</li>
</ul>
<a id="isReady()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isReady</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isReady()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="ClientCall.html#isReady()">ClientCall</a></code></span></div>
<div class="block">If <code>true</code>, indicates that the call is capable of sending additional messages
without requiring excessive buffering internally. This event is
just a suggestion and the application is free to ignore it, however doing so may
result in excessive buffering within the call.
<p>If <code>false</code>, <a href="ClientCall.Listener.html#onReady()"><code>ClientCall.Listener.onReady()</code></a> will be called after <code>isReady()</code>
transitions to <code>true</code>.
<p>If the type of the call is either <a href="MethodDescriptor.MethodType.html#UNARY"><code>MethodDescriptor.MethodType.UNARY</code></a> or
<a href="MethodDescriptor.MethodType.html#SERVER_STREAMING"><code>MethodDescriptor.MethodType.SERVER_STREAMING</code></a>, this method may persistently return
false. Calls that send exactly one message should not check this method.
<p>This abstract class's implementation always returns <code>true</code>. Implementations generally
override the method.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="ClientCall.html#isReady()">isReady</a></code>&nbsp;in class&nbsp;<code><a href="ClientCall.html" title="class in io.grpc">ClientCall</a>&lt;ReqT,&#8203;RespT&gt;</code></dd>
</dl>
</li>
</ul>
<a id="getAttributes()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAttributes</h4>
<pre class="methodSignature">public&nbsp;<a href="Attributes.html" title="class in io.grpc">Attributes</a>&nbsp;getAttributes()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="ClientCall.html#getAttributes()">ClientCall</a></code></span></div>
<div class="block">Returns additional properties of the call. May only be called after <a href="ClientCall.Listener.html#onHeaders(io.grpc.Metadata)"><code>ClientCall.Listener.onHeaders(io.grpc.Metadata)</code></a>
or <a href="ClientCall.Listener.html#onClose(io.grpc.Status,io.grpc.Metadata)"><code>ClientCall.Listener.onClose(io.grpc.Status, io.grpc.Metadata)</code></a>. If called prematurely, the implementation may throw <code>
IllegalStateException</code> or return arbitrary <code>Attributes</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="ClientCall.html#getAttributes()">getAttributes</a></code>&nbsp;in class&nbsp;<code><a href="ClientCall.html" title="class in io.grpc">ClientCall</a>&lt;ReqT,&#8203;RespT&gt;</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>non-<code>null</code> attributes</dd>
</dl>
</li>
</ul>
<a id="toString()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang" class="externalLink">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></code></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/ClientInterceptors.CheckedForwardingClientCall.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><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>
</footer>
</body>
</html>