]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Server/src/server.cpp
Se ponen mas simples algunos SigC::bind() :)
[z.facultad/75.42/plaqui.git] / Server / src / server.cpp
index e332866d37954f4b22da97a9dbb3b3c1ae976d41..32b23e5daa7d68b59e32ee854d8641e5d9447bb8 100644 (file)
@@ -73,10 +73,9 @@ Server::Server(const string& plant_filename, const Connection::Port& port)
        // FIXME - hacer que se puedan cargar mas plantas bien.
        Glib::Mutex::Lock lock(plants_mutex);
        plants["default"] = new Plant(plant_filename);
        // FIXME - hacer que se puedan cargar mas plantas bien.
        Glib::Mutex::Lock lock(plants_mutex);
        plants["default"] = new Plant(plant_filename);
-       plants["default"]->signal_finished().connect(
-                       SigC::bind<const char*>(
-                               SigC::slot_class(*this, &Server::on_plant_finished),
-                               "default"));
+       plants["default"]->signal_finished().connect(SigC::bind(
+                       SigC::slot_class(*this, &Server::on_plant_finished),
+                       "default"));
        plants["default"]->run();
 }
 
        plants["default"]->run();
 }
 
@@ -88,10 +87,9 @@ Connection* Server::new_connection(const sockbuf::sockdesc& sd) {
 #endif // DEBUG
        ControlServer* connection = new ControlServer(sd);
        // TODO verificar si el new se hace bien? no creo.
 #endif // DEBUG
        ControlServer* connection = new ControlServer(sd);
        // TODO verificar si el new se hace bien? no creo.
-       connection->signal_command_received().connect(
-                       SigC::bind<ControlServer*>(
-                               SigC::slot_class(*this, &Server::on_control_command_received),
-                               connection));
+       connection->signal_command_received().connect(SigC::bind(
+                       SigC::slot_class(*this, &Server::on_control_command_received),
+                       connection));
        // TODO: 
        return connection;
 }
        // TODO: 
        return connection;
 }
@@ -121,22 +119,15 @@ void Server::on_control_command_received(const Command& command,
                if (command.get_command() == "status") {
                        response = cmd_server_status();
                } else if (command.get_command() == "stop") {
                if (command.get_command() == "status") {
                        response = cmd_server_status();
                } else if (command.get_command() == "stop") {
-                       finish();
                        response = new HTTPResponse(HTTPMessage::OK,
                                        "<response desc=\"El server se apagará en instantes...\" />");
                        response = new HTTPResponse(HTTPMessage::OK,
                                        "<response desc=\"El server se apagará en instantes...\" />");
-                       response->headers["Content-Type"] = "text/xml; charset=iso-8859-1";
-                       controlserver->send(*response);
-                       delete response;
-                       // Creo una conexión suicida para que el accept() del server retorne
-                       // el control y el server pueda terminar realmente.
-                       try {
-                               sockinetbuf suicida(sockbuf::sock_stream);
-                               suicida.connect(socket.localhost(), socket.localport());
-                       } catch (...) {
-                               // FIXME
-                               signal_error().emit(12345, "ahhhh! no puedo crear conexion suicida");
-                       }
-                       return;
+                       // XXX - Sin mandar la respuesta enseguida podría ser que el server
+                       // cierre la conexión antes de mandar la respuesta.
+                       //response->headers["Content-Type"] = "text/xml; charset=iso-8859-1";
+                       //controlserver->send(*response);
+                       //delete response;
+                       finish();
+                       //return;
                } else {
                        response = new HTTPResponse(HTTPMessage::NOT_FOUND,
                                        "<response desc=\"Invalid command for 'server' taget!\" />");
                } else {
                        response = new HTTPResponse(HTTPMessage::NOT_FOUND,
                                        "<response desc=\"Invalid command for 'server' taget!\" />");