in grpc-gcp/src/main/java/com/google/cloud/grpc/GcpManagedChannel.java [1411:1454]
public ConnectivityState getState(boolean requestConnection) {
if (requestConnection && getNumberOfChannels() == 0) {
createFirstChannel();
}
int ready = 0;
int idle = 0;
int connecting = 0;
int transientFailure = 0;
int shutdown = 0;
for (ChannelRef channelRef : channelRefs) {
ConnectivityState cur = channelRef.getChannel().getState(requestConnection);
switch (cur) {
case READY:
ready++;
break;
case SHUTDOWN:
shutdown++;
break;
case TRANSIENT_FAILURE:
transientFailure++;
break;
case CONNECTING:
connecting++;
break;
case IDLE:
idle++;
break;
}
}
if (ready > 0) {
return ConnectivityState.READY;
} else if (connecting > 0) {
return ConnectivityState.CONNECTING;
} else if (transientFailure > 0) {
return ConnectivityState.TRANSIENT_FAILURE;
} else if (idle > 0) {
return ConnectivityState.IDLE;
} else if (shutdown > 0) {
return ConnectivityState.SHUTDOWN;
}
// When no channels are created yet it is also IDLE.
return ConnectivityState.IDLE;
}