| 286 | } |
| 287 | |
| 288 | std::vector<std::unique_ptr<CacheFile>> PersistentCacheMetaData::CollectEvictableFiles() { |
| 289 | std::vector<std::unique_ptr<CacheFile>> files; |
| 290 | { |
| 291 | std::lock_guard<std::mutex> _{evictable_files_lock_}; |
| 292 | auto iter = evictable_files_.begin(); |
| 293 | while (iter != evictable_files_.end()) { |
| 294 | // Find all evictable files whose refs_ is zero. |
| 295 | if ((*iter)->refs_ == 0) { |
| 296 | files.emplace_back(*iter); |
| 297 | evictable_files_.erase(iter++); |
| 298 | } else { |
| 299 | ++iter; |
| 300 | } |
| 301 | } |
| 302 | } |
| 303 | return std::move(files); |
| 304 | } |
| 305 | } // namespace leveldb |