9#ifndef PQXX_H_TRANSACTION_FOCUS
10#define PQXX_H_TRANSACTION_FOCUS
12#if !defined(PQXX_HEADER_PRE)
13# error "Include libpqxx headers as <pqxx/header>, not <pqxx/header.hxx>."
16#include "pqxx/util.hxx"
33 m_trans{&t}, m_classname{cname}, m_name{oname}
38 m_trans{&t}, m_classname{cname}, m_name{std::move(oname)}
42 m_trans{&t}, m_classname{cname}
50 [[nodiscard]]
constexpr std::string_view
classname() const noexcept
56 [[nodiscard]] std::string_view
name() const & noexcept {
return m_name; }
58 [[nodiscard]] std::string description()
const
63 transaction_focus(transaction_focus &&other) :
64 m_trans{other.m_trans},
65 m_registered{other.m_registered},
66 m_classname{other.m_classname},
73 move_name_and_registration(other);
76 transaction_focus &operator=(transaction_focus &&other)
82 m_trans = other.m_trans;
83 m_classname = other.m_classname;
84 move_name_and_registration(other);
91 void unregister_me() noexcept;
92 void reg_pending_error(std::
string const &) noexcept;
93 bool registered() const noexcept {
return m_registered; }
95 transaction_base *m_trans;
98 bool m_registered =
false;
99 std::string_view m_classname;
103 void move_name_and_registration(transaction_focus &other)
105 bool const reg{other.m_registered};
108 other.unregister_me();
110 m_name = std::move(other.m_name);
Base class for things that monopolise a transaction's attention.
Definition: transaction_focus.hxx:29
std::string_view name() const &noexcept
Name for this object, if the caller passed one; empty string otherwise.
Definition: transaction_focus.hxx:56
constexpr std::string_view classname() const noexcept
Class name, for human consumption.
Definition: transaction_focus.hxx:50
Interface definition (and common code) for "transaction" classes.
Definition: transaction_base.hxx:150
std::string describe_object(std::string_view class_name, std::string_view name)
Describe an object for humans, based on class name and optional name.
Definition: util.cxx:53
The home of all libpqxx classes, functions, templates, etc.
Definition: array.cxx:27