X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/98871795be266e4ea8b4662737ac618ebee0fb79..eca5a3ad10166cf4c975879e40ad44491961ca3b:/Model/include/iconector.h?ds=sidebyside diff --git a/Model/include/iconector.h b/Model/include/iconector.h index bbb3c25..44e1e32 100644 --- a/Model/include/iconector.h +++ b/Model/include/iconector.h @@ -12,7 +12,7 @@ namespace PlaQui { class IConector { public: /// Constructor - IConector(); + IConector(unsigned in, unsigned out); /// Destructor virtual ~IConector(); @@ -22,12 +22,25 @@ public: * a la salida. * \param where Donde enviar el mensage, IConector::IN o IConector::OUT * \param msg Mensage a enviar - * \return Respuesta al mensage. Se interpreta dependiendo del mensage */ - int send_msg(int where, int msg); + void send_msg(int where, int msg); - /// Recive un mensage - virtual void recieve_msg(int msg, IConector *who); + /** Recibe un mensage + * + * Este procedimiento atiende los mensages enviados por otros objetos. + * El mensage \e msg es enviado por \e who, quien puede enviar opcionalmente + * un dato en \e data. El campo \e data debe ser interpretado en forma + * correcta dependiendo del mensage enviado. + * El objeto que recibe un mensage puede, de ser necesario, responder al + * objeto que lo envió llamando directamente al método recieve_msg del objeto + * \e who. No se recomienda enviar un mensage mediante send_msg ya que puede + * ocacionar que objetos que no esten esperando una respuesta se comporte de + * manera indeterminada. + * \param msg ID del mensage enviado. + * \param who Objeto que envía el mensage. + * \param data Dato opcional a enviar. + */ + virtual void recieve_msg(int msg, IConector *who, void *data); /** Conecta un objeto con otro * @@ -63,10 +76,20 @@ public: MSG_LAST }; protected: - std::list entradas; - std::list salidas; - unsigned int cant_entradas; - unsigned int cant_salidas; + /// Lista de objetos conectados a las entradas + std::list in_list; + /// Lista de objetos conectados a las salidas + std::list out_list; + /// Cantidad de entradas disponibles + unsigned int in_slots; + /// Canitidad de salidas disponibles + unsigned int out_slots; + +private: + // Oculto copia entre clases + IConector() {} + IConector(const IConector &) {} + IConector &operator = (const IConector &) { return (*this); } }; }