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.
This commit is contained in:
Botond Dénes
2020-09-15 12:08:30 +03:00
parent 375815e650
commit 12372731cb
2 changed files with 15 additions and 3 deletions

View File

@@ -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::resource_units> 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)});
}

View File

@@ -100,6 +100,10 @@ public:
future<resource_units> 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);