libpqxx
The C++ client library for PostgreSQL
Toggle main menu visibility
Loading...
Searching...
No Matches
robusttransaction.hxx
Go to the documentation of this file.
1
/* Definition of the pqxx::robusttransaction class.
2
*
3
* pqxx::robusttransaction is a slower but safer transaction class.
4
*
5
* DO NOT INCLUDE THIS FILE DIRECTLY; include pqxx/robusttransaction instead.
6
*
7
* Copyright (c) 2000-2025, Jeroen T. Vermeulen.
8
*
9
* See COPYING for copyright license. If you did not receive a file called
10
* COPYING with this source code, please notify the distributor of this
11
* mistake, or contact the author.
12
*/
13
#ifndef PQXX_H_ROBUSTTRANSACTION
14
#define PQXX_H_ROBUSTTRANSACTION
15
16
#if !defined(PQXX_HEADER_PRE)
17
# error "Include libpqxx headers as <pqxx/header>, not <pqxx/header.hxx>."
18
#endif
19
20
#include "
pqxx/dbtransaction.hxx
"
21
22
namespace
pqxx::internal
23
{
25
class
PQXX_LIBEXPORT
PQXX_NOVTABLE
basic_robusttransaction
26
:
public
dbtransaction
27
{
28
public
:
29
virtual
~basic_robusttransaction()
override
= 0;
30
31
protected
:
32
basic_robusttransaction(
33
connection &cx, zview begin_command, std::string_view tname);
34
basic_robusttransaction(connection &cx, zview begin_command);
35
36
private
:
37
using
IDType =
unsigned
long;
38
39
std::string m_conn_string;
40
std::string m_xid;
41
int
m_backendpid = -1;
42
43
void
init(zview begin_command);
44
45
// @warning This function will become `final`.
46
virtual
void
do_commit()
override
;
47
};
48
}
// namespace pqxx::internal
49
50
51
namespace
pqxx
52
{
58
60
81
template
<isolation_level ISOLATION = read_committed>
82
class
robusttransaction
final :
public
internal::basic_robusttransaction
83
{
84
public
:
89
robusttransaction
(connection &cx, std::string_view tname) :
90
internal
::basic_robusttransaction{
91
cx,
pqxx
::
internal
::begin_cmd<ISOLATION,
write_policy
::
read_write
>,
92
tname}
93
{}
94
99
robusttransaction
(connection &cx, std::string &&tname) :
100
internal
::basic_robusttransaction{
101
cx,
pqxx
::
internal
::begin_cmd<ISOLATION,
write_policy
::
read_write
>,
102
std::move(tname)}
103
{}
104
108
explicit
robusttransaction
(connection &cx) :
109
internal
::basic_robusttransaction{
110
cx,
pqxx
::
internal
::begin_cmd<ISOLATION,
write_policy
::
read_write
>}
111
{}
112
113
virtual
~robusttransaction
() noexcept
override
{ close(); }
114
};
115
119
}
// namespace pqxx
120
#endif
dbtransaction.hxx
pqxx::robusttransaction::robusttransaction
robusttransaction(connection &cx, std::string &&tname)
Definition
robusttransaction.hxx:99
pqxx::robusttransaction::~robusttransaction
virtual ~robusttransaction() noexcept override
Definition
robusttransaction.hxx:113
pqxx::robusttransaction::robusttransaction
robusttransaction(connection &cx, std::string_view tname)
Definition
robusttransaction.hxx:89
pqxx::robusttransaction::robusttransaction
robusttransaction(connection &cx)
Definition
robusttransaction.hxx:108
PQXX_LIBEXPORT
#define PQXX_LIBEXPORT
Definition
header-pre.hxx:157
PQXX_NOVTABLE
#define PQXX_NOVTABLE
Definition
header-pre.hxx:172
pqxx::internal
Internal items for libpqxx' own use. Do not use these yourself.
Definition
encodings.cxx:33
pqxx
The home of all libpqxx classes, functions, templates, etc.
Definition
array.cxx:27
pqxx::write_policy
write_policy
Should a transaction be read-only, or read-write?
Definition
isolation.hxx:27
pqxx::write_policy::read_write
@ read_write
Definition
isolation.hxx:29
include
pqxx
robusttransaction.hxx
Generated by
1.17.0