userver
C++ Async Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
transaction_options.hpp
Go to the documentation of this file.
1
#
pragma
once
2
3
/// @file userver/storages/odbc/transaction_options.hpp
4
/// @brief ODBC transaction options
5
6
#
include
<
cstdint
>
7
#
include
<
optional
>
8
9
USERVER_NAMESPACE_BEGIN
10
11
namespace
storages::
odbc
{
12
13
/// Portable ODBC transaction isolation levels.
14
enum
class
IsolationLevel
:
std
::
uint8_t
{
15
kReadUncommitted,
16
kReadCommitted,
17
kRepeatableRead,
18
kSerializable,
19
};
20
21
/// ODBC transaction access-mode hint.
22
///
23
/// @warning `kReadOnly` requests `SQL_MODE_READ_ONLY` from the ODBC driver, but
24
/// ODBC defines this as an intent/optimization hint. It does not guarantee that
25
/// the database rejects write statements.
26
enum
class
AccessMode
:
std
::
uint8_t
{
27
kReadOnly,
28
kReadWrite,
29
};
30
31
/// Options for starting an ODBC transaction.
32
///
33
/// Empty optionals preserve the physical connection's current driver defaults;
34
/// the driver does not silently force READ COMMITTED or READ WRITE.
35
struct
TransactionOptions
final
{
36
std::optional<
IsolationLevel
> isolation_level{};
37
std::optional<
AccessMode
> access_mode{};
38
39
// Explicit keeps the legacy Cluster::Begin(flags, {}) call unambiguous: an
40
// empty braced argument continues to mean OptionalCommandControl.
41
constexpr
explicit
TransactionOptions() =
default
;
42
43
constexpr
explicit
TransactionOptions(
IsolationLevel
isolation)
44
: isolation_level{isolation}
45
{}
46
47
constexpr
explicit
TransactionOptions(
AccessMode
mode)
48
: access_mode{mode}
49
{}
50
51
constexpr
TransactionOptions(
IsolationLevel
isolation,
AccessMode
mode)
52
: isolation_level{isolation},
53
access_mode{mode}
54
{}
55
};
56
57
constexpr
bool
operator==(
const
TransactionOptions& lhs,
const
TransactionOptions& rhs)
noexcept
{
58
return
lhs.isolation_level == rhs.isolation_level && lhs.access_mode == rhs.access_mode;
59
}
60
61
}
// namespace storages::odbc
62
63
USERVER_NAMESPACE_END
odbc
include
userver
storages
odbc
transaction_options.hpp
Generated on
for userver by
Doxygen
1.17.0