xrpld
Loading...
Searching...
No Matches
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
12namespace xrpl::RPC {
13
15{
16 if (isAdmin)
17 {
18 ++inProgress;
19 isOk_ = true;
20 return;
21 }
22
23 auto const& jobCount = app.getJobQueue().getJobCountGE(JtClient);
25 return;
26
27 while (true)
28 {
29 int prevVal = inProgress.load();
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
47
49
50} // namespace xrpl::RPC
int getJobCountGE(JobType t) const
All waiting jobs at or greater than this priority.
Definition JobQueue.cpp:140
bool isLoadedLocal() const
static std::atomic< int > inProgress
LegacyPathFind(bool isAdmin, Application &app)
virtual JobQueue & getJobQueue()=0
virtual LoadFeeTrack & getFeeTrack()=0
static constexpr int kMaxPathfindJobCount
static constexpr int kMaxPathfindsInProgress
API version numbers used in later API versions.
Definition ApiVersion.h:35
@ JtClient
Definition Job.h:26
bool isAdmin(Port const &port, json::Value const &params, beast::IP::Address const &remoteIp)
Definition Role.cpp:81