private void UpdateSubchannelState(Subchannel subchannel, SubchannelState state) { var index = FindSubchannel(_addressSubchannels, subchannel); if (index == null) { SubchannelsLoadBalancerLog.IgnoredSubchannelStateChange(_logger, subchannel.Id); return; } SubchannelsLoadBalancerLog.ProcessingSubchannelStateChanged(_logger, subchannel.Id, state.State, state.Status); UpdateBalancingState(state.Status); if (state.State == ConnectivityState.TransientFailure || state.State == ConnectivityState.Idle) { SubchannelsLoadBalancerLog.RefreshingResolverForSubchannel(_logger, subchannel.Id, state.State); Controller.RefreshResolver(); } if (state.State == ConnectivityState.Idle) { SubchannelsLoadBalancerLog.RequestingConnectionForSubchannel(_logger, subchannel.Id, state.State); subchannel.RequestConnection(); } }
public override PickResult Pick(PickContext context) { Subchannel.RequestConnection(); return(base.Pick(context)); }
/// <inheritdoc /> public override void RequestConnection() { _subchannel?.RequestConnection(); }