userver: userver/storages/sqlite/infra/connection_ptr.hpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
connection_ptr.hpp
1#pragma once
2
3#include <memory>
4
5#include <userver/storages/sqlite/sqlite_fwd.hpp>
6
7USERVER_NAMESPACE_BEGIN
8
9namespace storages::sqlite::infra {
10
11/// Pointer-like class that controls lifetime of a parent pool by keeping smart
12/// pointer to it.
14public:
15 ConnectionPtr(std::shared_ptr<Pool>&& pool, std::unique_ptr<impl::Connection>&& connection);
16 ~ConnectionPtr();
17
18 ConnectionPtr(ConnectionPtr&&) noexcept;
19 ConnectionPtr& operator=(ConnectionPtr&&) noexcept;
20
21 bool IsValid() const noexcept;
22 impl::Connection* get() const noexcept;
23
24 impl::Connection& operator*() const;
25 impl::Connection* operator->() const noexcept;
26
27private:
28 void Reset(std::unique_ptr<impl::Connection> conn, std::shared_ptr<Pool> pool);
29 void Release();
30
31 std::shared_ptr<Pool> pool_;
32 std::unique_ptr<impl::Connection> conn_;
33};
34
35} // namespace storages::sqlite::infra
36
37USERVER_NAMESPACE_END