public CompletableFuture query()

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);
    }

  }