version 0.3.29
[fms.git] / include / freenet / freenetmasterthread.h
1 #ifndef _freenetmasterthread_\r
2 #define _freenetmasterthread_\r
3 \r
4 #include "../ilogger.h"\r
5 #include "../ithreaddatabase.h"\r
6 #include "ifreenetregistrable.h"\r
7 #include "ifcpmessagehandler.h"\r
8 #include "ifcpconnected.h"\r
9 #include "iperiodicprocessor.h"\r
10 \r
11 #include "../threadwrapper/cancelablerunnable.h"\r
12 \r
13 // forward declaration\r
14 class IFreenetRegistrable;\r
15 \r
16 class FreenetMasterThread:public CancelableRunnable,public ILogger, public IFCPMessageHandler, public IThreadDatabase\r
17 {\r
18 public:\r
19         FreenetMasterThread();\r
20         ~FreenetMasterThread();\r
21         \r
22         const bool HandleMessage(FCPv2::Message &message);\r
23 \r
24         void run();\r
25 \r
26         // registration methods for child objects\r
27         void RegisterPeriodicProcessor(IPeriodicProcessor *obj);\r
28         void RegisterFCPConnected(IFCPConnected *obj);\r
29         void RegisterFCPMessageHandler(IFCPMessageHandler *obj);\r
30 \r
31 private:\r
32         const bool FCPConnect();\r
33         void Setup();\r
34         void Shutdown();\r
35 \r
36         std::string m_fcphost;\r
37         int m_fcpport;\r
38         FCPv2::Connection m_fcp;\r
39         std::vector<IFreenetRegistrable *> m_registrables;\r
40         std::vector<IPeriodicProcessor *> m_processors;\r
41         std::vector<IFCPConnected *> m_fcpconnected;\r
42         std::vector<IFCPMessageHandler *> m_fcpmessagehandlers;\r
43         bool m_receivednodehello;\r
44 \r
45 };\r
46 \r
47 #endif  // _freenetmasterthread_\r