X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/48227aedaabfe971362c80f5f9eb4be29e2a64ed..fb8d2fb83534b0ca76f81e6d107e38d002642a46:/Model/src/iconector.cpp?ds=sidebyside diff --git a/Model/src/iconector.cpp b/Model/src/iconector.cpp index c1beafa..68d4024 100644 --- a/Model/src/iconector.cpp +++ b/Model/src/iconector.cpp @@ -1,49 +1,48 @@ #include "iconector.h" +#include +using namespace PlaQui::Model; -using namespace PlaQui; - -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::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 +50,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! }