mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-12 19:02:12 +00:00
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:
@@ -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)});
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user