--- /dev/null
+#include "../include/threadcontroller.h"\r
+#include "../include/option.h"\r
+#include "../include/freenet/freenetmasterthread.h"\r
+#include "../include/nntp/nntplistener.h"\r
+#include "../include/http/httpthread.h"\r
+\r
+#ifdef XMEM\r
+ #include <xmem.h>\r
+#endif\r
+\r
+ThreadController::~ThreadController()\r
+{\r
+ ShutdownThreads();\r
+}\r
+\r
+void ThreadController::ReadConfig()\r
+{\r
+\r
+ std::string tempval="";\r
+ Option::Instance()->Get("StartFreenetUpdater",tempval);\r
+ if(tempval=="true")\r
+ {\r
+ m_startfreenet=true;\r
+ }\r
+ else\r
+ {\r
+ m_startfreenet=false;\r
+ }\r
+\r
+ tempval="";\r
+ Option::Instance()->Get("StartNNTP",tempval);\r
+ if(tempval=="true")\r
+ {\r
+ m_startnntp=true;\r
+ }\r
+ else\r
+ {\r
+ m_startnntp=false;\r
+ }\r
+\r
+ tempval="";\r
+ Option::Instance()->Get("StartHHTP",tempval);\r
+ if(tempval=="true")\r
+ {\r
+ m_starthttp=true;\r
+ }\r
+ else\r
+ {\r
+ m_starthttp=false;\r
+ }\r
+\r
+}\r
+\r
+void ThreadController::RestartThreads()\r
+{\r
+ ShutdownThreads();\r
+ StartThreads();\r
+}\r
+\r
+void ThreadController::ShutdownFreenetThread()\r
+{\r
+ if(m_freenetthread)\r
+ {\r
+ m_freenetthread->Cancel();\r
+ m_freenetthread->Join();\r
+ delete m_freenetthread;\r
+ m_freenetthread=NULL;\r
+ }\r
+}\r
+\r
+void ThreadController::ShutdownHTTPThread()\r
+{\r
+ if(m_httpthread)\r
+ {\r
+ m_httpthread->Cancel();\r
+ m_httpthread->Join();\r
+ delete m_httpthread;\r
+ m_httpthread=NULL;\r
+ }\r
+}\r
+\r
+void ThreadController::ShutdownNNTPThread()\r
+{\r
+ if(m_nntpthread)\r
+ {\r
+ m_nntpthread->Cancel();\r
+ m_nntpthread->Join();\r
+ delete m_nntpthread;\r
+ m_nntpthread=NULL;\r
+ }\r
+}\r
+\r
+void ThreadController::ShutdownThreads()\r
+{\r
+ ShutdownFreenetThread();\r
+ ShutdownNNTPThread();\r
+ ShutdownHTTPThread();\r
+}\r
+\r
+void ThreadController::StartFreenetThread()\r
+{\r
+ m_freenetthread=new PThread::Thread(new FreenetMasterThread());\r
+}\r
+\r
+void ThreadController::StartHTTPThread()\r
+{\r
+ m_httpthread=new PThread::Thread(new HTTPThread());\r
+}\r
+\r
+void ThreadController::StartNNTPThread()\r
+{\r
+ m_nntpthread=new PThread::Thread(new NNTPListener());\r
+}\r
+\r
+void ThreadController::StartThreads()\r
+{\r
+ ReadConfig();\r
+\r
+ if(m_startfreenet)\r
+ {\r
+ StartFreenetThread();\r
+ }\r
+ if(m_startnntp)\r
+ {\r
+ StartNNTPThread();\r
+ }\r
+ if(m_starthttp)\r
+ {\r
+ StartHTTPThread();\r
+ }\r
+}\r
+\r