20 #include <ripple/app/paths/PathRequests.h>
21 #include <ripple/app/ledger/LedgerMaster.h>
22 #include <ripple/app/main/Application.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/resource/Fees.h>
28 #include <ripple/protocol/jss.h>
46 if ( (lineSeq == 0) ||
47 (authoritative && (lgrSeq > lineSeq)) ||
48 (authoritative && ((lgrSeq + 8) < lineSeq)) ||
49 (lgrSeq > (lineSeq + 8)))
51 mLineCache = std::make_shared<RippleLineCache> (ledger);
74 bool mustBreak =
false;
77 "updateAll seq=" << cache->getLedger()->seq() <<
78 ", " << requests.
size() <<
" requests";
80 int processed = 0, removed = 0;
84 for (
auto const& wr : requests)
89 auto request = wr.lock ();
94 if (!request->needsUpdate (newRequests, cache->getLedger()->seq()))
98 if (
auto ipSub = request->getSubscriber ())
100 if (!ipSub->getConsumer ().warn ())
102 Json::Value update = request->doUpdate (cache,
false);
103 request->updateComplete ();
104 update[jss::type] =
"path_find";
105 ipSub->send (update,
false);
110 else if (request->hasCompletion ())
113 request->doUpdate (cache,
false);
114 request->updateComplete();
128 [&removed,&request](
auto const& wl)
132 if (r && r != request)
141 mustBreak = !newRequests &&
155 else if (newRequests)
176 while (!shouldCancel ());
179 "updateAll complete: " << processed <<
" processed and " <<
180 removed <<
" removed";
197 return r && !r->isNew();
210 auto req = std::make_shared<PathRequest> (
213 auto [valid, jvRes] = req->doCreate (
218 subscriber->setPathRequest (req);
222 return std::move (jvRes);
236 req = std::make_shared<PathRequest> (
240 auto [valid, jvRes] = req->doCreate(
getLineCache(inLedger,
false), request);
257 return std::move (jvRes);
266 auto cache = std::make_shared<RippleLineCache> (inLedger);
268 auto req = std::make_shared<PathRequest> (
app_, []{},
271 auto [valid, jvRes] = req->doCreate (cache, request);
273 jvRes = req->doUpdate (cache,
false);
274 return std::move (jvRes);