]> git.llucax.com Git - z.facultad/75.42/plaqui.git/commitdiff
Se agrega XML para otros items (no todos ya implementados en el cliente).
authorRicardo Markiewicz <gazer.arg@gmail.com>
Thu, 20 Nov 2003 02:00:12 +0000 (02:00 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Thu, 20 Nov 2003 02:00:12 +0000 (02:00 +0000)
Empiecen a debbuggear :-) ... tambien habria que poner algun valor distinto de 0
en el modelo de ejemplo, es muy aburrido como esta :-)

Client/src/principal.cpp
Model/include/conduct.h
Model/include/exclusa.h
Model/include/plantitem.h
Model/include/pump.h
Model/include/tank.h
Model/src/conduct.cpp
Model/src/exclusa.cpp
Model/src/plantitem.cpp
Model/src/pump.cpp
Model/src/tank.cpp

index 297354396344d69604cc100720afbc99c9d23b47..76680bd23b31ab3ea103fc61189ff17633fd4b10 100644 (file)
@@ -487,14 +487,16 @@ void Principal::read_status_xml(const std::string &frame)
                std::cout << "LEGO EL XML!" << std::endl;
                items = nodo->children;
                while (items != NULL) {
-                       tmp = -1;
                        if (items->type == XML_ELEMENT_NODE) {
-                               if (xmlStrcmp(items->name, BAD_CAST"conduct")==0) {
+                               tmp = -1;
+                               item_name = "";
+                               if (xmlStrcmp(items->name, BAD_CAST"float")==0) {
                                        tmp = get_float_from_xml(items->children);
                                        item_name = (char *)xmlGetProp(items, BAD_CAST"name");
-                                       std::cout << "CONDUCT :: " << item_name << " -> " << tmp << std::endl;
-                                       mapItems[item_name]->set_actual_flow(tmp);
                                }
+
+                               if (item_name != "")
+                                       mapItems[item_name]->set_actual_flow(tmp);
                        }
                        items = items->next;
                }
index edf23fd83eca368e67d5ebd6a9770eedc645ee27..306c92ae0de83afdf19d2aeabdf93c5b483147b2 100644 (file)
@@ -27,8 +27,6 @@ public:
        virtual void recieve_msg(int msg, IConector *who, void *data);
        virtual void update(int dir=OUT);
        virtual void simulate();
-
-       virtual void get_state_as_xml(std::stringstream &out);
 protected:
 private:
        Conduct():Transport("null") {}
index d0c1f2250e5a0b7f27ab22b904d3a541821530fc..818ccb42be981b05a055f0b0f61b33d459f6aad0 100644 (file)
@@ -24,6 +24,7 @@ public:
 
        void open() { is_open = true; }
        void close() { is_open = false; }
+       void get_state_as_xml(std::stringstream &out);
 protected:
        bool is_open;
        float temp;
index 5c3e76272a391dada76347618e06d3d546287ea4..2cfb5b67fa235c43ea8999986ba9a7aace15f385 100644 (file)
@@ -6,6 +6,7 @@
 #include <string>
 #include "iconector.h"
 #include "rgb.h"
+#include <sstream>
 
 namespace PlaQui {
 
@@ -70,7 +71,7 @@ public:
        
        /// Retorna el flujo actual que maneja el objeto.
        float get_actual_flow() { return actual_flow; }
-       virtual void get_state_as_xml(std::stringstream &out) { } 
+       virtual void get_state_as_xml(std::stringstream &out); 
 protected:
        RGB fluid_color;
        // es de solo lectura
index b51edbfd0cfee174ba9035cd5177cce44749e7ae..b8b12f0ab3f3a1188ef97c6160efd852f4347bdf 100644 (file)
@@ -42,6 +42,7 @@ public:
        void activate() { active = true; }
        /// Desactiva la bomba
        void deactivate() { active = false; }
+       void get_state_as_xml(std::stringstream &out);
 protected:
        /** Define si la bomba esta abierta o no. Esto lo maneja la logica de
         * control
index 049540482c4e12ec4c02b515525bbf3d09f9897e..652955bcc1ff7bfdbb786a962ca19c2d65f6bcdd 100644 (file)
@@ -32,6 +32,7 @@ public:
        virtual void simulate();
 
        void set_litros(float l) { litros = l; }
+       void get_state_as_xml(std::stringstream &out);
 protected:
        float litros;   ///< cantidad de líquido actual
        float actual_in_flow; ///< flujo máximo a la entrada
index 02fe3a66d2899874266c3c1d6f2f5d4bc37b15f2..b196eec9d14854022bf22ea32e1bfd5c41591fd0 100644 (file)
@@ -75,10 +75,4 @@ void Conduct::simulate()
        updated = false;
 }
 
-void Conduct::get_state_as_xml(std::stringstream &out)
-{
-       out << "\t<conduct name=\"" << name << "\">" << std::endl;
-       out << "\t\t<actual_flow>" << actual_flow << "</actual_flow>" << std::endl;
-       out << "\t</conduct>" << std::endl;
-}
 
index 34b2fab6164207dc6255ceb03cdbccd1712a7da8..8e64bc3be8130297ae1d4f749f7ac3521fd40bdb 100644 (file)
@@ -50,3 +50,14 @@ void Exclusa::recieve_msg(int msg, IConector *who, void *data)
        }
 }
        
+void Exclusa::get_state_as_xml(std::stringstream &out)
+{
+       // Datos comunes
+       // hack to avoid output problems :-)
+       actual_flow = temp;
+       PlantItem::get_state_as_xml(out);
+       out << "\t<exclusa name=\"" << name << "\">" << std::endl;
+       out << "\t\t<active>" << ((is_open)?"true":"false") << "</active>" << std::endl;
+       out << "\t</exclusa>" << std::endl;
+}
+
index 1ce56f8734174220a302a07c29d439f4b43b5156..efca4c18ef1ca0835399761e2a6c2ebf9dd1ddc4 100644 (file)
@@ -31,3 +31,9 @@ void PlantItem::recieve_msg(int msg, IConector *who, void *data)
        }
 }
 
+void PlantItem::get_state_as_xml(std::stringstream &out)
+{
+       out << "\t<float name=\"" << name << "\">" << std::endl;
+       out << "\t\t<actual_flow>" << actual_flow << "</actual_flow>" << std::endl;
+       out << "\t</float>" << std::endl;
+}
index 7f1ace4a325ffba404d61f15492e57fbd8dd16f5..9c2a9b45b71a482e3db719324e8784d29d5ce92e 100644 (file)
@@ -74,3 +74,14 @@ void Pump::recieve_msg(int msg, IConector *who, void *data)
 
 }
 
+void Pump::get_state_as_xml(std::stringstream &out)
+{
+       // Saco el item basico por XML
+       PlantItem::get_state_as_xml(out);
+
+       // Saco lo importante de este item
+       out << "\t<pump name=\"" << name << "\">" << std::endl;
+       out << "\t\t<active>" << ((open&&active)?"true":"false") << "</active>" << std::endl;
+       out << "\t</pump>" << std::endl;
+}
+
index f21a2e8f1e08370ab4a265d7fce089a1be49240a..e951254a92de82d3ceeb553a899ab3b74d48b914 100644 (file)
@@ -66,3 +66,11 @@ void Tank::recieve_msg(int msg, IConector *who, void *data)
        }
 }
 
+void Tank::get_state_as_xml(std::stringstream &out)
+{
+       // El tanque no emite flujo actual!
+       out << "\t<tank name=\"" << name << "\">" << std::endl;
+       out << "\t\t<capacity>" << capacity << "</capacity>" << std::endl;
+       out << "\t\t<litros>" << litros << "</litros>" << std::endl;
+       out << "\t</tank>" << std::endl;
+}