]> git.llucax.com Git - z.facultad/75.42/plaqui.git/commitdiff
Se mueve el mutex a la clase que tiene el recurso a proteger.
authorLeandro Lucarella <llucax@gmail.com>
Fri, 24 Oct 2003 02:31:46 +0000 (02:31 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Fri, 24 Oct 2003 02:31:46 +0000 (02:31 +0000)
Server/include/plaqui/server/runnable.h
Server/include/plaqui/server/tcpserver.h
Server/src/tcpserver.cpp

index cc3bb0ec16df90260b871e4608ec8966b0b6d55d..7896090370af01d016ff3da2bd31b84326a80db3 100644 (file)
@@ -64,12 +64,6 @@ namespace Server {
                         */
                        bool stop;
 
-                       /**
-                        * Exclusión mutua.
-                        * Recurso usado para recibir la exclusividad sobre un recurso.
-                        */
-                       Glib::Mutex mutex;
-
                // Métodos.
 
                private:
index 02906290f6cfd601fb95e4d8f03b3e1c50d3057e..393f4cc4040f4e82ebb80bac2e6aa6e842e10432 100644 (file)
@@ -60,6 +60,9 @@ namespace Server {
                        /// Socket para escuchar conexiones.
                        sockinetbuf socket;
 
+                       /// Mutex para las conexiones.
+                       Glib::Mutex connections_mutex;
+
                        /// Conexiones de control.
                        ConnectionList connections;
 
index a9ce0303b6642aa0465cf443e498a88d74673d9c..d2bb7fd58eed54a78be5b1a5ded52a25fbbf08d8 100644 (file)
@@ -62,7 +62,9 @@ void PlaQui::Server::TCPServer::on_connection_finished(
        std::cerr << __FILE__ <<  ": on_connection_finished(connection = "
                << connection << ")" << std::endl;
 #endif // DEBUG
-       mutex.lock();
+       connections_mutex.lock();
+       // FIXME pruebo el mutex.
+       sleep(5);
        connections.remove(connection);
 #ifdef DEBUG
        std::cerr << __FILE__ <<  ": lista de conexiones" << std::endl;
@@ -71,7 +73,7 @@ void PlaQui::Server::TCPServer::on_connection_finished(
                std::cerr << "\t " << *i << std::endl;
        }
 #endif // DEBUG
-       mutex.unlock();
+       connections_mutex.unlock();
 }
 
 /// \todo TODO: ver tema de timeout o como salir de un accept().
@@ -87,7 +89,9 @@ void PlaQui::Server::TCPServer::real_run(void) {
                std::cerr << __FILE__ <<  ": real_run(): connection = " << connection
                        << std::endl;
 #endif // DEBUG
-               mutex.lock();
+               connections_mutex.lock();
+               // FIXME pruebo el mutex.
+               sleep(5);
                connections.push_back(connection);
 #ifdef DEBUG
                std::cerr << __FILE__ <<  ": real_run(): lista de conexiones" << std::endl;
@@ -96,7 +100,7 @@ void PlaQui::Server::TCPServer::real_run(void) {
                        std::cerr << "\t " << *i << std::endl;
                }
 #endif // DEBUG
-               mutex.unlock();
+               connections_mutex.unlock();
                // Conecto la señal para cuando termina una conexión, borrarla.
                connection->signal_finished().connect(
                                SigC::bind<Connection*>(