libpqxx
transaction.hxx
1
12#ifndef PQXX_H_TRANSACTION
13#define PQXX_H_TRANSACTION
14
15#include "pqxx/compiler-public.hxx"
16#include "pqxx/compiler-internal-pre.hxx"
17
18#include "pqxx/dbtransaction.hxx"
19
20
21/* Methods tested in eg. self-test program test1 are marked with "//[t01]"
22 */
23
24
25namespace pqxx
26{
27
28namespace internal
29{
31class PQXX_LIBEXPORT basic_transaction : public dbtransaction
32{
33protected:
34 basic_transaction( //[t01]
36 const std::string &IsolationLevel,
38
39private:
40 virtual void do_commit() override; //[t01]
41};
42} // namespace internal
43
44
49
51
79template<
80 isolation_level ISOLATIONLEVEL=read_committed,
83{
84public:
86
88
93 explicit transaction(connection_base &C, const std::string &TName): //[t01]
94 namedclass{fullname("transaction", isolation_tag::name()), TName},
95 internal::basic_transaction(C, isolation_tag::name(), READWRITE)
96 { Begin(); }
97
98 explicit transaction(connection_base &C) : //[t01]
99 transaction(C, "") {}
100
101 virtual ~transaction() noexcept
102 { End(); }
103};
104
105
108
111
113}
114
115#include "pqxx/compiler-internal-post.hxx"
116#endif
The home of all libpqxx classes, functions, templates, etc.
Definition: array.hxx:26
readwrite_policy
Definition: dbtransaction.hxx:25
@ read_write
Definition: dbtransaction.hxx:27
isolation_level
Transaction isolation levels.
Definition: isolation.hxx:57
@ read_committed
Definition: isolation.hxx:59
connection_base abstract base class; represents a connection to a database.
Definition: connection_base.hxx:140
Abstract base class responsible for bracketing a backend transaction.
Definition: dbtransaction.hxx:63
static std::string fullname(const std::string &ttype, const std::string &isolation)
Definition: dbtransaction.cxx:95
Traits class to describe an isolation level; primarly for libpqxx's own use.
Definition: isolation.hxx:66
Helper base class for the transaction class template.
Definition: transaction.hxx:32
basic_transaction(connection_base &C, const std::string &IsolationLevel, readwrite_policy)
Definition: transaction.cxx:20
Standard back-end transaction, templatized on isolation level.
Definition: transaction.hxx:83
transaction(connection_base &C, const std::string &TName)
Create a transaction.
Definition: transaction.hxx:93
transaction(connection_base &C)
Definition: transaction.hxx:98
virtual ~transaction() noexcept
Definition: transaction.hxx:101
void Begin()
Begin transaction (to be called by implementing class)
Definition: transaction_base.cxx:386
void End() noexcept
End transaction. To be called by implementing class' destructor.
Definition: transaction_base.cxx:408
namedclass(const std::string &Classname)
Definition: util.hxx:236
const std::string & name() const noexcept
Object name, or the empty string if no name was given.
Definition: util.hxx:249