HTTPThread::HTTPThread()\r
{\r
m_listenport=8080;\r
- std::string portstr;\r
- Option::Instance()->Get("HTTPListenPort",portstr);\r
- StringFunctions::Convert(portstr,m_listenport);\r
}\r
\r
void HTTPThread::run()\r
{\r
m_log->debug("HTTPThread::run thread started.");\r
\r
- Poco::Net::ServerSocket sock(m_listenport);\r
- Poco::Net::HTTPServerParams* pParams = new Poco::Net::HTTPServerParams;\r
- pParams->setMaxQueued(30);\r
- pParams->setMaxThreads(5);\r
- Poco::Net::HTTPServer srv(new FMSHTTPRequestHandlerFactory,sock,pParams);\r
+ LoadDatabase();\r
+ Option option(m_db);\r
+\r
+ std::string portstr("8080");\r
+ option.Get("HTTPListenPort",portstr);\r
+ StringFunctions::Convert(portstr,m_listenport);\r
+\r
+ try\r
+ {\r
+ Poco::Net::ServerSocket sock(m_listenport);\r
+ Poco::Net::HTTPServerParams* pParams = new Poco::Net::HTTPServerParams;\r
+ pParams->setMaxQueued(30);\r
+ pParams->setMaxThreads(5);\r
+ Poco::Net::HTTPServer srv(new FMSHTTPRequestHandlerFactory(m_db),sock,pParams);\r
+\r
+ srv.start();\r
+ m_log->trace("Started HTTPServer");\r
\r
- srv.start();\r
- m_log->trace("Started HTTPServer");\r
+ do\r
+ {\r
+ Poco::Thread::sleep(1000);\r
+ }while(!IsCancelled());\r
\r
- do\r
+ m_log->trace("Trying to stop HTTPServer");\r
+ srv.stop();\r
+ m_log->trace("Stopped HTTPServer");\r
+ \r
+ m_log->trace("Waiting for current HTTP requests to finish");\r
+ while(srv.currentConnections()>0)\r
+ {\r
+ Poco::Thread::sleep(500);\r
+ }\r
+ }\r
+ catch(Poco::Exception &e)\r
{\r
- Poco::Thread::sleep(1000);\r
- }while(!IsCancelled());\r
-\r
- m_log->trace("Trying to stop HTTPServer");\r
- srv.stop();\r
- m_log->trace("Stopped HTTPServer");\r
- \r
- m_log->trace("Waiting for current HTTP requests to finish");\r
- while(srv.currentConnections()>0)\r
+ m_log->fatal("HTTPThread::run caught "+e.displayText());\r
+ }\r
+ catch(...)\r
{\r
- Poco::Thread::sleep(500);\r
+ m_log->fatal("HTTPThread::run caught unknown exception");\r
}\r
\r
m_log->debug("HTTPThread::run thread exiting.");\r