version 0.1.10
[fms.git] / src / main.cpp
1 #include "../include/global.h"\r
2 #include "../include/commandthread.h"\r
3 #include "../include/threadcontroller.h"\r
4 \r
5 #include <ctime>\r
6 #include <csignal>\r
7 #include <iostream>\r
8 \r
9 #ifdef _WIN32\r
10         #include "../include/fmsservice.h"\r
11 #else\r
12         #include "../include/fmsdaemon.h"\r
13 #endif\r
14 \r
15 #ifdef XMEM\r
16         #include <xmem.h>\r
17 #endif\r
18 \r
19 int main(int argc, char *argv[])\r
20 {\r
21 \r
22         #ifdef XMEM\r
23                 xmem_disable_print();\r
24         #endif\r
25 \r
26         // check arguments\r
27         if(argc>1)\r
28         {\r
29                 #ifndef _WIN32\r
30                 if(argv[1] && strncmp(argv[1],"-d",2)==0)\r
31                 {\r
32                         Daemonize();\r
33                 }\r
34                 #else\r
35                 if(argv[1] && strncmp(argv[1],"-i",2)==0)\r
36                 {\r
37                         if(ServiceIsInstalled())\r
38                         {\r
39                                 std::cout << "FMS Service is already installed" << std::endl;\r
40                         }\r
41                         else\r
42                         {\r
43                                 if(ServiceInstall())\r
44                                 {\r
45                                         std::cout << "FMS Service Installed" << std::endl;\r
46                                 }\r
47                                 else\r
48                                 {\r
49                                         std::cout << "Error installing FMS Service" << std::endl;\r
50                                 }\r
51                         }\r
52                         return 0;\r
53                 }\r
54                 else if(argv[1] && strncmp(argv[1],"-u",2)==0)\r
55                 {\r
56                         if(ServiceIsInstalled())\r
57                         {\r
58                                 if(ServiceUninstall())\r
59                                 {\r
60                                         std::cout << "FMS Service uninstalled" << std::endl;\r
61                                 }\r
62                                 else\r
63                                 {\r
64                                         std::cout << "There was a problem uninstalling the service" << std::endl;\r
65                                 }\r
66                         }\r
67                         else\r
68                         {\r
69                                 std::cout << "FMS Service is not currently installed" << std::endl;\r
70                         }\r
71                         return 0;\r
72                 }\r
73                 else if(argv[1] && strncmp(argv[1],"-s",2)==0)\r
74                 {\r
75                         if(ServiceStart())\r
76                         {\r
77                         }\r
78                         else\r
79                         {\r
80                                 std::cout << "FMS Service could not be started at this time" << std::endl;\r
81                         }\r
82                         return 0;\r
83                 }\r
84                 #endif\r
85         }\r
86 \r
87         signal(SIGINT,SigHandler);\r
88         signal(SIGTERM,SigHandler);\r
89         signal(SIGABRT,SigHandler);\r
90 #ifdef _WIN32\r
91         signal(SIGBREAK,SigHandler);\r
92 #endif\r
93 \r
94         std::cout << "FMS Running in console mode." << std::endl;\r
95         std::cout << "Use the administration pages, or CTRL+C to exit" << std::endl << std::endl;\r
96         std::cout << "Available command line arguments:" << std::endl;\r
97 #ifdef _WIN32\r
98         std::cout << "-i\tinstall service" << std::endl;\r
99         std::cout << "-u\tuninstall service" << std::endl;\r
100 #else\r
101         std::cout << "-d\trun as daemon" << std::endl;\r
102 #endif\r
103 \r
104         MainFunction();\r
105 \r
106         return 0;\r
107 }\r
108 \r
109 void MainFunction()\r
110 {\r
111         srand(time(NULL));\r
112 \r
113         SetupDB();\r
114         SetupDefaultOptions();\r
115 \r
116         SetupLogFile();\r
117 \r
118         SetupNetwork();\r
119 \r
120         LogFile::Instance()->WriteLog(LogFile::LOGLEVEL_INFO,"FMS startup v"FMS_VERSION);\r
121 \r
122         ThreadController::Instance()->StartThreads();\r
123 \r
124         do\r
125         {\r
126                 PThread::Sleep(1000);\r
127         }while(!wantshutdown);\r
128 \r
129         Shutdown();\r
130 }\r