xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
xrpld
rpc
detail
LegacyPathFind.cpp
1
#include <xrpld/rpc/detail/LegacyPathFind.h>
2
3
#include <xrpld/app/main/Application.h>
4
#include <xrpld/rpc/detail/Tuning.h>
5
6
#include <xrpl/core/Job.h>
7
#include <xrpl/core/JobQueue.h>
8
#include <xrpl/server/LoadFeeTrack.h>
9
10
#include <
atomic
>
11
12
namespace
xrpl::rpc
{
13
14
LegacyPathFind::LegacyPathFind
(
bool
isAdmin
,
Application
& app)
15
{
16
if
(
isAdmin
)
17
{
18
++
inProgress
;
19
isOk_
=
true
;
20
return
;
21
}
22
23
auto
const
& jobCount = app.
getJobQueue
().
getJobCountGE
(
JtClient
);
24
if
(jobCount >
tuning::kMaxPathfindJobCount
|| app.
getFeeTrack
().
isLoadedLocal
())
25
return
;
26
27
while
(
true
)
28
{
29
int
prevVal =
inProgress
.load();
30
if
(prevVal >=
tuning::kMaxPathfindsInProgress
)
31
return
;
32
33
if
(
inProgress
.compare_exchange_strong(
34
prevVal, prevVal + 1, std::memory_order_release, std::memory_order_relaxed))
35
{
36
isOk_
=
true
;
37
return
;
38
}
39
}
40
}
41
42
LegacyPathFind::~LegacyPathFind
()
43
{
44
if
(
isOk_
)
45
--
inProgress
;
46
}
47
48
std::atomic<int>
LegacyPathFind::inProgress
(0);
49
50
}
// namespace xrpl::rpc
atomic
xrpl::Application
Definition
Application.h:94
xrpl::JobQueue::getJobCountGE
int getJobCountGE(JobType t) const
All waiting jobs at or greater than this priority.
Definition
JobQueue.cpp:140
xrpl::LoadFeeTrack::isLoadedLocal
bool isLoadedLocal() const
Definition
LoadFeeTrack.h:102
xrpl::ServiceRegistry::getJobQueue
virtual JobQueue & getJobQueue()=0
xrpl::ServiceRegistry::getFeeTrack
virtual LoadFeeTrack & getFeeTrack()=0
xrpl::rpc::LegacyPathFind::LegacyPathFind
LegacyPathFind(bool isAdmin, Application &app)
Definition
LegacyPathFind.cpp:14
xrpl::rpc::LegacyPathFind::inProgress
static std::atomic< int > inProgress
Definition
LegacyPathFind.h:24
xrpl::rpc::LegacyPathFind::~LegacyPathFind
~LegacyPathFind()
Definition
LegacyPathFind.cpp:42
xrpl::rpc::LegacyPathFind::isOk_
bool isOk_
Definition
LegacyPathFind.h:26
xrpl::rpc::tuning::kMaxPathfindsInProgress
static constexpr int kMaxPathfindsInProgress
Definition
src/xrpld/rpc/detail/Tuning.h:66
xrpl::rpc::tuning::kMaxPathfindJobCount
static constexpr int kMaxPathfindJobCount
Definition
src/xrpld/rpc/detail/Tuning.h:67
xrpl::rpc
API version numbers used in later API versions.
Definition
ApiVersion.h:36
xrpl::JtClient
@ JtClient
Definition
Job.h:31
xrpl::isAdmin
bool isAdmin(Port const &port, json::Value const ¶ms, beast::ip::Address const &remoteIp)
Definition
Role.cpp:81
Generated by
1.17.0