version 0.3.19
[fms.git] / include / freenet / introductionpuzzlerequester.h
1 #ifndef _introductionpuzzlerequester_\r
2 #define _introductionpuzzlerequester_\r
3 \r
4 #include "../idatabase.h"\r
5 #include "../ilogger.h"\r
6 #include "ifreenetregistrable.h"\r
7 #include "ifcpconnected.h"\r
8 #include "ifcpmessagehandler.h"\r
9 #include "iperiodicprocessor.h"\r
10 \r
11 #include <Poco/DateTime.h>\r
12 \r
13 class IntroductionPuzzleRequester:public IFreenetRegistrable,public IFCPConnected,public IFCPMessageHandler,public IPeriodicProcessor,public IDatabase,public ILogger\r
14 {\r
15 public:\r
16         IntroductionPuzzleRequester();\r
17         IntroductionPuzzleRequester(FCPv2 *fcp);\r
18 \r
19         void FCPDisconnected();\r
20         void FCPConnected();\r
21 \r
22         const bool HandleMessage(FCPMessage &message);\r
23 \r
24         void RegisterWithThread(FreenetMasterThread *thread);\r
25 \r
26         void Process();\r
27 \r
28 private:\r
29         void Initialize();\r
30         void RemoveFromRequestList(const long identityid);\r
31         void StartRequest(const long identityid);\r
32         void PopulateIDList();                          // clear and re-populate m_ids with identities we want to query\r
33         const bool HandleAllData(FCPMessage &message);\r
34         const bool HandleGetFailed(FCPMessage &message);\r
35 \r
36         Poco::DateTime m_tempdate;\r
37         std::string m_messagebase;\r
38         int m_maxrequests;\r
39         std::vector<long> m_requesting;         // list of ids we are currently requesting from\r
40         std::map<long,bool> m_ids;                      // map of all ids we know and whether we have requested file from them yet\r
41         \r
42 };\r
43 \r
44 #endif  // _introductionpuzzlerequester_\r