in grpc-gcp/src/main/java/com/google/cloud/grpc/GcpManagedChannel.java [1582:1604]
protected <ReqT, RespT> List<String> checkKeys(
Object message, boolean isReq, MethodDescriptor<ReqT, RespT> methodDescriptor) {
if (!(message instanceof MessageOrBuilder)) {
return null;
}
AffinityConfig affinity = methodToAffinity.get(methodDescriptor.getFullMethodName());
if (affinity != null) {
AffinityConfig.Command cmd = affinity.getCommand();
String keyName = affinity.getAffinityKey();
List<String> keys = getKeysFromMessage((MessageOrBuilder) message, keyName);
if (isReq && (cmd == AffinityConfig.Command.UNBIND || cmd == AffinityConfig.Command.BOUND)) {
if (keys.size() > 1) {
throw new IllegalStateException("Duplicate affinity key in the request message");
}
return keys;
}
if (!isReq && cmd == AffinityConfig.Command.BIND) {
return keys;
}
}
return null;
}