in grpc-gcp/src/main/java/com/google/cloud/grpc/GcpManagedChannel.java [969:994]
public void run() {
if (channel == null) {
return;
}
// Keep minSize channels always connected.
boolean requestConnection = channelId < minSize;
ConnectivityState newState = channel.getState(requestConnection);
logger.finer(
log("Channel %d state change detected: %s -> %s", channelId, currentState, newState));
if (newState == ConnectivityState.READY && currentState != ConnectivityState.READY) {
incReadyChannels();
saveReadinessTime(System.nanoTime() - connectingStartNanos);
}
if (newState != ConnectivityState.READY && currentState == ConnectivityState.READY) {
decReadyChannels();
}
if (newState == ConnectivityState.CONNECTING
&& currentState != ConnectivityState.CONNECTING) {
connectingStartNanos = System.nanoTime();
}
currentState = newState;
processChannelStateChange(channelId, newState);
if (newState != ConnectivityState.SHUTDOWN) {
channel.notifyWhenStateChanged(newState, this);
}
}