userver: userver/storages/sqlite/infra/strategy/exclusive_read_write.hpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
exclusive_read_write.hpp
1#pragma once
2
3#include <userver/engine/condition_variable.hpp>
4#include <userver/engine/mutex.hpp>
5
6#include <userver/storages/sqlite/infra/strategy/pool_strategy.hpp>
7
8USERVER_NAMESPACE_BEGIN
9
10namespace storages::sqlite::infra::strategy {
11
12class ExclusiveReadWriteStrategy final : public PoolStrategyBase {
13public:
14 ExclusiveReadWriteStrategy(
15 const settings::SQLiteSettings& settings,
16 engine::TaskProcessor& blocking_task_processor
17 );
18 ~ExclusiveReadWriteStrategy() final;
19
20 void WriteStatistics(utils::statistics::Writer& writer) const final;
21
22private:
23 Pool& GetReadOnly() const final;
24 Pool& GetReadWrite() const final;
25
26 PoolPtr
27 InitializeReadWritePoolReference(settings::SQLiteSettings settings, engine::TaskProcessor& blocking_task_processor);
28
29 PoolPtr read_write_connection_pool_;
30};
31
32} // namespace storages::sqlite::infra::strategy
33
34USERVER_NAMESPACE_END