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