userver: userver/storages/sqlite/infra/strategy/exclusive_read_write.hpp Source File
Loading...
Searching...
No Matches
exclusive_read_write.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/storages/sqlite/infra/strategy/exclusive_read_write.hpp
4/// @brief @copybrief storages::sqlite::infra::strategy::ExclusiveReadWriteStrategy
5
6#include <userver/engine/condition_variable.hpp>
7#include <userver/engine/mutex.hpp>
8
9#include <userver/storages/sqlite/infra/strategy/pool_strategy.hpp>
10
11USERVER_NAMESPACE_BEGIN
12
13namespace storages::sqlite::infra::strategy {
14
15/// @brief SQLite pool strategy: single shared read-write pool
16class ExclusiveReadWriteStrategy final : public PoolStrategyBase {
17public:
18 ExclusiveReadWriteStrategy(
19 const settings::SQLiteSettings& settings,
20 engine::TaskProcessor& blocking_task_processor
21 );
22 ~ExclusiveReadWriteStrategy() final;
23
24 void WriteStatistics(utils::statistics::Writer& writer) const final;
25
26private:
27 Pool& GetReadOnly() const final;
28 Pool& GetReadWrite() const final;
29
30 PoolPtr InitializeReadWritePoolReference(
31 settings::SQLiteSettings settings,
32 engine::TaskProcessor& blocking_task_processor
33 );
34
35 PoolPtr read_write_connection_pool_;
36};
37
38} // namespace storages::sqlite::infra::strategy
39
40USERVER_NAMESPACE_END