code: public Map<String, WorkerHeartbeat> readWorkerHeartbeats(Map conf) throws Exception {
          Map<String, WorkerHeartbeat> workerHeartbeats = new HashMap<>();
  
          // get the path: STORM-LOCAL-DIR/workers
          String path = StormConfig.worker_root(conf);
  
          List<String> workerIds = PathUtils.read_dir_contents(path);
  
          if (workerIds == null) {
              LOG.info("No worker dir under " + path);
              return workerHeartbeats;
          }
  
          for (String workerId : workerIds) {
              WorkerHeartbeat whb = readWorkerHeartbeat(conf, workerId);
              // ATTENTION: whb can be null
              workerHeartbeats.put(workerId, whb);
          }
          return workerHeartbeats;
      }
docs: get all workers heartbeats of the supervisor
  
  @param conf conf
  @throws IOException