Subversion Repositories HomeAutomation

Rev

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
}