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