8bfb7b59621ac1fe79991803b6ebe1c6c435b934
[fms.git] / src / threadcontroller.cpp
1 #include "../include/threadcontroller.h"\r
2 #include "../include/option.h"\r
3 #include "../include/freenet/freenetmasterthread.h"\r
4 #include "../include/nntp/nntplistener.h"\r
5 #include "../include/http/httpthread.h"\r
6 \r
7 #ifdef XMEM\r
8         #include <xmem.h>\r
9 #endif\r
10 \r
11 ThreadController::~ThreadController()\r
12 {\r
13         ShutdownThreads();\r
14 }\r
15 \r
16 void ThreadController::ReadConfig()\r
17 {\r
18 \r
19         std::string tempval="";\r
20         Option::Instance()->Get("StartFreenetUpdater",tempval);\r
21         if(tempval=="true")\r
22         {\r
23                 m_startfreenet=true;\r
24         }\r
25         else\r
26         {\r
27                 m_startfreenet=false;\r
28         }\r
29 \r
30         tempval="";\r
31         Option::Instance()->Get("StartNNTP",tempval);\r
32         if(tempval=="true")\r
33         {\r
34                 m_startnntp=true;\r
35         }\r
36         else\r
37         {\r
38                 m_startnntp=false;\r
39         }\r
40 \r
41         tempval="";\r
42         Option::Instance()->Get("StartHHTP",tempval);\r
43         if(tempval=="true")\r
44         {\r
45                 m_starthttp=true;\r
46         }\r
47         else\r
48         {\r
49                 m_starthttp=false;\r
50         }\r
51 \r
52 }\r
53 \r
54 void ThreadController::RestartThreads()\r
55 {\r
56         ShutdownThreads();\r
57         StartThreads();\r
58 }\r
59 \r
60 void ThreadController::ShutdownFreenetThread()\r
61 {\r
62         if(m_freenetthread)\r
63         {\r
64                 m_freenetthread->Cancel();\r
65                 m_freenetthread->Join();\r
66                 delete m_freenetthread;\r
67                 m_freenetthread=NULL;\r
68         }\r
69 }\r
70 \r
71 void ThreadController::ShutdownHTTPThread()\r
72 {\r
73         if(m_httpthread)\r
74         {\r
75                 m_httpthread->Cancel();\r
76                 m_httpthread->Join();\r
77                 delete m_httpthread;\r
78                 m_httpthread=NULL;\r
79         }\r
80 }\r
81 \r
82 void ThreadController::ShutdownNNTPThread()\r
83 {\r
84         if(m_nntpthread)\r
85         {\r
86                 m_nntpthread->Cancel();\r
87                 m_nntpthread->Join();\r
88                 delete m_nntpthread;\r
89                 m_nntpthread=NULL;\r
90         }\r
91 }\r
92 \r
93 void ThreadController::ShutdownThreads()\r
94 {\r
95         ShutdownFreenetThread();\r
96         ShutdownNNTPThread();\r
97         ShutdownHTTPThread();\r
98 }\r
99 \r
100 void ThreadController::StartFreenetThread()\r
101 {\r
102         m_freenetthread=new PThread::Thread(new FreenetMasterThread());\r
103 }\r
104 \r
105 void ThreadController::StartHTTPThread()\r
106 {\r
107         m_httpthread=new PThread::Thread(new HTTPThread());\r
108 }\r
109 \r
110 void ThreadController::StartNNTPThread()\r
111 {\r
112         m_nntpthread=new PThread::Thread(new NNTPListener());\r
113 }\r
114 \r
115 void ThreadController::StartThreads()\r
116 {\r
117         ReadConfig();\r
118 \r
119         if(m_startfreenet)\r
120         {\r
121                 StartFreenetThread();\r
122         }\r
123         if(m_startnntp)\r
124         {\r
125                 StartNNTPThread();\r
126         }\r
127         if(m_starthttp)\r
128         {\r
129                 StartHTTPThread();\r
130         }\r
131 }\r
132 \r