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:
// 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);
}
}
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;