mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-04-22 16:09:18 -04:00
Added Functions to extract DHT Query information. These functions are quite heavy (they copy lots of data)
and shouldn't be used in normal programs - only for debugging / testing. git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-peernet@4302 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
0fcf56faea
commit
2372e9f3bd
@ -198,6 +198,35 @@ class bdBucket
|
||||
std::list<bdPeer> entries;
|
||||
};
|
||||
|
||||
class bdQueryStatus
|
||||
{
|
||||
public:
|
||||
uint32_t mStatus;
|
||||
uint32_t mQFlags;
|
||||
std::list<bdId> mResults;
|
||||
};
|
||||
|
||||
class bdQuerySummary
|
||||
{
|
||||
public:
|
||||
|
||||
bdNodeId mId;
|
||||
bdMetric mLimit;
|
||||
uint32_t mState;
|
||||
time_t mQueryTS;
|
||||
uint32_t mQueryFlags;
|
||||
int32_t mSearchTime;
|
||||
|
||||
int32_t mQueryIdlePeerRetryPeriod; // seconds between retries.
|
||||
|
||||
// closest peers
|
||||
std::multimap<bdMetric, bdPeer> mClosest;
|
||||
std::multimap<bdMetric, bdPeer> mPotentialClosest;
|
||||
std::list<bdPeer> mPotentialProxies;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/* Status options */
|
||||
#define BITDHT_QUERY_READY 1
|
||||
@ -268,6 +297,9 @@ virtual int getDhtPeerAddress(const bdNodeId *id, struct sockaddr_in &from) = 0;
|
||||
virtual int getDhtValue(const bdNodeId *id, std::string key, std::string &value) = 0;
|
||||
virtual int getDhtBucket(const int idx, bdBucket &bucket) = 0;
|
||||
|
||||
virtual int getDhtQueries(std::map<bdNodeId, bdQueryStatus> &queries) = 0;
|
||||
virtual int getDhtQueryStatus(const bdNodeId *id, bdQuerySummary &query) = 0;
|
||||
|
||||
/* stats and Dht state */
|
||||
virtual int startDht() = 0;
|
||||
virtual int stopDht() = 0;
|
||||
|
@ -802,6 +802,16 @@ int bdNodeManager::getDhtBucket(const int idx, bdBucket &bucket)
|
||||
return mNodeSpace.getDhtBucket(idx, bucket);
|
||||
}
|
||||
|
||||
int bdNodeManager::getDhtQueries(std::map<bdNodeId, bdQueryStatus> &queries)
|
||||
{
|
||||
bdNode::QueryStatus(queries);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int bdNodeManager::getDhtQueryStatus(const bdNodeId *id, bdQuerySummary &query)
|
||||
{
|
||||
return bdNode::QuerySummary(id, query);
|
||||
}
|
||||
|
||||
|
||||
/***** Add / Remove Callback Clients *****/
|
||||
|
@ -115,6 +115,9 @@ virtual int getDhtPeerAddress(const bdNodeId *id, struct sockaddr_in &from);
|
||||
virtual int getDhtValue(const bdNodeId *id, std::string key, std::string &value);
|
||||
virtual int getDhtBucket(const int idx, bdBucket &bucket);
|
||||
|
||||
virtual int getDhtQueries(std::map<bdNodeId, bdQueryStatus> &queries);
|
||||
virtual int getDhtQueryStatus(const bdNodeId *id, bdQuerySummary &query);
|
||||
|
||||
/***** Connection Interface ****/
|
||||
virtual void ConnectionRequest(struct sockaddr_in *laddr, bdNodeId *target, uint32_t mode);
|
||||
virtual void ConnectionAuth(bdId *srcId, bdId *proxyId, bdId *destId,
|
||||
|
@ -686,6 +686,30 @@ void bdNode::QueryStatus(std::map<bdNodeId, bdQueryStatus> &statusMap)
|
||||
}
|
||||
}
|
||||
|
||||
int bdNode::QuerySummary(const bdNodeId *id, bdQuerySummary &query)
|
||||
{
|
||||
std::list<bdQuery *>::iterator it;
|
||||
for(it = mLocalQueries.begin(); it != mLocalQueries.end(); it++)
|
||||
{
|
||||
if ((*it)->mId == *id)
|
||||
{
|
||||
query.mId = (*it)->mId;
|
||||
query.mLimit = (*it)->mLimit;
|
||||
query.mState = (*it)->mState;
|
||||
query.mQueryTS = (*it)->mQueryTS;
|
||||
query.mQueryFlags = (*it)->mQueryFlags;
|
||||
query.mSearchTime = (*it)->mSearchTime;
|
||||
query.mClosest = (*it)->mClosest;
|
||||
query.mPotentialClosest = (*it)->mPotentialClosest;
|
||||
query.mPotentialProxies = (*it)->mPotentialProxies;
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/************************************ Process Remote Query *************************/
|
||||
void bdNode::processRemoteQuery()
|
||||
|
@ -114,6 +114,7 @@ class bdNode
|
||||
void addQuery(const bdNodeId *id, uint32_t qflags);
|
||||
void clearQuery(const bdNodeId *id);
|
||||
void QueryStatus(std::map<bdNodeId, bdQueryStatus> &statusMap);
|
||||
int QuerySummary(const bdNodeId *id, bdQuerySummary &query);
|
||||
|
||||
/* connection functions */
|
||||
void requestConnection(bdNodeId *id, uint32_t modes);
|
||||
|
@ -63,7 +63,7 @@ int printQuery();
|
||||
|
||||
int32_t mQueryIdlePeerRetryPeriod; // seconds between retries.
|
||||
|
||||
private:
|
||||
//private:
|
||||
|
||||
// closest peers
|
||||
std::multimap<bdMetric, bdPeer> mClosest;
|
||||
@ -73,6 +73,8 @@ int printQuery();
|
||||
bdDhtFunctions *mFns;
|
||||
};
|
||||
|
||||
#if 0
|
||||
|
||||
class bdQueryStatus
|
||||
{
|
||||
public:
|
||||
@ -81,6 +83,8 @@ class bdQueryStatus
|
||||
std::list<bdId> mResults;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* this is just a container class.
|
||||
|
@ -168,6 +168,23 @@ int UdpBitDht::getDhtBucket(const int idx, bdBucket &bucket)
|
||||
}
|
||||
|
||||
|
||||
|
||||
int UdpBitDht::getDhtQueries(std::map<bdNodeId, bdQueryStatus> &queries)
|
||||
{
|
||||
bdStackMutex stack(dhtMtx); /********** MUTEX LOCKED *************/
|
||||
|
||||
return mBitDhtManager->getDhtQueries(queries);
|
||||
}
|
||||
|
||||
int UdpBitDht::getDhtQueryStatus(const bdNodeId *id, bdQuerySummary &query)
|
||||
{
|
||||
bdStackMutex stack(dhtMtx); /********** MUTEX LOCKED *************/
|
||||
|
||||
return mBitDhtManager->getDhtQueryStatus(id, query);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* stats and Dht state */
|
||||
int UdpBitDht:: startDht()
|
||||
{
|
||||
|
@ -77,6 +77,9 @@ virtual int getDhtPeerAddress(const bdNodeId *id, struct sockaddr_in &from);
|
||||
virtual int getDhtValue(const bdNodeId *id, std::string key, std::string &value);
|
||||
virtual int getDhtBucket(const int idx, bdBucket &bucket);
|
||||
|
||||
virtual int getDhtQueries(std::map<bdNodeId, bdQueryStatus> &queries);
|
||||
virtual int getDhtQueryStatus(const bdNodeId *id, bdQuerySummary &query);
|
||||
|
||||
/* stats and Dht state */
|
||||
virtual int startDht();
|
||||
virtual int stopDht();
|
||||
|
Loading…
x
Reference in New Issue
Block a user