From 12372731cba8b3ab69a691dc6fae6685398ee129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Botond=20D=C3=A9nes?= Date: Tue, 15 Sep 2020 12:08:30 +0300 Subject: [PATCH] reader_permit: add consume()/signal() And do all consuming and signalling through these methods. These operations will soon be more involved than the simple forwarding they do today, so we want to centralize them to a single method pair. --- reader_concurrency_semaphore.cc | 14 +++++++++++--- reader_permit.hh | 4 ++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/reader_concurrency_semaphore.cc b/reader_concurrency_semaphore.cc index 8f1122b2e6..63a10d7849 100644 --- a/reader_concurrency_semaphore.cc +++ b/reader_concurrency_semaphore.cc @@ -28,7 +28,7 @@ reader_permit::resource_units::resource_units(reader_permit permit, reader_resources res) noexcept : _permit(std::move(permit)), _resources(res) { - _permit._semaphore->consume(res); + _permit.consume(res); } reader_permit::resource_units::resource_units(resource_units&& o) noexcept @@ -58,9 +58,9 @@ void reader_permit::resource_units::add(resource_units&& o) { } void reader_permit::resource_units::reset(reader_resources res) { - _permit._semaphore->consume(res); + _permit.consume(res); if (_resources) { - _permit._semaphore->signal(_resources); + _permit.signal(_resources); } _resources = res; } @@ -73,6 +73,14 @@ future reader_permit::wait_admission(size_t memor return _semaphore->do_wait_admission(*this, memory, timeout); } +void reader_permit::consume(reader_resources res) { + _semaphore->consume(res); +} + +void reader_permit::signal(reader_resources res) { + _semaphore->signal(res); +} + reader_permit::resource_units reader_permit::consume_memory(size_t memory) { return consume_resources(reader_resources{0, ssize_t(memory)}); } diff --git a/reader_permit.hh b/reader_permit.hh index c8bfc03939..290525d8e5 100644 --- a/reader_permit.hh +++ b/reader_permit.hh @@ -100,6 +100,10 @@ public: future wait_admission(size_t memory, db::timeout_clock::time_point timeout); + void consume(reader_resources res); + + void signal(reader_resources res); + resource_units consume_memory(size_t memory = 0); resource_units consume_resources(reader_resources res);