class IConector {
public:
/// Constructor
- IConector();
+ IConector(unsigned in, unsigned out);
/// Destructor
virtual ~IConector();
* 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
*
MSG_LAST
};
protected:
- std::list<IConector *> entradas;
- std::list<IConector *> salidas;
- unsigned int cant_entradas;
- unsigned int cant_salidas;
+ /// Lista de objetos conectados a las entradas
+ std::list<IConector *> in_list;
+ /// Lista de objetos conectados a las salidas
+ std::list<IConector *> 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); }
};
}