]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Model/src/iconector.cpp
El Transmitter ya anda bien (se puede escuchar con un nc -p [puerto] -l -u :).
[z.facultad/75.42/plaqui.git] / Model / src / iconector.cpp
index c1beafacf36e0280a0f8dd3a122cb99b6a3b009a..7cbdd5670720b38622cd605abf8ec9abf1e95543 100644 (file)
@@ -2,48 +2,46 @@
 
 #include "iconector.h"
 
-using namespace PlaQui;
+using namespace PlaQui::Model;
 
-IConector::IConector()
+IConector::IConector(unsigned in, unsigned out)
 {
-       cant_entradas = cant_salidas = 0;
+       in_slots = in;
+       out_slots = out;
 }
 
 IConector::~IConector()
 {
        // Limpio las listas. Los objetos no se destruyen!!
-       entradas.clear();
-       salidas.clear();
+       in_list.clear();
+       out_list.clear();
 }
 
-int IConector::send_msg(int where, int msg)
+void IConector::send_msg(int where, int msg, void *data)
 {
        // Recorro toda la lista y envío el mensage a cada
        // elemento conectado en "where"
        std::list<IConector *>::iterator it;
        switch (where) {
                case IN:
-                       for(it=entradas.begin(); it!=entradas.end(); it++)
-                               (*it)->recieve_msg(msg, this);
+                       for(it=in_list.begin(); it!=in_list.end(); it++)
+                               (*it)->recieve_msg(msg, this, data);
                        break;
                case OUT:
-                       for(it=salidas.begin(); it!=salidas.end(); it++)
-                               (*it)->recieve_msg(msg, this);
+                       for(it=out_list.begin(); it!=out_list.end(); it++)
+                               (*it)->recieve_msg(msg, this, data);
        }
-
-       // TODO : ver el tema de los valores de retorno!!
-       return 0;
 }
 
-void IConector::recieve_msg(int msg, IConector *who)
+void IConector::recieve_msg(int msg, IConector *who, void *data)
 {
        // Manejo los mensages que yo conozco
        switch (msg) {
                case MSG_DISCONECT:
                        // Elimino el objeto de las listas, si es que
                        // existe en alguna de las dos.
-                       entradas.remove(who);
-                       salidas.remove(who);
+                       in_list.remove(who);
+                       out_list.remove(who);
        }
 }
 
@@ -51,14 +49,15 @@ bool IConector::connect(IConector *obj, int place)
 {
        switch (place) {
                case IN:
-                       if (entradas.size() <= cant_entradas) {
-                               entradas.push_back(obj);
+                       if (in_list.size() <= in_slots) {
+                               in_list.push_back(obj);
                        } else {
                                return false; // no se pudo conectar!
                        }
+               break;
                case OUT:
-                       if (salidas.size() <= cant_salidas) {
-                               salidas.push_back(obj);
+                       if (out_list.size() <= out_slots) {
+                               out_list.push_back(obj);
                        } else {
                                return false; // no se pudo conectar!
                        }