reader_concurrency_semaphore: add foreach_permit()

Allows iterating over all permits.
This commit is contained in:
Botond Dénes
2022-11-29 14:11:04 +02:00
parent 4c70b58993
commit 7f8469db27
2 changed files with 8 additions and 0 deletions

View File

@@ -1241,6 +1241,12 @@ std::string reader_concurrency_semaphore::dump_diagnostics(unsigned max_lines) c
return os.str();
}
void reader_concurrency_semaphore::foreach_permit(noncopyable_function<void(const reader_permit&)> func) {
for (auto& p : _permit_list) {
func(reader_permit(p.shared_from_this()));
}
}
// A file that tracks the memory usage of buffers resulting from read
// operations.
class tracking_file_impl : public file_impl {

View File

@@ -526,4 +526,6 @@ public:
uint64_t active_reads() const noexcept {
return _stats.current_permits - _stats.inactive_reads - waiters();
}
void foreach_permit(noncopyable_function<void(const reader_permit&)> func);
};