Monero
Toggle main menu visibility
Loading...
Searching...
No Matches
src
blockchain_db
locked_txn.h
Go to the documentation of this file.
1
// Copyright (c) 2014-2022, The Monero Project
2
//
3
// All rights reserved.
4
//
5
// Redistribution and use in source and binary forms, with or without modification, are
6
// permitted provided that the following conditions are met:
7
//
8
// 1. Redistributions of source code must retain the above copyright notice, this list of
9
// conditions and the following disclaimer.
10
//
11
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
12
// of conditions and the following disclaimer in the documentation and/or other
13
// materials provided with the distribution.
14
//
15
// 3. Neither the name of the copyright holder nor the names of its contributors may be
16
// used to endorse or promote products derived from this software without specific
17
// prior written permission.
18
//
19
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
20
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
27
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
//
29
// Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
30
31
#pragma once
32
33
namespace
cryptonote
34
{
35
// This class is meant to create a batch when none currently exists.
36
// If a batch exists, it can't be from another thread, since we can
37
// only be called with the txpool lock taken, and it is held during
38
// the whole prepare/handle/cleanup incoming block sequence.
39
class
LockedTXN
{
40
public
:
41
LockedTXN
(
BlockchainDB
&db):
m_db
(db),
m_batch
(
false
),
m_active
(
false
) {
42
m_batch
=
m_db
.batch_start();
43
m_active
=
true
;
44
}
45
void
commit
() {
try
{
if
(
m_batch
&&
m_active
) {
m_db
.batch_stop();
m_active
=
false
; } }
catch
(
const
std::exception &e) { MWARNING(
"LockedTXN::commit filtering exception: "
<< e.what()); } }
46
void
abort
() {
try
{
if
(
m_batch
&&
m_active
) {
m_db
.batch_abort();
m_active
=
false
; } }
catch
(
const
std::exception &e) { MWARNING(
"LockedTXN::abort filtering exception: "
<< e.what()); } }
47
~LockedTXN
() {
abort
(); }
48
private
:
49
BlockchainDB
&
m_db
;
50
bool
m_batch
;
51
bool
m_active
;
52
};
53
}
cryptonote::BlockchainDB
The BlockchainDB backing store interface declaration/contract.
Definition
blockchain_db.h:379
cryptonote::LockedTXN::commit
void commit()
Definition
locked_txn.h:45
cryptonote::LockedTXN::LockedTXN
LockedTXN(BlockchainDB &db)
Definition
locked_txn.h:41
cryptonote::LockedTXN::m_db
BlockchainDB & m_db
Definition
locked_txn.h:49
cryptonote::LockedTXN::~LockedTXN
~LockedTXN()
Definition
locked_txn.h:47
cryptonote::LockedTXN::abort
void abort()
Definition
locked_txn.h:46
cryptonote::LockedTXN::m_active
bool m_active
Definition
locked_txn.h:51
cryptonote::LockedTXN::m_batch
bool m_batch
Definition
locked_txn.h:50
false
#define false
cryptonote
Holds cryptonote related classes and helpers.
Definition
blockchain_db.cpp:45
Generated on
for Monero by
1.17.0