libpqxx  5.0
transaction.hxx
1 /*-------------------------------------------------------------------------
2  *
3  * FILE
4  * pqxx/transaction.hxx
5  *
6  * DESCRIPTION
7  * definition of the pqxx::transaction class.
8  * pqxx::transaction represents a standard database transaction
9  * DO NOT INCLUDE THIS FILE DIRECTLY; include pqxx/transaction instead.
10  *
11  * Copyright (c) 2001-2015, Jeroen T. Vermeulen <jtv@xs4all.nl>
12  *
13  * See COPYING for copyright license. If you did not receive a file called
14  * COPYING with this source code, please notify the distributor of this mistake,
15  * or contact the author.
16  *
17  *-------------------------------------------------------------------------
18  */
19 #ifndef PQXX_H_TRANSACTION
20 #define PQXX_H_TRANSACTION
21 
22 #include "pqxx/compiler-public.hxx"
23 #include "pqxx/compiler-internal-pre.hxx"
24 
25 #include "pqxx/dbtransaction"
26 
27 
28 /* Methods tested in eg. self-test program test1 are marked with "//[t1]"
29  */
30 
31 
32 namespace pqxx
33 {
34 
39 
40 class PQXX_LIBEXPORT basic_transaction : public dbtransaction
41 {
42 protected:
43  basic_transaction( //[t1]
44  connection_base &C,
45  const std::string &IsolationLevel,
47 
48 private:
49  virtual void do_commit() PQXX_OVERRIDE; //[t1]
50 };
51 
52 
54 
82 template<
83  isolation_level ISOLATIONLEVEL=read_committed,
84  readwrite_policy READWRITE=read_write>
86 {
87 public:
89 
91 
96  explicit transaction(connection_base &C, const std::string &TName): //[t1]
97  namedclass(fullname("transaction", isolation_tag::name()), TName),
98  basic_transaction(C, isolation_tag::name(), READWRITE)
99  { Begin(); }
100 
101  explicit transaction(connection_base &C) : //[t1]
102  namedclass(fullname("transaction", isolation_tag::name())),
103  basic_transaction(C, isolation_tag::name(), READWRITE)
104  { Begin(); }
105 
106  virtual ~transaction() PQXX_NOEXCEPT { End(); }
107 };
108 
109 
112 
115 
117 
118 }
119 
120 
121 #include "pqxx/compiler-internal-post.hxx"
122 
123 #endif
124 
connection_base abstract base class; represents a connection to a database.
Definition: connection_base.hxx:149
Definition: dbtransaction.hxx:33
isolation_traits< ISOLATIONLEVEL > isolation_tag
Definition: transaction.hxx:88
readwrite_policy
Definition: dbtransaction.hxx:30
Standard back-end transaction, templatized on isolation level.
Definition: transaction.hxx:85
void Begin()
Begin transaction (to be called by implementing class)
Definition: transaction_base.cxx:327
const std::string & name() const PQXX_NOEXCEPT
Definition: util.hxx:638
Traits class to describe an isolation level; primarly for libpqxx&#39;s own use.
Definition: isolation.hxx:69
Definition: isolation.hxx:63
namedclass(const std::string &Classname, const std::string &Name="")
Definition: util.hxx:632
transaction(connection_base &C)
Definition: transaction.hxx:101
transaction(connection_base &C, const std::string &TName)
Create a transaction.
Definition: transaction.hxx:96
transaction< read_committed, read_only > read_transaction
Read-only transaction.
Definition: transaction.hxx:114
Definition: dbtransaction.hxx:68
transaction work
Bog-standard, default transaction type.
Definition: transaction.hxx:111
isolation_level
Transaction isolation levels.
Definition: isolation.hxx:60
virtual ~transaction() PQXX_NOEXCEPT
Definition: transaction.hxx:106
static std::string fullname(const std::string &ttype, const std::string &isolation)
Definition: dbtransaction.cxx:107
Definition: transaction.hxx:40
void End() PQXX_NOEXCEPT
End transaction. To be called by implementing class&#39; destructor.
Definition: transaction_base.cxx:350