-#include <ctime>\r
-#include <csignal>\r
-#include <iostream>\r
-\r
-#ifdef _WIN32\r
- #include "../include/fmsservice.h"\r
-#else\r
- #include "../include/fmsdaemon.h"\r
-#endif\r
-\r
-#ifdef XMEM\r
- #include <xmem.h>\r
-#endif\r
-\r
-int main(int argc, char *argv[])\r
-{\r
-\r
- #ifdef XMEM\r
- xmem_disable_print();\r
- #endif\r
-\r
- // check arguments\r
- if(argc>1)\r
- {\r
- #ifndef _WIN32\r
- if(argv[1] && strncmp(argv[1],"-d",2)==0)\r
- {\r
- Daemonize();\r
- }\r
- #else\r
- if(argv[1] && strncmp(argv[1],"-i",2)==0)\r
- {\r
- if(ServiceIsInstalled())\r
- {\r
- std::cout << "FMS Service is already installed" << std::endl;\r
- }\r
- else\r
- {\r
- if(ServiceInstall())\r
- {\r
- std::cout << "FMS Service Installed" << std::endl;\r
- }\r
- else\r
- {\r
- std::cout << "Error installing FMS Service" << std::endl;\r
- }\r
- }\r
- return 0;\r
- }\r
- else if(argv[1] && strncmp(argv[1],"-u",2)==0)\r
- {\r
- if(ServiceIsInstalled())\r
- {\r
- if(ServiceUninstall())\r
- {\r
- std::cout << "FMS Service uninstalled" << std::endl;\r
- }\r
- else\r
- {\r
- std::cout << "There was a problem uninstalling the service" << std::endl;\r
- }\r
- }\r
- else\r
- {\r
- std::cout << "FMS Service is not currently installed" << std::endl;\r
- }\r
- return 0;\r
- }\r
- else if(argv[1] && strncmp(argv[1],"-s",2)==0)\r
- {\r
- if(ServiceStart())\r
- {\r
- }\r
- else\r
- {\r
- std::cout << "FMS Service could not be started at this time" << std::endl;\r
- }\r
- return 0;\r
- }\r
- #endif\r
- }\r
-\r
- signal(SIGINT,SigHandler);\r
- signal(SIGTERM,SigHandler);\r
- signal(SIGABRT,SigHandler);\r
-#ifdef _WIN32\r
- signal(SIGBREAK,SigHandler);\r
-#endif\r
-\r
- std::cout << "FMS Running in console mode." << std::endl;\r
- std::cout << "Use the administration pages, or CTRL+C to exit" << std::endl << std::endl;\r
- std::cout << "Available command line arguments:" << std::endl;\r
-#ifdef _WIN32\r
- std::cout << "-i\tinstall service" << std::endl;\r
- std::cout << "-u\tuninstall service" << std::endl;\r
-#else\r
- std::cout << "-d\trun as daemon" << std::endl;\r
-#endif\r
-\r
- MainFunction();\r
-\r
- return 0;\r
-}\r
-\r
-void MainFunction()\r
-{\r
- srand(time(NULL));\r
-\r
- SetupDB();\r
- SetupDefaultOptions();\r
-\r
- SetupLogFile();\r
-\r
- SetupNetwork();\r
-\r
- LogFile::Instance()->WriteLog(LogFile::LOGLEVEL_INFO,"FMS startup v"FMS_VERSION);\r
-\r
- ThreadController::Instance()->StartThreads();\r
-\r
- do\r
- {\r
- PThread::Sleep(1000);\r
- }while(!wantshutdown);\r
-\r
- Shutdown();\r
-}\r