Rev 1026 | Rev 1196 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 1026 | Rev 1124 | ||
|---|---|---|---|
| Line 33... | Line 33... | ||
| 33 | #include "CanNet/cannetmanager.h" |
33 | #include "CanNet/cannetmanager.h" |
| 34 | #include "Socket/asyncsocket.h" |
34 | #include "Socket/asyncsocket.h" |
| 35 | #include "VM/virtualmachine.h" |
35 | #include "VM/virtualmachine.h" |
| 36 | #include "CanNet/candebug.h" |
36 | #include "CanNet/candebug.h" |
| 37 | 37 | ||
| - | 38 | bool cleanUpRunning = false; |
|
| 38 | int cleanUp(); |
39 | int cleanUp(); |
| 39 | void handler(int status); |
40 | void handler(int status); |
| 40 | 41 | ||
| 41 | int main(int argc, char** argv) |
42 | int main(int argc, char** argv) |
| 42 | { |
43 | { |
| Line 117... | Line 118... | ||
| 117 | } |
118 | } |
| 118 | 119 | ||
| 119 | int cleanUp() |
120 | int cleanUp() |
| 120 | { |
121 | { |
| 121 | Logger &log = Logger::getInstance(); |
122 | Logger &log = Logger::getInstance(); |
| - | 123 | ||
| - | 124 | if (!cleanUpRunning) |
|
| - | 125 | { |
|
| - | 126 | cleanUpRunning = true; |
|
| 122 | 127 | ||
| 123 | log.add("\n"); |
128 | log.add("\n"); |
| 124 | log.addToSyslog("Thank you for using Atom. Goodbye!\n"); |
129 | log.addToSyslog("Thank you for using Atom. Goodbye!\n"); |
| 125 | 130 | ||
| 126 | CanDebug::deleteInstance(); |
131 | CanDebug::deleteInstance(); |
| 127 | VirtualMachine::deleteInstance(); |
132 | VirtualMachine::deleteInstance(); |
| 128 | CanNetManager::deleteInstance(); |
133 | CanNetManager::deleteInstance(); |
| 129 | Logger::deleteInstance(); |
134 | Logger::deleteInstance(); |
| - | 135 | } |
|
| - | 136 | else |
|
| - | 137 | { |
|
| - | 138 | log.addToSyslog("Something has gone wrong clean up is already running!\n"); |
|
| - | 139 | return EXIT_FAILURE; |
|
| - | 140 | } |
|
| 130 | 141 | ||
| 131 | return EXIT_SUCCESS; |
142 | return EXIT_SUCCESS; |
| 132 | } |
143 | } |
| 133 | 144 | ||
| 134 | void handler(int status) |
145 | void handler(int status) |
| 135 | { |
146 | { |
| - | 147 | string signalName = "Unknown"; |
|
| - | 148 | ||
| - | 149 | switch (status) |
|
| - | 150 | { |
|
| - | 151 | case SIGTERM: |
|
| - | 152 | signalName = "Terminate"; |
|
| - | 153 | break; |
|
| - | 154 | ||
| - | 155 | case SIGINT: |
|
| - | 156 | signalName = "Interupt"; |
|
| - | 157 | break; |
|
| - | 158 | ||
| - | 159 | case SIGQUIT: |
|
| - | 160 | signalName = "Quit"; |
|
| - | 161 | break; |
|
| - | 162 | ||
| - | 163 | case SIGABRT: |
|
| - | 164 | signalName = "Abort"; |
|
| - | 165 | break; |
|
| - | 166 | ||
| - | 167 | case SIGIO: |
|
| - | 168 | signalName = "I/O"; |
|
| - | 169 | break; |
|
| - | 170 | ||
| - | 171 | case SIGPIPE: |
|
| - | 172 | signalName = "Pipe"; |
|
| - | 173 | break; |
|
| - | 174 | } |
|
| - | 175 | ||
| - | 176 | Logger &log = Logger::getInstance(); |
|
| - | 177 | log.addToSyslog("Received signal " + signalName + "(" + itos(status) + ")\n"); |
|
| - | 178 | ||
| - | 179 | if (status == SIGPIPE) |
|
| - | 180 | { |
|
| - | 181 | return; |
|
| - | 182 | } |
|
| - | 183 | ||
| 136 | exit(cleanUp()); |
184 | exit(cleanUp()); |
| 137 | } |
185 | } |