X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/212f9ae5dc8899bab8b23ed13d81c28c510db3c3..abe01db4642ea70f5d925ddcfccc6c7bf9ff8fe9:/Server/src/main.cpp?ds=sidebyside diff --git a/Server/src/main.cpp b/Server/src/main.cpp index 08c7cd5..8940921 100644 --- a/Server/src/main.cpp +++ b/Server/src/main.cpp @@ -32,6 +32,7 @@ #include #include #include +#include using namespace std; using namespace PlaQui::Server; @@ -51,6 +52,18 @@ void on_finished(void) { server = NULL; } +void on_signal(int signal) { + switch (signal) { + case SIGINT: + case SIGTERM: + case SIGQUIT: + if (server) { + server->finish(); + } + break; + } +} + int main(int argc, char* argv[]) { // Termina con mas informacion si hay una excepcion no manejada. @@ -61,7 +74,7 @@ int main(int argc, char* argv[]) { cout << "\t" << argv[0] << " [planta] [puerto]" << endl; // Acepta argumentos. - string filename = "prueba.xml"; + string filename = "planta.xml"; Connection::Port port = 7522; if (argc > 1) { // Obtengo nombre del archivo de la planta. @@ -76,6 +89,11 @@ int main(int argc, char* argv[]) { // Inicializa threads. Glib::thread_init(); + // Pone un manejador de seƱales para salir limpiamente del programa. + signal(SIGINT, on_signal); + signal(SIGTERM, on_signal); + signal(SIGQUIT, on_signal); + try { // Crea el server (empieza a escuchar). server = new Server(filename, port);