#include <glibmm/timer.h>
#include <iostream>
#include <exception>
+#include <csignal>
using namespace std;
using namespace PlaQui::Server;
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.
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.
// 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);