blob: b73463119ecc044083d709b4101e9c93ee9c33ee [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>GracefulSwitchLoadBalancer (grpc-all 1.75.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="GracefulSwitchLoadBalancer (grpc-all 1.75.0 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":9,"i2":10,"i3":10,"i4":10,"i5":42,"i6":9,"i7":9,"i8":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated 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/GracefulSwitchLoadBalancer.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><a href="#field.summary">Field</a>&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.util</a></div>
<h2 title="Class GracefulSwitchLoadBalancer" class="title">Class GracefulSwitchLoadBalancer</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="../LoadBalancer.html" title="class in io.grpc">io.grpc.LoadBalancer</a></li>
<li>
<ul class="inheritance">
<li><a href="ForwardingLoadBalancer.html" title="class in io.grpc.util">io.grpc.util.ForwardingLoadBalancer</a></li>
<li>
<ul class="inheritance">
<li>io.grpc.util.GracefulSwitchLoadBalancer</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre><a href="../ExperimentalApi.html" title="annotation in io.grpc">@ExperimentalApi</a>("https://github.com/grpc/grpc-java/issues/5999")
@NotThreadSafe
public final class <span class="typeNameLabel">GracefulSwitchLoadBalancer</span>
extends <a href="ForwardingLoadBalancer.html" title="class in io.grpc.util">ForwardingLoadBalancer</a></pre>
<div class="block">A load balancer that gracefully swaps to a new lb policy. If the channel is currently in a state
other than READY, the new policy will be swapped into place immediately. Otherwise, the channel
will keep using the old policy until the new policy leaves CONNECTING or the old policy exits
READY.
<p>The child balancer and configuration is specified using service config. Config objects are
generally created by calling <a href="#parseLoadBalancingPolicyConfig(java.util.List)"><code>parseLoadBalancingPolicyConfig(List)</code></a> from a
<a href="../LoadBalancerProvider.html#parseLoadBalancingPolicyConfig(java.util.Map)"><code>provider's parseLoadBalancingPolicyConfig()</code></a> implementation.</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.LoadBalancer">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;io.grpc.<a href="../LoadBalancer.html" title="class in io.grpc">LoadBalancer</a></h3>
<code><a href="../LoadBalancer.CreateSubchannelArgs.html" title="class in io.grpc">LoadBalancer.CreateSubchannelArgs</a>, <a href="../LoadBalancer.ErrorPicker.html" title="class in io.grpc">LoadBalancer.ErrorPicker</a>, <a href="../LoadBalancer.Factory.html" title="class in io.grpc">LoadBalancer.Factory</a>, <a href="../LoadBalancer.FixedResultPicker.html" title="class in io.grpc">LoadBalancer.FixedResultPicker</a>, <a href="../LoadBalancer.Helper.html" title="class in io.grpc">LoadBalancer.Helper</a>, <a href="../LoadBalancer.PickDetailsConsumer.html" title="interface in io.grpc">LoadBalancer.PickDetailsConsumer</a>, <a href="../LoadBalancer.PickResult.html" title="class in io.grpc">LoadBalancer.PickResult</a>, <a href="../LoadBalancer.PickSubchannelArgs.html" title="class in io.grpc">LoadBalancer.PickSubchannelArgs</a>, <a href="../LoadBalancer.ResolvedAddresses.html" title="class in io.grpc">LoadBalancer.ResolvedAddresses</a>, <a href="../LoadBalancer.Subchannel.html" title="class in io.grpc">LoadBalancer.Subchannel</a>, <a href="../LoadBalancer.SubchannelPicker.html" title="class in io.grpc">LoadBalancer.SubchannelPicker</a>, <a href="../LoadBalancer.SubchannelStateListener.html" title="interface in io.grpc">LoadBalancer.SubchannelStateListener</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.io.grpc.LoadBalancer">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;io.grpc.<a href="../LoadBalancer.html" title="class in io.grpc">LoadBalancer</a></h3>
<code><a href="../LoadBalancer.html#ATTR_HEALTH_CHECKING_CONFIG">ATTR_HEALTH_CHECKING_CONFIG</a>, <a href="../LoadBalancer.html#DISABLE_SUBCHANNEL_RECONNECT_KEY">DISABLE_SUBCHANNEL_RECONNECT_KEY</a>, <a href="../LoadBalancer.html#EMPTY_PICKER">EMPTY_PICKER</a>, <a href="../LoadBalancer.html#HAS_HEALTH_PRODUCER_LISTENER_KEY">HAS_HEALTH_PRODUCER_LISTENER_KEY</a>, <a href="../LoadBalancer.html#HEALTH_CONSUMER_LISTENER_ARG_KEY">HEALTH_CONSUMER_LISTENER_ARG_KEY</a>, <a href="../LoadBalancer.html#IS_PETIOLE_POLICY">IS_PETIOLE_POLICY</a></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">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(io.grpc.LoadBalancer.Helper)">GracefulSwitchLoadBalancer</a></span>&#8203;(<a href="../LoadBalancer.Helper.html" title="class in io.grpc">LoadBalancer.Helper</a>&nbsp;helper)</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="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></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><span id="t6" class="tableTab"><span><a href="javascript:show(32);">Deprecated 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><a href="../Status.html" title="class in io.grpc">Status</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#acceptResolvedAddresses(io.grpc.LoadBalancer.ResolvedAddresses)">acceptResolvedAddresses</a></span>&#8203;(<a href="../LoadBalancer.ResolvedAddresses.html" title="class in io.grpc">LoadBalancer.ResolvedAddresses</a>&nbsp;resolvedAddresses)</code></th>
<td class="colLast">
<div class="block">Accepts newly resolved addresses from the name resolution system.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static <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></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createLoadBalancingPolicyConfig(io.grpc.LoadBalancer.Factory,java.lang.Object)">createLoadBalancingPolicyConfig</a></span>&#8203;(<a href="../LoadBalancer.Factory.html" title="class in io.grpc">LoadBalancer.Factory</a>&nbsp;childFactory,
<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>&nbsp;childConfig)</code></th>
<td class="colLast">
<div class="block">Directly create a config to pass to GracefulSwitch.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected <a href="../LoadBalancer.html" title="class in io.grpc">LoadBalancer</a></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 underlying balancer.</div>
</td>
</tr>
<tr id="i3" 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"><a href="#delegateType()">delegateType</a></span>()</code></th>
<td class="colLast">&nbsp;</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="#handleResolvedAddresses(io.grpc.LoadBalancer.ResolvedAddresses)">handleResolvedAddresses</a></span>&#8203;(<a href="../LoadBalancer.ResolvedAddresses.html" title="class in io.grpc">LoadBalancer.ResolvedAddresses</a>&nbsp;resolvedAddresses)</code></th>
<td class="colLast">
<div class="block">Handles newly resolved server groups and metadata attributes from name resolution system.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#handleSubchannelState(io.grpc.LoadBalancer.Subchannel,io.grpc.ConnectivityStateInfo)">handleSubchannelState</a></span>&#8203;(<a href="../LoadBalancer.Subchannel.html" title="class in io.grpc">LoadBalancer.Subchannel</a>&nbsp;subchannel,
<a href="../ConnectivityStateInfo.html" title="class in io.grpc">ConnectivityStateInfo</a>&nbsp;stateInfo)</code></th>
<td class="colLast">
<div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static <a href="../NameResolver.ConfigOrError.html" title="class in io.grpc">NameResolver.ConfigOrError</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#parseLoadBalancingPolicyConfig(java.util.List)">parseLoadBalancingPolicyConfig</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util" class="externalLink">Map</a>&lt;<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>,&#8203;?&gt;&gt;&nbsp;loadBalancingConfigs)</code></th>
<td class="colLast">
<div class="block">Provided a JSON list of LoadBalancingConfigs, parse it into a config to pass to GracefulSwitch.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static <a href="../NameResolver.ConfigOrError.html" title="class in io.grpc">NameResolver.ConfigOrError</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#parseLoadBalancingPolicyConfig(java.util.List,io.grpc.LoadBalancerRegistry)">parseLoadBalancingPolicyConfig</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util" class="externalLink">Map</a>&lt;<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>,&#8203;?&gt;&gt;&nbsp;loadBalancingConfigs,
<a href="../LoadBalancerRegistry.html" title="class in io.grpc">LoadBalancerRegistry</a>&nbsp;lbRegistry)</code></th>
<td class="colLast">
<div class="block">Provided a JSON list of LoadBalancingConfigs, parse it into a config to pass to GracefulSwitch.</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="#shutdown()">shutdown</a></span>()</code></th>
<td class="colLast">
<div class="block">The channel asks the load-balancer to shutdown.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.io.grpc.util.ForwardingLoadBalancer">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;io.grpc.util.<a href="ForwardingLoadBalancer.html" title="class in io.grpc.util">ForwardingLoadBalancer</a></h3>
<code><a href="ForwardingLoadBalancer.html#canHandleEmptyAddressListFromNameResolution()">canHandleEmptyAddressListFromNameResolution</a>, <a href="ForwardingLoadBalancer.html#handleNameResolutionError(io.grpc.Status)">handleNameResolutionError</a>, <a href="ForwardingLoadBalancer.html#requestConnection()">requestConnection</a>, <a href="ForwardingLoadBalancer.html#toString()">toString</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.LoadBalancer.Helper)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>GracefulSwitchLoadBalancer</h4>
<pre>public&nbsp;GracefulSwitchLoadBalancer&#8203;(<a href="../LoadBalancer.Helper.html" title="class in io.grpc">LoadBalancer.Helper</a>&nbsp;helper)</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="handleResolvedAddresses(io.grpc.LoadBalancer.ResolvedAddresses)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handleResolvedAddresses</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;handleResolvedAddresses&#8203;(<a href="../LoadBalancer.ResolvedAddresses.html" title="class in io.grpc">LoadBalancer.ResolvedAddresses</a>&nbsp;resolvedAddresses)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../LoadBalancer.html#handleResolvedAddresses(io.grpc.LoadBalancer.ResolvedAddresses)">LoadBalancer</a></code></span></div>
<div class="block">Handles newly resolved server groups and metadata attributes from name resolution system.
<code>servers</code> contained in <a href="../EquivalentAddressGroup.html" title="class in io.grpc"><code>EquivalentAddressGroup</code></a> should be considered equivalent
but may be flattened into a single list if needed.
<p>Implementations should not modify the given <code>servers</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="ForwardingLoadBalancer.html#handleResolvedAddresses(io.grpc.LoadBalancer.ResolvedAddresses)">handleResolvedAddresses</a></code>&nbsp;in class&nbsp;<code><a href="ForwardingLoadBalancer.html" title="class in io.grpc.util">ForwardingLoadBalancer</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>resolvedAddresses</code> - the resolved server addresses, attributes, and config.</dd>
</dl>
</li>
</ul>
<a id="acceptResolvedAddresses(io.grpc.LoadBalancer.ResolvedAddresses)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>acceptResolvedAddresses</h4>
<pre class="methodSignature">public&nbsp;<a href="../Status.html" title="class in io.grpc">Status</a>&nbsp;acceptResolvedAddresses&#8203;(<a href="../LoadBalancer.ResolvedAddresses.html" title="class in io.grpc">LoadBalancer.ResolvedAddresses</a>&nbsp;resolvedAddresses)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../LoadBalancer.html#acceptResolvedAddresses(io.grpc.LoadBalancer.ResolvedAddresses)">LoadBalancer</a></code></span></div>
<div class="block">Accepts newly resolved addresses from the name resolution system. The <a href="../EquivalentAddressGroup.html" title="class in io.grpc"><code>EquivalentAddressGroup</code></a> addresses should be considered equivalent but may be flattened into a
single list if needed.
<p>Implementations can choose to reject the given addresses by returning <code>false</code>.
<p>Implementations should not modify the given <code>addresses</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../LoadBalancer.html#acceptResolvedAddresses(io.grpc.LoadBalancer.ResolvedAddresses)">acceptResolvedAddresses</a></code>&nbsp;in class&nbsp;<code><a href="../LoadBalancer.html" title="class in io.grpc">LoadBalancer</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>resolvedAddresses</code> - the resolved server addresses, attributes, and config.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if the resolved addresses were accepted. <code>false</code> if rejected.</dd>
</dl>
</li>
</ul>
<a id="delegate()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>delegate</h4>
<pre class="methodSignature">protected&nbsp;<a href="../LoadBalancer.html" title="class in io.grpc">LoadBalancer</a>&nbsp;delegate()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="ForwardingLoadBalancer.html#delegate()">ForwardingLoadBalancer</a></code></span></div>
<div class="block">Returns the underlying balancer.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="ForwardingLoadBalancer.html#delegate()">delegate</a></code>&nbsp;in class&nbsp;<code><a href="ForwardingLoadBalancer.html" title="class in io.grpc.util">ForwardingLoadBalancer</a></code></dd>
</dl>
</li>
</ul>
<a id="handleSubchannelState(io.grpc.LoadBalancer.Subchannel,io.grpc.ConnectivityStateInfo)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handleSubchannelState</h4>
<pre class="methodSignature"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang" class="externalLink">@Deprecated</a>
public&nbsp;void&nbsp;handleSubchannelState&#8203;(<a href="../LoadBalancer.Subchannel.html" title="class in io.grpc">LoadBalancer.Subchannel</a>&nbsp;subchannel,
<a href="../ConnectivityStateInfo.html" title="class in io.grpc">ConnectivityStateInfo</a>&nbsp;stateInfo)</pre>
<div class="deprecationBlock"><span class="deprecatedLabel">Deprecated.</span></div>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../LoadBalancer.html#handleSubchannelState(io.grpc.LoadBalancer.Subchannel,io.grpc.ConnectivityStateInfo)">LoadBalancer</a></code></span></div>
<div class="block">Handles a state change on a Subchannel.
<p>The initial state of a Subchannel is IDLE. You won't get a notification for the initial IDLE
state.
<p>If the new state is not SHUTDOWN, this method should create a new picker and call <a href="../LoadBalancer.Helper.html#updateBalancingState(io.grpc.ConnectivityState,io.grpc.LoadBalancer.SubchannelPicker)"><code>Helper.updateBalancingState()</code></a>. Failing to do so may result in
unnecessary delays of RPCs. Please refer to <a href="../LoadBalancer.PickResult.html#withSubchannel(io.grpc.LoadBalancer.Subchannel,io.grpc.ClientStreamTracer.Factory)"><code>PickResult.withSubchannel()</code></a>'s javadoc for more information.
<p>SHUTDOWN can only happen in two cases. One is that LoadBalancer called <a href="../LoadBalancer.Subchannel.html#shutdown()"><code>LoadBalancer.Subchannel.shutdown()</code></a> earlier, thus it should have already discarded this Subchannel. The other
is that Channel is doing a <a href="../ManagedChannel.html#shutdownNow()"><code>forced shutdown</code></a> or has already
terminated, thus there won't be further requests to LoadBalancer. Therefore, the LoadBalancer
usually don't need to react to a SHUTDOWN state.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="ForwardingLoadBalancer.html#handleSubchannelState(io.grpc.LoadBalancer.Subchannel,io.grpc.ConnectivityStateInfo)">handleSubchannelState</a></code>&nbsp;in class&nbsp;<code><a href="ForwardingLoadBalancer.html" title="class in io.grpc.util">ForwardingLoadBalancer</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>subchannel</code> - the involved Subchannel</dd>
<dd><code>stateInfo</code> - the new state</dd>
</dl>
</li>
</ul>
<a id="shutdown()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>shutdown</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;shutdown()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../LoadBalancer.html#shutdown()">LoadBalancer</a></code></span></div>
<div class="block">The channel asks the load-balancer to shutdown. No more methods on this class will be called
after this method. The implementation should shutdown all Subchannels and OOB channels, and do
any other cleanup as necessary.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="ForwardingLoadBalancer.html#shutdown()">shutdown</a></code>&nbsp;in class&nbsp;<code><a href="ForwardingLoadBalancer.html" title="class in io.grpc.util">ForwardingLoadBalancer</a></code></dd>
</dl>
</li>
</ul>
<a id="delegateType()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>delegateType</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;delegateType()</pre>
</li>
</ul>
<a id="parseLoadBalancingPolicyConfig(java.util.List)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parseLoadBalancingPolicyConfig</h4>
<pre class="methodSignature">public static&nbsp;<a href="../NameResolver.ConfigOrError.html" title="class in io.grpc">NameResolver.ConfigOrError</a>&nbsp;parseLoadBalancingPolicyConfig&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util" class="externalLink">Map</a>&lt;<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>,&#8203;?&gt;&gt;&nbsp;loadBalancingConfigs)</pre>
<div class="block">Provided a JSON list of LoadBalancingConfigs, parse it into a config to pass to GracefulSwitch.</div>
</li>
</ul>
<a id="parseLoadBalancingPolicyConfig(java.util.List,io.grpc.LoadBalancerRegistry)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>parseLoadBalancingPolicyConfig</h4>
<pre class="methodSignature">public static&nbsp;<a href="../NameResolver.ConfigOrError.html" title="class in io.grpc">NameResolver.ConfigOrError</a>&nbsp;parseLoadBalancingPolicyConfig&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util" class="externalLink">Map</a>&lt;<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>,&#8203;?&gt;&gt;&nbsp;loadBalancingConfigs,
<a href="../LoadBalancerRegistry.html" title="class in io.grpc">LoadBalancerRegistry</a>&nbsp;lbRegistry)</pre>
<div class="block">Provided a JSON list of LoadBalancingConfigs, parse it into a config to pass to GracefulSwitch.</div>
</li>
</ul>
<a id="createLoadBalancingPolicyConfig(io.grpc.LoadBalancer.Factory,java.lang.Object)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>createLoadBalancingPolicyConfig</h4>
<pre class="methodSignature">public static&nbsp;<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>&nbsp;createLoadBalancingPolicyConfig&#8203;(<a href="../LoadBalancer.Factory.html" title="class in io.grpc">LoadBalancer.Factory</a>&nbsp;childFactory,
<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/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&nbsp;childConfig)</pre>
<div class="block">Directly create a config to pass to GracefulSwitch. The object returned is the same as would be
found in <code>ConfigOrError.getConfig()</code>.</div>
</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/GracefulSwitchLoadBalancer.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><a href="#field.summary">Field</a>&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>