void CgroupPath::recomputeReadCache()

in src/oomd/include/CgroupPath.cpp [126:156]


void CgroupPath::recomputeReadCache() {
  // Recreate relative_cache_
  relative_cache_.clear();
  size_t s = 0;
  for (size_t i = 0; i < cgroup_path_.size(); ++i) {
    s += cgroup_path_.at(i).size();
    if (i == cgroup_path_.size() - 1) {
      break;
    }
    ++s; // for the path separator
  }

  relative_cache_.reserve(s);

  for (size_t i = 0; i < cgroup_path_.size(); ++i) {
    relative_cache_ += cgroup_path_.at(i);
    if (i == cgroup_path_.size() - 1) {
      break;
    }
    relative_cache_ += '/';
  }

  // Recreate absolute_cache_
  absolute_cache_.clear();
  absolute_cache_.reserve(cgroup_fs_.size() + 1 + relative_cache_.size());
  absolute_cache_ += cgroup_fs_;
  if (relative_cache_.size()) {
    absolute_cache_ += '/';
    absolute_cache_ += relative_cache_;
  }
}