in ratis-client/src/main/java/org/apache/ratis/client/impl/ClientProtoUtils.java [210:246]
static RaftClientRequestProto toRaftClientRequestProto(RaftClientRequest request, boolean withMsg) {
final RaftClientRequestProto.Builder b = RaftClientRequestProto.newBuilder()
.setRpcRequest(toRaftRpcRequestProtoBuilder(request));
if (withMsg && request.getMessage() != null) {
b.setMessage(toClientMessageEntryProtoBuilder(request.getMessage()));
}
final RaftClientRequest.Type type = request.getType();
switch (type.getTypeCase()) {
case WRITE:
b.setWrite(type.getWrite());
break;
case DATASTREAM:
b.setDataStream(type.getDataStream());
break;
case FORWARD:
b.setForward(type.getForward());
break;
case MESSAGESTREAM:
b.setMessageStream(type.getMessageStream());
break;
case READ:
b.setRead(type.getRead());
break;
case STALEREAD:
b.setStaleRead(type.getStaleRead());
break;
case WATCH:
b.setWatch(type.getWatch());
break;
default:
throw new IllegalArgumentException("Unexpected request type: " + request.getType()
+ " in request " + request);
}
return b.build();
}