mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-01-06 13:18:06 -05:00
fff40eceac
There are many significant improvements to the DHT here. See commit logs on v0.5-peernet branch for details. This is not the final merge, but brings over the majority of expected v0.5-peernet/libbitdht changes git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4354 b45a01b8-16f6-495d-af2f-9b41ad6348cc
79 lines
2.1 KiB
C++
79 lines
2.1 KiB
C++
#ifndef BITDHT_QUERY_MANAGER_H
|
|
#define BITDHT_QUERY_MANAGER_H
|
|
|
|
/*
|
|
* bitdht/bdquerymgr.h
|
|
*
|
|
* BitDHT: An Flexible DHT library.
|
|
*
|
|
* Copyright 2011 by Robert Fernie
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Library General Public
|
|
* License Version 3 as published by the Free Software Foundation.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Library General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Library General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
* USA.
|
|
*
|
|
* Please report all bugs and problems to "bitdht@lunamutt.com".
|
|
*
|
|
*/
|
|
|
|
|
|
#include "bitdht/bdquery.h"
|
|
class bdNodePublisher;
|
|
|
|
|
|
class bdQueryManager
|
|
{
|
|
public:
|
|
|
|
bdQueryManager(bdSpace *space, bdDhtFunctions *fns, bdNodePublisher *pub);
|
|
|
|
void shutdownQueries();
|
|
void printQueries();
|
|
|
|
int iterateQueries(int maxqueries);
|
|
|
|
bool checkPotentialPeer(bdId *id, bdId *src);
|
|
void addPeer(const bdId *id, uint32_t peerflags);
|
|
|
|
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);
|
|
|
|
int result(bdNodeId *target, std::list<bdId> &answer);
|
|
int proxies(bdNodeId *target, std::list<bdId> &answer);
|
|
int potentialProxies(bdNodeId *target, std::list<bdId> &answer);
|
|
|
|
// extra "Worthy Peers" we will want to ping.
|
|
void addWorthyPeerSource(bdId *src);
|
|
bool checkWorthyPeerSources(bdId *src);
|
|
|
|
private:
|
|
|
|
int getResults(bdNodeId *target, std::list<bdId> &answer, int querytype);
|
|
|
|
/* NB: No Mutex Protection... Single threaded, Mutex at higher level!
|
|
*/
|
|
|
|
bdSpace *mNodeSpace;
|
|
bdDhtFunctions *mFns;
|
|
bdNodePublisher *mPub;
|
|
|
|
std::list<bdQuery *> mLocalQueries;
|
|
std::list<bdPeer> mWorthyPeerSources;
|
|
};
|
|
|
|
|
|
|
|
#endif // BITDHT_QUERY_MANAGER_H
|