bool DirectorySourceQueue::buildQueueSynchronously()

in util/DirectorySourceQueue.cpp [191:236]


bool DirectorySourceQueue::buildQueueSynchronously() {
  auto startTime = Clock::now();
  WVLOG(1) << "buildQueueSynchronously() called";
  {
    std::lock_guard<std::mutex> lock(mutex_);
    if (initCalled_) {
      return false;
    }
    initCalled_ = true;
  }
  bool res = false;
  // either traverse directory or we already have a fixed set of candidate
  // files
  if (exploreDirectory_) {
    res = explore();
  } else {
    WLOG(INFO) << "Using list of file info. Number of files "
               << fileInfo_.size();
    res = enqueueFiles(fileInfo_);

    // also check if there is a generator to get more files
    while (res && fileInfoGenerator_) {
      auto files = fileInfoGenerator_();
      if (!files) {
        break;
      }
      res = enqueueFiles(*files);

      std::lock_guard<std::mutex> lock(mutex_);
      fileInfo_.insert(fileInfo_.end(), files->begin(), files->end());
    }
  }
  {
    std::lock_guard<std::mutex> lock(mutex_);
    initFinished_ = true;
    enqueueFilesToBeDeleted();
    // TODO: comment why
    if (sourceQueue_.empty()) {
      conditionNotEmpty_.notify_all();
    }
  }
  directoryTime_ = durationSeconds(Clock::now() - startTime);
  WVLOG(1) << "finished initialization of DirectorySourceQueue in "
           << directoryTime_;
  return res;
}