code: @Process(actionType = ReadLogFiles.class)
      public void readLogFiles(final Dispatcher.Channel channel) {
          final ModelNode op = listLogFilesOp();
  
          dispatcher.execute(new DMRAction(op), new AsyncCallback<DMRResponse>() {
              @Override
              public void onFailure(Throwable caught) {
                  channel.nack(caught);
              }
  
              @Override
              public void onSuccess(DMRResponse result) {
                  ModelNode response = result.get();
                  if (response.isFailure()) {
                      channel.nack(new RuntimeException("Failed to read list of log files using " + op +
                              ": " + response.getFailureDescription()));
                  } else {
                      logFiles.clear();
                      activeLogFile = null;
  
                      List<Property> properties = response.get(RESULT).asPropertyList();
                      for (Property property : properties) {
                          ModelNode node = property.getValue();
                          node.get(FILE_NAME).set(property.getName());
                          logFiles.add(node);
                      }
  
                      // mark outdated log views as stale
                      Set<String> names = new HashSet<>();
                      for (ModelNode logFile : logFiles) {
                          names.add(logFile.get(FILE_NAME).asString());
                      }
                      for (Map.Entry<String, LogFile> entry : states.entrySet()) {
                          if (!names.contains(entry.getKey())) {
                              entry.getValue().setStale(true);
                          }
                      }
                      channel.ack();
                  }
              }
          });
      }
docs: ------------------------------------------------------ process methods