]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Model/src/iconector.cpp
- Se agrega codigo para desconectar un objeto
[z.facultad/75.42/plaqui.git] / Model / src / iconector.cpp
index 778da631f30ff81278423fa95ee28e182d18a5fb..c1beafacf36e0280a0f8dd3a122cb99b6a3b009a 100644 (file)
@@ -19,7 +19,7 @@ IConector::~IConector()
 int IConector::send_msg(int where, int msg)
 {
        // Recorro toda la lista y envío el mensage a cada
-       // elemento conectado
+       // elemento conectado en "where"
        std::list<IConector *>::iterator it;
        switch (where) {
                case IN:
@@ -40,8 +40,10 @@ void IConector::recieve_msg(int msg, IConector *who)
        // Manejo los mensages que yo conozco
        switch (msg) {
                case MSG_DISCONECT:
-                       // FIXME: sacar el elemento who de la lista!
-                       return;
+                       // Elimino el objeto de las listas, si es que
+                       // existe en alguna de las dos.
+                       entradas.remove(who);
+                       salidas.remove(who);
        }
 }
 
@@ -51,18 +53,16 @@ bool IConector::connect(IConector *obj, int place)
                case IN:
                        if (entradas.size() <= cant_entradas) {
                                entradas.push_back(obj);
-                               cant_entradas++;
                        } else {
                                return false; // no se pudo conectar!
                        }
                case OUT:
                        if (salidas.size() <= cant_salidas) {
                                salidas.push_back(obj);
-                               cant_salidas++;
                        } else {
                                return false; // no se pudo conectar!
                        }
-}
+       }
 
        // se pudo conectar sin problemas
        return true;