20 #include <ripple/app/ledger/LedgerMaster.h>
21 #include <ripple/app/main/Application.h>
22 #include <ripple/app/paths/PathRequests.h>
23 #include <ripple/basics/Log.h>
24 #include <ripple/core/JobQueue.h>
25 #include <ripple/net/RPCErr.h>
26 #include <ripple/protocol/ErrorCodes.h>
27 #include <ripple/protocol/jss.h>
28 #include <ripple/resource/Fees.h>
47 (authoritative && (lgrSeq > lineSeq)) ||
49 ((lgrSeq + 8) < lineSeq)) ||
50 (lgrSeq > (lineSeq + 8)))
52 mLineCache = std::make_shared<RippleLineCache>(ledger);
76 bool mustBreak =
false;
78 JLOG(
mJournal.
trace()) <<
"updateAll seq=" << cache->getLedger()->seq()
79 <<
", " << requests.
size() <<
" requests";
81 int processed = 0, removed = 0;
85 for (
auto const& wr : requests)
90 auto request = wr.lock();
95 if (!request->needsUpdate(
96 newRequests, cache->getLedger()->seq()))
100 if (
auto ipSub = request->getSubscriber())
102 if (!ipSub->getConsumer().warn())
105 request->doUpdate(cache,
false);
106 request->updateComplete();
107 update[jss::type] =
"path_find";
108 ipSub->send(update,
false);
113 else if (request->hasCompletion())
116 request->doUpdate(cache,
false);
117 request->updateComplete();
132 [&removed, &request](
auto const& wl) {
135 if (r && r != request)
157 else if (newRequests)
177 }
while (!shouldCancel());
179 JLOG(
mJournal.
debug()) <<
"updateAll complete: " << processed
180 <<
" processed and " << removed <<
" removed";
195 return r && !r->isNew();
208 auto req = std::make_shared<PathRequest>(
211 auto [valid, jvRes] =
212 req->doCreate(
getLineCache(inLedger,
false), requestJson);
216 subscriber->setPathRequest(req);
220 return std::move(jvRes);
234 req = std::make_shared<PathRequest>(
237 auto [valid, jvRes] = req->doCreate(
getLineCache(inLedger,
false), request);
254 return std::move(jvRes);
263 auto cache = std::make_shared<RippleLineCache>(inLedger);
265 auto req = std::make_shared<PathRequest>(
268 auto [valid, jvRes] = req->doCreate(cache, request);
270 jvRes = req->doUpdate(cache,
false);
271 return std::move(jvRes);