]> git.llucax.com Git - z.facultad/75.42/plaqui.git/commitdiff
Se pone un poco mas de orden. Desaparece la ControlClient::signal_connected().
authorLeandro Lucarella <llucax@gmail.com>
Mon, 24 Nov 2003 05:01:06 +0000 (05:01 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Mon, 24 Nov 2003 05:01:06 +0000 (05:01 +0000)
Server/TODO
Server/include/plaqui/server/connection.h
Server/include/plaqui/server/controlclient.h
Server/src/connection.cpp
Server/src/controlclient.cpp

index 53a61bb06e507b45a593f263e9b3aa10bd1c3012..956d62c1e526024ca1b1a3d3831759771b3028d0 100644 (file)
@@ -2,7 +2,6 @@ $Id$
 - Agregar timeouts (recvtimeout() y sendtimeout()).
 - Darle bola al header Connection para saber si cerramos la conexión al
   finalizar el request o no.
-- Hacer un try/catch en cada llamada al socket por si se desconecto, para que no
-  muera con un segmentation fault.
-- Terminal Response para que lleguen bien todos los comandos al cliente.
-- Ver si sirve Runnable::signal_error y usar si sirve.
+- Redondear e implementar el tema de errores.
+- Terminar Response para que lleguen bien todas las respuestas al cliente con
+  formato XML y codigo de error.
index 7eda17226a1e882a09e967f9e5b7f80081fb4ed5..c700fcb7d6bbecb033cf1c1ccac9e36532dc16bd 100644 (file)
@@ -108,17 +108,13 @@ namespace Server {
 
                        /**
                         * Obtiene el nombre del host local de la conexión.
-                        * \todo TODO - Debería devolver una copia? Porque podría morir la
-                        *       conexion y nosotros seguir usando la variable destruida.
                         */
-                       const std::string& get_host(void) const;
+                       const std::string get_host(void) const;
 
                        /**
                         * Obtiene el puerto local de la conexión.
-                        * \todo TODO - Debería devolver una copia? Porque podría morir la
-                        *       conexion y nosotros seguir usando la variable destruida.
                         */
-                       const Port& get_port(void) const;
+                       const Port get_port(void) const;
 
        };
 
index 54b10beb6b0bf186e0e59ad0d37deaed400e7ac5..7373fbcfe83dc4edb598656e5e976ea8685af898 100644 (file)
@@ -43,6 +43,12 @@ namespace Server {
                /////////////////////////////////////////////////////////////////////
                // Tipos.
 
+               public:
+
+               /////////////////////////////////////////////////////////////////////
+               /// \name Señales.
+               //@{
+
                public:
 
                        /// Tipo de señal para indicar que se conectó.
@@ -54,14 +60,32 @@ namespace Server {
                        /// Tipo de señal para indicar que se recibió un error.
                        typedef SigC::Signal1<void, unsigned> SignalErrorReceived;
 
+                       /// Tipo de señal para indicar que se recibió un frame. FIXME
+                       typedef Receiver::SignalFrameReceived SignalFrameReceived;
+
+                       /**
+                        * Obtiene la señal para indicar que se recibió una respuesta OK.
+                        */
+                       SignalOKReceived& signal_ok_received(void);
+
+                       /**
+                        * Obtiene la señal para indicar que se recibió un error.
+                        */
+                       SignalErrorReceived& signal_error_received(void);
+
+                       /**
+                        * Obtiene la señal que avisa cuando se recibió un cuadro.
+                        * \todo TODO Temporal.
+                        */
+                       SignalFrameReceived& signal_frame_received(void);
+
+               //@}
+
                /////////////////////////////////////////////////////////////////////
                // Atributos.
 
                protected:
 
-                       /// Señal para indicar que se conectó.
-                       SignalConnected connected;
-
                        /// Señal para indicar que se recibió una respuesta OK.
                        SignalOKReceived ok_received;
 
@@ -105,26 +129,6 @@ namespace Server {
                         */
                        void send(const Command& command);
 
-                       /**
-                        * Obtiene la señal para indicar que se conectó.
-                        */
-                       SignalConnected& signal_connected(void);
-
-                       /**
-                        * Obtiene la señal para indicar que se recibió una respuesta OK.
-                        */
-                       SignalOKReceived& signal_ok_received(void);
-
-                       /**
-                        * Obtiene la señal para indicar que se recibió un error.
-                        */
-                       SignalErrorReceived& signal_error_received(void);
-
-                       /**
-                        * Obtiene la señal que avisa cuando se recibió un cuadro.
-                        */
-                       Receiver::SignalFrameReceived& signal_frame_received(void);
-
        };
 
 }
index c355c86d0cf7e195627e69e5afd1c5a7870197e6..31aaf1a4b0c3b5214e2485128732077f513c349b 100644 (file)
@@ -79,23 +79,20 @@ void Connection::finish(void) {
        cerr << __FILE__ << "(" << __LINE__ << ")"
                << ": finish();" << endl;
 #endif // DEBUG
-       //socket_mutex.lock();
+       Runnable::finish();
        try {
+               // Para que el socket retorne el control, cierro sus canales de E/S.
                socket->shutdown(sockbuf::shut_readwrite);
-               // FIXME socket->close(sockbuf::shut_readwrite);
-               // close(socket->sd());
        } catch (const sockerr& e) {
                signal_error().emit(e.serrno(), e.errstr());
        }
-       //socket_mutex.unlock();
-       Runnable::finish();
 }
 
-const string& Connection::get_host(void) const {
+const string Connection::get_host(void) const {
        return host;
 }
 
-const Connection::Port& Connection::get_port(void) const {
+const Connection::Port Connection::get_port(void) const {
        return port;
 }
 
index b8dec7402fb2a047a76c27084308b6a5a12fa7b5..130282d5a0824cd405279eba6a7ca0d7f9803611 100644 (file)
@@ -51,17 +51,12 @@ ControlClient::~ControlClient(void) {
 ControlClient::ControlClient(const string& _host,
                const Connection::Port& _port) throw(sockerr):
                Connection(sockbuf::sock_stream, _host, _port) {
-#ifdef DEBUG
-       cerr << __FILE__ << "(" << __LINE__ << ")"
-               << ": host = " << host
-               << " | port = " << port << endl;
-#endif // DEBUG
        socket->connect(host.c_str(), port);
        host = socket->localhost();
        port = socket->localport();
 #ifdef DEBUG
        cerr << __FILE__ << "(" << __LINE__ << ")"
-               << ": REAL | host = " << host
+               << ": host = " << host
                << " | port = " << port << endl;
 #endif // DEBUG
        receiver = new Receiver(7528, host);
@@ -74,14 +69,6 @@ void ControlClient::real_run(void) throw() {
        cerr << ": REAL | host = " << host
                << " | port = " << port << endl;
 #endif // DEBUG
-       try {
-       } catch (const sockerr& e) {
-               // TODO Poner una señal de error específica?
-               signal_error().emit(e.serrno(), e.errstr());
-               return;
-       }
-       // TODO sacar signal_connected?
-       connected();
        // TODO Temporal: el receiver empieza a escuchar.
        receiver->run();
        while (!stop()) {
@@ -131,10 +118,6 @@ void ControlClient::send(const Command& command) {
 #endif // DEBUG
 }
 
-ControlClient::SignalConnected& ControlClient::signal_connected(void) {
-       return connected;
-}
-
 ControlClient::SignalOKReceived& ControlClient::signal_ok_received(void) {
        return ok_received;
 }