xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
xrpld
app
ledger
detail
TransactionAcquire.h
1
#pragma once
2
3
#include <xrpld/app/ledger/detail/TimeoutCounter.h>
4
#include <xrpld/app/main/Application.h>
5
#include <xrpld/overlay/Peer.h>
6
#include <xrpld/overlay/PeerSet.h>
7
8
#include <xrpl/basics/CountedObject.h>
9
#include <xrpl/basics/base_uint.h>
10
#include <xrpl/shamap/SHAMap.h>
11
#include <xrpl/shamap/SHAMapAddNode.h>
12
#include <xrpl/shamap/SHAMapNodeID.h>
13
#include <xrpl/shamap/SHAMapTreeNode.h>
14
15
#include <
cstddef
>
16
#include <
memory
>
17
#include <
utility
>
18
#include <
vector
>
19
20
namespace
xrpl
{
21
22
// VFALCO TODO rename to PeerTxRequest
23
// A transaction set we are trying to acquire
24
class
TransactionAcquire
final :
public
TimeoutCounter
,
25
public
std::enable_shared_from_this
<TransactionAcquire>,
26
public
CountedObject
<TransactionAcquire>
27
{
28
public
:
29
using
pointer
=
std::shared_ptr<TransactionAcquire>
;
30
31
TransactionAcquire
(
Application
& app,
UInt256
const
& hash,
std::unique_ptr<PeerSet>
peerSet);
32
~TransactionAcquire
()
override
=
default
;
33
34
SHAMapAddNode
35
takeNodes
(
36
std::vector
<
std::pair<SHAMapNodeID, SHAMapTreeNodePtr>
> data,
37
std::shared_ptr<Peer>
const
& peer);
38
39
void
40
init
(
int
startPeers);
41
42
void
43
stillNeed
();
44
45
private
:
46
std::shared_ptr<SHAMap>
map_
;
47
bool
haveRoot_
{
false
};
48
std::unique_ptr<PeerSet>
peerSet_
;
49
50
void
51
onTimer
(
bool
progress,
ScopedLockType
& peerSetLock)
override
;
52
53
void
54
done
();
55
56
void
57
addPeers
(
std::size_t
limit);
58
59
void
60
trigger
(
std::shared_ptr<Peer>
const
&);
61
std::weak_ptr<TimeoutCounter>
62
pmDowncast
()
override
;
63
};
64
65
}
// namespace xrpl
xrpl::Application
Definition
Application.h:94
xrpl::CountedObject< TransactionAcquire >::CountedObject
CountedObject() noexcept
Definition
CountedObject.h:119
xrpl::SHAMapAddNode
Definition
SHAMapAddNode.h:9
xrpl::TimeoutCounter::ScopedLockType
std::unique_lock< std::recursive_mutex > ScopedLockType
Definition
TimeoutCounter.h:71
xrpl::TimeoutCounter::TimeoutCounter
TimeoutCounter(Application &app, UInt256 const &targetHash, std::chrono::milliseconds timeoutInterval, QueueJobParameter &&jobParameter, beast::Journal journal)
Definition
TimeoutCounter.cpp:21
xrpl::TransactionAcquire::haveRoot_
bool haveRoot_
Definition
TransactionAcquire.h:47
xrpl::TransactionAcquire::onTimer
void onTimer(bool progress, ScopedLockType &peerSetLock) override
Hook called from invokeOnTimer().
Definition
TransactionAcquire.cpp:82
xrpl::TransactionAcquire::done
void done()
Definition
TransactionAcquire.cpp:54
xrpl::TransactionAcquire::init
void init(int startPeers)
Definition
TransactionAcquire.cpp:248
xrpl::TransactionAcquire::takeNodes
SHAMapAddNode takeNodes(std::vector< std::pair< SHAMapNodeID, SHAMapTreeNodePtr > > data, std::shared_ptr< Peer > const &peer)
Definition
TransactionAcquire.cpp:173
xrpl::TransactionAcquire::map_
std::shared_ptr< SHAMap > map_
Definition
TransactionAcquire.h:46
xrpl::TransactionAcquire::addPeers
void addPeers(std::size_t limit)
Definition
TransactionAcquire.cpp:239
xrpl::TransactionAcquire::pointer
std::shared_ptr< TransactionAcquire > pointer
Definition
TransactionAcquire.h:29
xrpl::TransactionAcquire::TransactionAcquire
TransactionAcquire(Application &app, UInt256 const &hash, std::unique_ptr< PeerSet > peerSet)
Definition
TransactionAcquire.cpp:37
xrpl::TransactionAcquire::trigger
void trigger(std::shared_ptr< Peer > const &)
Definition
TransactionAcquire.cpp:104
xrpl::TransactionAcquire::~TransactionAcquire
~TransactionAcquire() override=default
xrpl::TransactionAcquire::pmDowncast
std::weak_ptr< TimeoutCounter > pmDowncast() override
Return a weak pointer to this.
Definition
TransactionAcquire.cpp:98
xrpl::TransactionAcquire::stillNeed
void stillNeed()
Definition
TransactionAcquire.cpp:258
xrpl::TransactionAcquire::peerSet_
std::unique_ptr< PeerSet > peerSet_
Definition
TransactionAcquire.h:48
cstddef
std::enable_shared_from_this
memory
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::UInt256
BaseUInt< 256 > UInt256
Definition
base_uint.h:580
std::pair
std::shared_ptr
std::size_t
std::unique_ptr
utility
vector
std::weak_ptr
Generated by
1.17.0