OCILIB (C and C++ Driver for Oracle)  4.7.3
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-2021 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  Acquire(core::Check(OCI_TransactionCreate(connection, timeout, flags.GetValues(), pxid)), reinterpret_cast<HandleFreeFunc>(OCI_TransactionFree), nullptr, nullptr);
33 }
34 
36 {
37  Acquire(trans, nullptr, nullptr, nullptr);
38 }
39 
40 inline void Transaction::Prepare()
41 {
43 }
44 
45 inline void Transaction::Start()
46 {
48 }
49 
50 inline void Transaction::Stop()
51 {
53 }
54 
55 inline void Transaction::Resume()
56 {
58 }
59 
60 inline void Transaction::Forget()
61 {
63 }
64 
66 {
67  return TransactionFlags(static_cast<TransactionFlags::Type>(core::Check(OCI_TransactionGetMode(*this))));
68 }
69 
70 inline unsigned int Transaction::GetTimeout() const
71 {
73 }
74 
75 }
OCI_SYM_PUBLIC unsigned int OCI_API OCI_TransactionGetTimeout(OCI_Transaction *trans)
Return global transaction Timeout.
OCILIB ++ Namespace.
OCI_SYM_PUBLIC unsigned int OCI_API OCI_TransactionGetMode(OCI_Transaction *trans)
Return global transaction mode.
void Forget()
Cancel the prepared global transaction validation.
Definition: Transaction.hpp:60
OCI_SYM_PUBLIC boolean OCI_API OCI_TransactionStart(OCI_Transaction *trans)
Start global transaction.
struct OCI_XID OCI_XID
Global transaction identifier.
A connection or session with a specific database.
Definition: types.hpp:1563
static T Check(T result)
Internal usage. Checks if the last OCILIB function call has raised an error. If so, it raises a C++ exception using the retrieved error handle.
Definition: Utils.hpp:53
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.
Template Flags template class providing some type safety to some extends for manipulating flags set v...
Definition: core.hpp:147
OCI_SYM_PUBLIC boolean OCI_API OCI_TransactionResume(OCI_Transaction *trans)
Resume a stopped global transaction.
void Stop()
Stop current global transaction.
Definition: Transaction.hpp:50
void Prepare()
Prepare a global transaction validation.
Definition: Transaction.hpp:40
void Resume()
Resume a stopped global transaction.
Definition: Transaction.hpp:55
struct OCI_Transaction OCI_Transaction
Oracle Transaction.
Definition: types.h:226
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_TransactionPrepare(OCI_Transaction *trans)
Prepare a global transaction validation.
void Start()
Start global transaction.
Definition: Transaction.hpp:45
TransactionFlags GetFlags() const
Return the transaction mode.
Definition: Transaction.hpp:65
OCI_SYM_PUBLIC boolean OCI_API OCI_TransactionFree(OCI_Transaction *trans)
Free current transaction.
core::Flags< TransactionFlagsValues > TransactionFlags
Transaction flags.
Definition: types.hpp:2393
unsigned int GetTimeout() const
Return the transaction Timeout.
Definition: Transaction.hpp:70
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