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