+#ifndef _trustlistrequester_\r
+#define _trustlistrequester_\r
+\r
+#include "../idatabase.h"\r
+#include "../ilogger.h"\r
+#include "../datetime.h"\r
+#include "ifreenetregistrable.h"\r
+#include "ifcpconnected.h"\r
+#include "ifcpmessagehandler.h"\r
+#include "iperiodicprocessor.h"\r
+\r
+class TrustListRequester:public IFreenetRegistrable,public IFCPConnected,public IFCPMessageHandler,public IPeriodicProcessor,public IDatabase,public ILogger\r
+{\r
+public:\r
+ TrustListRequester();\r
+ TrustListRequester(FCPv2 *fcp);\r
+\r
+ void FCPDisconnected();\r
+ void FCPConnected();\r
+\r
+ const bool HandleMessage(FCPMessage &message);\r
+\r
+ void Process();\r
+\r
+ void RegisterWithThread(FreenetMasterThread *thread);\r
+\r
+private:\r
+ void Initialize();\r
+ void PopulateIDList(); // clear and re-populate m_ids with identities we want to query\r
+ void StartRequest(const long identityid);\r
+ const bool HandleAllData(FCPMessage &message);\r
+ const bool HandleGetFailed(FCPMessage &message);\r
+ void RemoveFromRequestList(const long identityid);\r
+\r
+ DateTime m_tempdate;\r
+ std::string m_messagebase;\r
+ long m_maxrequests;\r
+ std::vector<long> m_requesting; // list of ids we are currently requesting from\r
+ std::map<long,bool> m_ids; // map of all ids we know and whether we have requested file from them yet\r
+ \r
+};\r
+\r
+#endif // _trustlistrequester_\r