4 using namespace PlaQui::Model;
6 Conduct::Conduct(const std::string &_name):Transport(_name)
8 max_flow = actual_flow = 0.0f;
10 // Inicio los parametros de conectores
20 void Conduct::recieve_msg(int msg, IConector *who, void *data)
23 case MSG_QUERY_MAX_FLOW_OUT: {
24 // Me preguntan por el flujo máximo.
25 // Primero me actualizo, y luego respondo
26 float tmp = *((float *)data);
28 actual_flow = (actual_flow>max_flow)?max_flow:actual_flow;
29 actual_flow = (actual_flow<tmp)?actual_flow:tmp;
31 send_msg(OUT, MSG_QUERY_MAX_FLOW_OUT, &actual_flow);
32 // FIXME : no tiene que ir
33 if (out_list.size() == 0) tmp = max_flow;
34 who->recieve_msg(MSG_RESPONSE_MAX_FLOW, this, &actual_flow);
38 case MSG_RESPONSE_MAX_FLOW: {
39 float max = *((float *)data);
40 // Actualizo mi flujo en base a la respuesta
41 if (max < actual_flow) {
47 Transport::recieve_msg(msg, who, data);
51 void Conduct::update(int dir)
53 // Si ya me actualice, no lo tengo que hacer de nuevo
55 // Seteo mi actualizar en true para evitar entrar de nuevo
60 send_msg(IN, MSG_QUERY_MAX_FLOW_IN, (void *)&max_flow);
63 send_msg(OUT, MSG_QUERY_MAX_FLOW_OUT, (void *)&max_flow);
67 void Conduct::simulate()
70 std::cout << name << "::sin actualizar!" << std::endl;
74 std::cout << name << "::Flujo actual = " << actual_flow << std::endl;
78 void Conduct::get_state_as_xml(std::stringstream &out)
80 out << "\t<conduct name=\"" << name << "\">" << std::endl;
81 out << "\t\t<actual_flow>" << actual_flow << "</actual_flow>" << std::endl;
82 out << "\t</conduct>" << std::endl;