@ExperimentalApi(value="https://github.com/grpc/grpc-java/issues/1771") public abstract class ForwardingLoadBalancerHelper extends LoadBalancer.Helper
| Constructor and Description |
|---|
ForwardingLoadBalancerHelper() |
| Modifier and Type | Method and Description |
|---|---|
ManagedChannel |
createOobChannel(EquivalentAddressGroup eag,
String authority)
Out-of-band channel for LoadBalancer’s own RPC needs, e.g., talking to an external
load-balancer service.
|
ManagedChannel |
createResolvingOobChannel(String target)
Creates an out-of-band channel for LoadBalancer's own RPC needs, e.g., talking to an external
load-balancer service, that is specified by a target string.
|
ManagedChannelBuilder<?> |
createResolvingOobChannelBuilder(String target)
Creates an out-of-band channel builder for LoadBalancer's own RPC needs, e.g., talking to an
external load-balancer service, that is specified by a target string.
|
LoadBalancer.Subchannel |
createSubchannel(List<EquivalentAddressGroup> addrs,
Attributes attrs)
Deprecated.
|
LoadBalancer.Subchannel |
createSubchannel(LoadBalancer.CreateSubchannelArgs args)
Creates a Subchannel, which is a logical connection to the given group of addresses which are
considered equivalent.
|
protected abstract LoadBalancer.Helper |
delegate()
Returns the underlying helper.
|
String |
getAuthority()
Returns the authority string of the channel, which is derived from the DNS-style target name.
|
ChannelLogger |
getChannelLogger()
Returns the
ChannelLogger for the Channel served by this LoadBalancer. |
NameResolver.Args |
getNameResolverArgs()
Returns the
NameResolver.Args that the Channel uses to create NameResolvers. |
NameResolver.Factory |
getNameResolverFactory()
Deprecated.
|
NameResolverRegistry |
getNameResolverRegistry()
Returns the
NameResolverRegistry that the Channel uses to look for NameResolvers. |
ScheduledExecutorService |
getScheduledExecutorService()
Returns a
ScheduledExecutorService for scheduling delayed tasks. |
SynchronizationContext |
getSynchronizationContext()
Returns a
SynchronizationContext that runs tasks in the same Synchronization Context
as that the callback methods on the LoadBalancer interface are run in. |
void |
refreshNameResolution()
Call
NameResolver.refresh() on the channel's resolver. |
void |
runSerialized(Runnable task)
Deprecated.
|
String |
toString() |
void |
updateBalancingState(ConnectivityState newState,
LoadBalancer.SubchannelPicker newPicker)
Set a new state with a new picker to the channel.
|
void |
updateOobChannelAddresses(ManagedChannel channel,
EquivalentAddressGroup eag)
Updates the addresses used for connections in the
Channel that was created by LoadBalancer.Helper.createOobChannel(EquivalentAddressGroup, String). |
void |
updateSubchannelAddresses(LoadBalancer.Subchannel subchannel,
List<EquivalentAddressGroup> addrs)
Deprecated.
|
createSubchannel, updateSubchannelAddressesprotected abstract LoadBalancer.Helper delegate()
@Deprecated public LoadBalancer.Subchannel createSubchannel(List<EquivalentAddressGroup> addrs, Attributes attrs)
LoadBalancer.Helperattrs are custom attributes associated with this
Subchannel, and can be accessed later through Subchannel.getAttributes().
It is recommended you call this method from the Synchronization Context, otherwise your
logic around the creation may race with LoadBalancer.handleSubchannelState(io.grpc.LoadBalancer.Subchannel, io.grpc.ConnectivityStateInfo). See
#5015 for more discussions.
The LoadBalancer is responsible for closing unused Subchannels, and closing all
Subchannels within LoadBalancer.shutdown().
createSubchannel in class LoadBalancer.Helperpublic LoadBalancer.Subchannel createSubchannel(LoadBalancer.CreateSubchannelArgs args)
LoadBalancer.Helperattrs are custom attributes associated with this
Subchannel, and can be accessed later through Subchannel.getAttributes().
The LoadBalancer is responsible for closing unused Subchannels, and closing all
Subchannels within LoadBalancer.shutdown().
It must be called from the Synchronization Context
createSubchannel in class LoadBalancer.Helper@Deprecated public void updateSubchannelAddresses(LoadBalancer.Subchannel subchannel, List<EquivalentAddressGroup> addrs)
LoadBalancer.Helpersubchannel. This method is superior to
LoadBalancer.Helper.createSubchannel(io.grpc.EquivalentAddressGroup, io.grpc.Attributes) when the new and old addresses overlap, since the subchannel can
continue using an existing connection.
It should be called from the Synchronization Context. Currently will log a warning if violated. It will become an exception eventually. See #5015 for the background.
updateSubchannelAddresses in class LoadBalancer.Helperpublic ManagedChannel createOobChannel(EquivalentAddressGroup eag, String authority)
LoadBalancer.HelperThe LoadBalancer is responsible for closing unused OOB channels, and closing all OOB
channels within LoadBalancer.shutdown().
createOobChannel in class LoadBalancer.Helperpublic void updateOobChannelAddresses(ManagedChannel channel, EquivalentAddressGroup eag)
LoadBalancer.HelperChannel that was created by LoadBalancer.Helper.createOobChannel(EquivalentAddressGroup, String). This is superior to LoadBalancer.Helper.createOobChannel(EquivalentAddressGroup, String) when the old and new addresses overlap,
since the channel can continue using an existing connection.updateOobChannelAddresses in class LoadBalancer.Helperpublic ManagedChannelBuilder<?> createResolvingOobChannelBuilder(String target)
LoadBalancer.HelperManagedChannelBuilder.forTarget(java.lang.String) for the format of a target string.
The target string will be resolved by a NameResolver created according to the
target string.
The LoadBalancer is responsible for closing unused OOB channels, and closing all OOB
channels within LoadBalancer.shutdown().
createResolvingOobChannelBuilder in class LoadBalancer.Helperpublic ManagedChannel createResolvingOobChannel(String target)
LoadBalancer.HelperManagedChannelBuilder.forTarget(java.lang.String) for the format of a target string.
The target string will be resolved by a NameResolver created according to the
target string.
The LoadBalancer is responsible for closing unused OOB channels, and closing all OOB
channels within LoadBalancer.shutdown().
createResolvingOobChannel in class LoadBalancer.Helperpublic void updateBalancingState(ConnectivityState newState, LoadBalancer.SubchannelPicker newPicker)
LoadBalancer.HelperWhen a new picker is provided via updateBalancingState(), the channel will apply
the picker on all buffered RPCs, by calling LoadBalancer.SubchannelPicker.pickSubchannel(
LoadBalancer.PickSubchannelArgs).
The channel will hold the picker and use it for all RPCs, until updateBalancingState() is called again and a new picker replaces the old one. If updateBalancingState() has never been called, the channel will buffer all RPCs until a
picker is provided.
It should be called from the Synchronization Context. Currently will log a warning if violated. It will become an exception eventually. See #5015 for the background.
The passed state will be the channel's new state. The SHUTDOWN state should not be passed and its behavior is undefined.
updateBalancingState in class LoadBalancer.Helperpublic void refreshNameResolution()
LoadBalancer.HelperNameResolver.refresh() on the channel's resolver.
It should be called from the Synchronization Context. Currently will log a warning if violated. It will become an exception eventually. See #5015 for the background.
refreshNameResolution in class LoadBalancer.Helper@Deprecated public void runSerialized(Runnable task)
LoadBalancer.HelperLoadBalancer interface.runSerialized in class LoadBalancer.Helper@Deprecated public NameResolver.Factory getNameResolverFactory()
LoadBalancer.HelpergetNameResolverFactory in class LoadBalancer.Helperpublic String getAuthority()
LoadBalancer.HelpergetAuthority in class LoadBalancer.Helperpublic SynchronizationContext getSynchronizationContext()
LoadBalancer.HelperSynchronizationContext that runs tasks in the same Synchronization Context
as that the callback methods on the LoadBalancer interface are run in.
Pro-tip: in order to call SynchronizationContext.schedule(java.lang.Runnable, long, java.util.concurrent.TimeUnit, java.util.concurrent.ScheduledExecutorService), you need to provide a
ScheduledExecutorService. LoadBalancer.Helper.getScheduledExecutorService() is provided for your
convenience.
getSynchronizationContext in class LoadBalancer.Helperpublic ScheduledExecutorService getScheduledExecutorService()
LoadBalancer.HelperScheduledExecutorService for scheduling delayed tasks.
This service is a shared resource and is only meant for quick tasks. DO NOT block or run time-consuming tasks.
The returned service doesn't support shutdown()
and shutdownNow(). They will throw if called.
getScheduledExecutorService in class LoadBalancer.Helperpublic ChannelLogger getChannelLogger()
LoadBalancer.HelperChannelLogger for the Channel served by this LoadBalancer.getChannelLogger in class LoadBalancer.Helperpublic NameResolver.Args getNameResolverArgs()
LoadBalancer.HelperNameResolver.Args that the Channel uses to create NameResolvers.getNameResolverArgs in class LoadBalancer.Helperpublic NameResolverRegistry getNameResolverRegistry()
LoadBalancer.HelperNameResolverRegistry that the Channel uses to look for NameResolvers.getNameResolverRegistry in class LoadBalancer.Helper