OCILIB (C and C++ Driver for Oracle)  4.7.6
Open source and cross platform Oracle Driver delivering efficient access to Oracle databases.
Transaction.hpp
1 /*
2  * OCILIB - C Driver for Oracle (C Wrapper for Oracle OCI)
3  *
4  * Website: http://www.ocilib.net
5  *
6  * Copyright (c) 2007-2023 Vincent ROGIER <vince.rogier@ocilib.net>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 #pragma once
22 
23 #include "ocilibcpp/types.hpp"
24 
25 // ReSharper disable CppClangTidyPerformanceUnnecessaryValueParam
26 
27 namespace ocilib
28 {
29 
30 inline Transaction::Transaction(const Connection &connection, unsigned int timeout, TransactionFlags flags, OCI_XID *pxid)
31 {
32  AcquireAllocated
33  (
34  core::Check(OCI_TransactionCreate(connection, timeout, flags.GetValues(), pxid)),
35  Environment::GetEnvironmentHandle()
36  );
37 }
38 
40 {
41  AcquireTransient(trans, Environment::GetEnvironmentHandle());
42 }
43 
44 inline void Transaction::Prepare()
45 {
47 }
48 
49 inline void Transaction::Start()
50 {
52 }
53 
54 inline void Transaction::Stop()
55 {
57 }
58 
59 inline void Transaction::Resume()
60 {
62 }
63 
64 inline void Transaction::Forget()
65 {
67 }
68 
70 {
71  return TransactionFlags(static_cast<TransactionFlags::Type>(core::Check(OCI_TransactionGetMode(*this))));
72 }
73 
74 inline unsigned int Transaction::GetTimeout() const
75 {
77 }
78 
79 }
A connection or session with a specific database.
Definition: types.hpp:1580
TransactionFlags GetFlags() const
Return the transaction mode.
Definition: Transaction.hpp:69
void Start()
Start global transaction.
Definition: Transaction.hpp:49
void Resume()
Resume a stopped global transaction.
Definition: Transaction.hpp:59
void Forget()
Cancel the prepared global transaction validation.
Definition: Transaction.hpp:64
Transaction(const Connection &connection, unsigned int timeout, TransactionFlags flags, OCI_XID *pxid=nullptr)
Create a new global transaction or a serializable/read-only local transaction.
Definition: Transaction.hpp:30
core::Flags< TransactionFlagsValues > TransactionFlags
Transaction flags.
Definition: types.hpp:2415
void Prepare()
Prepare a global transaction validation.
Definition: Transaction.hpp:44
unsigned int GetTimeout() const
Return the transaction Timeout.
Definition: Transaction.hpp:74
void Stop()
Stop current global transaction.
Definition: Transaction.hpp:54
Template Flags template class providing some type safety to some extends for manipulating flags set v...
Definition: core.hpp:148
struct OCI_XID OCI_XID
Global transaction identifier.
struct OCI_Transaction OCI_Transaction
Oracle Transaction.
Definition: types.h:238
OCI_SYM_PUBLIC boolean OCI_API OCI_TransactionPrepare(OCI_Transaction *trans)
Prepare a global transaction validation.
OCI_SYM_PUBLIC boolean OCI_API OCI_TransactionStop(OCI_Transaction *trans)
Stop current global transaction.
OCI_SYM_PUBLIC boolean OCI_API OCI_TransactionForget(OCI_Transaction *trans)
Cancel the prepared global transaction validation.
OCI_SYM_PUBLIC boolean OCI_API OCI_TransactionStart(OCI_Transaction *trans)
Start global transaction.
OCI_SYM_PUBLIC unsigned int OCI_API OCI_TransactionGetTimeout(OCI_Transaction *trans)
Return global transaction Timeout.
OCI_SYM_PUBLIC OCI_Transaction *OCI_API OCI_TransactionCreate(OCI_Connection *con, unsigned int timeout, unsigned int mode, OCI_XID *pxid)
Create a new global transaction or a serializable/read-only local transaction.
OCI_SYM_PUBLIC boolean OCI_API OCI_TransactionResume(OCI_Transaction *trans)
Resume a stopped global transaction.
OCI_SYM_PUBLIC unsigned int OCI_API OCI_TransactionGetMode(OCI_Transaction *trans)
Return global transaction mode.
static T Check(T result)
Internal usage. Checks if the last OCILIB function call has raised an error. If so,...
Definition: Utils.hpp:53
OCILIB ++ Namespace.