in ratis-logservice/src/main/java/org/apache/ratis/logservice/server/LogStateMachine.java [253:320]
public CompletableFuture<Message> query(Message request) {
try {
checkInitialization();
LogServiceRequestProto logServiceRequestProto =
LogServiceRequestProto.parseFrom(request.getContent());
if (LOG.isTraceEnabled()) {
LOG.trace("Processing LogService query: {}", TextFormat.shortDebugString(logServiceRequestProto));
}
switch (logServiceRequestProto.getRequestCase()) {
case READNEXTQUERY:
return recordTime(readNextQueryTimer, new Task(){
@Override public CompletableFuture<Message> run() {
return processReadRequest(logServiceRequestProto);
}
});
case SIZEREQUEST:
return recordTime(sizeRequestTimer, new Task(){
@Override public CompletableFuture<Message> run() {
return processGetSizeRequest(logServiceRequestProto);
}
});
case STARTINDEXQUERY:
return recordTime(startIndexTimer, new Task(){
@Override public CompletableFuture<Message> run() {
return processGetStartIndexRequest(logServiceRequestProto);
}
});
case GETSTATE:
return recordTime(getStateTimer, new Task(){
@Override public CompletableFuture<Message> run() {
return processGetStateRequest();
}
});
case LASTINDEXQUERY:
return recordTime(lastIndexQueryTimer, new Task(){
@Override public CompletableFuture<Message> run() {
return processGetLastCommittedIndexRequest(logServiceRequestProto);
}
});
case LENGTHQUERY:
return recordTime(lengthQueryTimer, new Task(){
@Override public CompletableFuture<Message> run() {
return processGetLengthRequest(logServiceRequestProto);
}
});
case ARCHIVELOG:
return recordTime(archiveLogRequestTimer, new Task(){
@Override public CompletableFuture<Message> run() {
return processArchiveLog(logServiceRequestProto);
}});
case EXPORTINFO:
return processExportInfo();
default:
// TODO
throw new RuntimeException(
"Wrong message type for query: " + logServiceRequestProto.getRequestCase());
}
} catch (IOException e) {
// TODO exception handling
throw new RuntimeException(e);
}
}