]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/src/main.cpp
cuando se eliminann items las compuetas ponen sus estados de las salidas o entradas...
[z.facultad/75.42/plaqui.git] / Server / src / main.cpp
index 08c7cd50a5dbe83fb28ca82e30a3a3de42794cd2..89409213e63ae028c90d025b79bd33f402a53e62 100644 (file)
@@ -32,6 +32,7 @@
 #include <glibmm/timer.h>
 #include <iostream>
 #include <exception>
+#include <csignal>
 
 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);