5#include <userver/clients/dns/resolver_fwd.hpp>
6#include <userver/drivers/impl/connection_pool_base.hpp>
7#include <userver/engine/deadline.hpp>
8#include <userver/utils/datetime/wall_coarse_clock.hpp>
9#include <userver/utils/periodic_task.hpp>
11#include <userver/storages/sqlite/impl/connection.hpp>
12#include <userver/storages/sqlite/infra/connection_ptr.hpp>
13#include <userver/storages/sqlite/infra/statistics/statistics.hpp>
14#include <userver/storages/sqlite/options.hpp>
15#include <userver/storages/sqlite/sqlite_fwd.hpp>
17USERVER_NAMESPACE_BEGIN
19namespace storages::sqlite::infra {
21class Pool
final :
public drivers::impl::ConnectionPoolBase<impl::Connection, Pool> {
23 static std::shared_ptr<Pool> Create(
25 engine::TaskProcessor& blocking_task_processor
30 void Release(ConnectionUniquePtr connection);
32 Pool(
const settings::
SQLiteSettings& settings, engine::TaskProcessor& blocking_task_processor);
34 statistics::PoolStatistics& GetStatistics();
37 friend class drivers::impl::ConnectionPoolBase<impl::Connection, Pool>;
39 ConnectionUniquePtr DoCreateConnection(engine::Deadline deadline);
41 void AccountConnectionAcquired();
42 void AccountConnectionReleased();
43 void AccountConnectionCreated();
44 void AccountConnectionDestroyed()
noexcept;
45 void AccountOverload();
47 engine::TaskProcessor& blocking_task_processor_;
51 statistics::PoolStatistics stats_{};