Handler to run all pathfinding requests.

This commit is contained in:
JoelKatz
2013-05-02 12:52:05 -07:00
parent d193608aa1
commit f5579c0139
2 changed files with 44 additions and 0 deletions

View File

@@ -248,4 +248,47 @@ bool PFRequest::doUpdate(RLCache::ref cache, bool fast)
return true;
}
void PFRequest::updateAll(const boost::shared_ptr<Ledger>& ledger)
{
assert(ledger->isImmutable());
std::set<wptr> requests;
{
boost::recursive_mutex::scoped_lock sl(sLock);
requests = sRequests;
}
if (requests.empty())
return;
RLCache::pointer cache = boost::make_shared<RLCache>(ledger);
BOOST_FOREACH(wref wRequest, requests)
{
bool remove = true;
PFRequest::pointer pRequest = wRequest.lock();
if (pRequest)
{
InfoSub::pointer ipSub = pRequest->wpSubscriber.lock();
if (ipSub)
{
Json::Value update;
{
boost::recursive_mutex::scoped_lock sl(pRequest->mLock);
pRequest->doUpdate(cache, true);
update = pRequest->jvStatus;
}
update["type"] = "path_find";
ipSub->send(update, false);
remove = false;
}
}
if (remove)
{
boost::recursive_mutex::scoped_lock sl(sLock);
sRequests.erase(wRequest);
}
}
}
// vim:ts=4

View File

@@ -35,6 +35,7 @@ public:
typedef boost::weak_ptr<PFRequest> wptr;
typedef boost::shared_ptr<PFRequest> pointer;
typedef const pointer& ref;
typedef const wptr& wref;
typedef std::pair<uint160, uint160> currIssuer_t;