libpqxx  4.0.1
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-2011, 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 #ifdef PQXX_QUIET_DESTRUCTORS
28 #include "pqxx/errorhandler"
29 #endif
30 
31 
32 
33 /* Methods tested in eg. self-test program test1 are marked with "//[t1]"
34  */
35 
36 
37 namespace pqxx
38 {
39 
44 
45 class PQXX_LIBEXPORT basic_transaction : public dbtransaction
46 {
47 protected:
48  basic_transaction( //[t1]
49  connection_base &C,
50  const PGSTD::string &IsolationLevel,
52 
53 private:
54  virtual void do_commit(); //[t1]
55 };
56 
57 
59 
87 template<
88  isolation_level ISOLATIONLEVEL=read_committed,
89  readwrite_policy READWRITE=read_write>
91 {
92 public:
94 
96 
101  explicit transaction(connection_base &C, const PGSTD::string &TName): //[t1]
102  namedclass(fullname("transaction", isolation_tag::name()), TName),
103  basic_transaction(C, isolation_tag::name(), READWRITE)
104  { Begin(); }
105 
106  explicit transaction(connection_base &C) : //[t1]
107  namedclass(fullname("transaction", isolation_tag::name())),
108  basic_transaction(C, isolation_tag::name(), READWRITE)
109  { Begin(); }
110 
111  virtual ~transaction() throw ()
112  {
113 #ifdef PQXX_QUIET_DESTRUCTORS
114  quiet_errorhandler quiet(conn());
115 #endif
116  End();
117  }
118 };
119 
120 
123 
126 
128 
129 }
130 
131 
132 #include "pqxx/compiler-internal-post.hxx"
133 
134 #endif
135