mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-21 09:00:35 +00:00
And propagate it down to where it is created. This will be used to add trace points for semaphore related events, but this will come in the next patches.
33 lines
889 B
C++
33 lines
889 B
C++
/*
|
|
* Copyright (C) 2021-present ScyllaDB
|
|
*/
|
|
|
|
/*
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "../../reader_concurrency_semaphore.hh"
|
|
#include "query_class_config.hh"
|
|
|
|
namespace tests {
|
|
|
|
// Must be used in a seastar thread.
|
|
class reader_concurrency_semaphore_wrapper {
|
|
std::unique_ptr<::reader_concurrency_semaphore> _semaphore;
|
|
|
|
public:
|
|
reader_concurrency_semaphore_wrapper(const char* name = nullptr)
|
|
: _semaphore(std::make_unique<::reader_concurrency_semaphore>(::reader_concurrency_semaphore::no_limits{}, name ? name : "test")) {
|
|
}
|
|
~reader_concurrency_semaphore_wrapper() {
|
|
_semaphore->stop().get();
|
|
}
|
|
|
|
reader_concurrency_semaphore& semaphore() { return *_semaphore; };
|
|
reader_permit make_permit() { return _semaphore->make_tracking_only_permit(nullptr, "test", db::no_timeout, {}); }
|
|
};
|
|
|
|
} // namespace tests
|