mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-03 01:15:53 +00:00
TMGetObjectByHash needs to know the object type.
This commit is contained in:
@@ -226,8 +226,22 @@ void LedgerAcquire::trigger(Peer::ref peer)
|
||||
ripple::TMGetLedger tmGL;
|
||||
tmGL.set_ledgerhash(mHash.begin(), mHash.size());
|
||||
if (getTimeouts() != 0)
|
||||
{
|
||||
tmGL.set_querytype(ripple::qtINDIRECT);
|
||||
|
||||
#if 0
|
||||
if (!isProgress())
|
||||
{
|
||||
std::vector< std::pair<ripple::TMGetObjectByHash::ObjectType, uint256> > need = getNeededHashes();
|
||||
if (!need.empty())
|
||||
{
|
||||
ripple::TMGetObjectByHash tmBH;
|
||||
tmBH.
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (!mHaveBase)
|
||||
{
|
||||
tmGL.set_itype(ripple::liBASE);
|
||||
@@ -531,18 +545,26 @@ LedgerAcquire::pointer LedgerAcquireMaster::find(const uint256& hash)
|
||||
return LedgerAcquire::pointer();
|
||||
}
|
||||
|
||||
std::vector<uint256> LedgerAcquire::getNeededHashes()
|
||||
std::vector< std::pair<ripple::TMGetObjectByHash::ObjectType, uint256> > LedgerAcquire::getNeededHashes()
|
||||
{
|
||||
std::vector<uint256> ret;
|
||||
std::vector< std::pair<ripple::TMGetObjectByHash::ObjectType, uint256> > ret;
|
||||
if (!mHaveBase)
|
||||
{
|
||||
ret.push_back(mHash);
|
||||
ret.push_back(std::make_pair(ripple::TMGetObjectByHash::otLEDGER, mHash));
|
||||
return ret;
|
||||
}
|
||||
if (!mHaveState)
|
||||
mLedger->peekAccountStateMap()->getNeededHashes(ret, 16);
|
||||
{
|
||||
std::vector<uint256> v = mLedger->peekAccountStateMap()->getNeededHashes(16);
|
||||
BOOST_FOREACH(const uint256& h, v)
|
||||
ret.push_back(std::make_pair(ripple::TMGetObjectByHash::otSTATE_NODE, h));
|
||||
}
|
||||
if (!mHaveTransactions)
|
||||
mLedger->peekTransactionMap()->getNeededHashes(ret, 16);
|
||||
{
|
||||
std::vector<uint256> v = mLedger->peekTransactionMap()->getNeededHashes(16);
|
||||
BOOST_FOREACH(const uint256& h, v)
|
||||
ret.push_back(std::make_pair(ripple::TMGetObjectByHash::otTRANSACTION_NODE, h));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ public:
|
||||
int getTimeouts() const { return mTimeouts; }
|
||||
|
||||
void progress() { mProgress = true; }
|
||||
bool isProgress() { return mProgress; }
|
||||
|
||||
void peerHas(Peer::ref);
|
||||
void badPeer(Peer::ref);
|
||||
@@ -109,7 +110,7 @@ public:
|
||||
bool tryLocal();
|
||||
void addPeers();
|
||||
|
||||
std::vector<uint256> getNeededHashes();
|
||||
std::vector< std::pair<ripple::TMGetObjectByHash::ObjectType, uint256> > getNeededHashes();
|
||||
};
|
||||
|
||||
class LedgerAcquireMaster
|
||||
|
||||
@@ -413,7 +413,7 @@ public:
|
||||
bool getNodeFat(const SHAMapNode& node, std::vector<SHAMapNode>& nodeIDs,
|
||||
std::list<std::vector<unsigned char> >& rawNode, bool fatRoot, bool fatLeaves);
|
||||
bool getRootNode(Serializer& s, SHANodeFormat format);
|
||||
void getNeededHashes(std::vector<uint256>& hashes, int max);
|
||||
std::vector<uint256> getNeededHashes(int max);
|
||||
SMAddNode addRootNode(const uint256& hash, const std::vector<unsigned char>& rootNode, SHANodeFormat format,
|
||||
SHAMapSyncFilter* filter);
|
||||
SMAddNode addRootNode(const std::vector<unsigned char>& rootNode, SHANodeFormat format,
|
||||
|
||||
@@ -91,8 +91,9 @@ void SHAMap::getMissingNodes(std::vector<SHAMapNode>& nodeIDs, std::vector<uint2
|
||||
}
|
||||
}
|
||||
|
||||
void SHAMap::getNeededHashes(std::vector<uint256>& ret, int max)
|
||||
std::vector<uint256> SHAMap::getNeededHashes(int max)
|
||||
{
|
||||
std::vector<uint256> ret;
|
||||
boost::recursive_mutex::scoped_lock sl(mLock);
|
||||
|
||||
assert(root->isValid());
|
||||
@@ -100,7 +101,7 @@ void SHAMap::getNeededHashes(std::vector<uint256>& ret, int max)
|
||||
if (root->isFullBelow() || !root->isInner())
|
||||
{
|
||||
clearSynching();
|
||||
return;
|
||||
return ret;
|
||||
}
|
||||
|
||||
std::stack<SHAMapTreeNode*> stack;
|
||||
@@ -133,13 +134,14 @@ void SHAMap::getNeededHashes(std::vector<uint256>& ret, int max)
|
||||
have_all = false;
|
||||
ret.push_back(childHash);
|
||||
if (--max <= 0)
|
||||
return;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (have_all)
|
||||
node->setFullBelow();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool SHAMap::getNodeFat(const SHAMapNode& wanted, std::vector<SHAMapNode>& nodeIDs,
|
||||
|
||||
Reference in New Issue
Block a user