/// Planta Química.
class Plant: public Runnable {
+ /////////////////////////////////////////////////////////////////////
+ // Constantes.
+ private:
+
+ /// Tiempo por defecto a esperar entre iteraciones de la simulación.
+ static const unsigned DEFAULT_WAIT_TIME = 100000u;
+
+ /////////////////////////////////////////////////////////////////////
// Tipos.
private:
/// Lista de conexiones de control.
typedef std::list<Transmitter*> TransmitterList;
-
+ /////////////////////////////////////////////////////////////////////
// Atributos.
private:
/// Nombre del archivo donde esta el XML de la planta.
std::string filename;
+ /// Tiempo que espera entre cada iteración de la simulación.
+ unsigned wait_time;
+ /// Mutex para el tiempo de espera.
+ Glib::Mutex wait_time_mutex;
+
+ /// Indica si la planta está pausada o simulando.
+ bool paused;
+
+ /// Mutex para el indicador de pausa.
+ Glib::Mutex paused_mutex;
+
+ /////////////////////////////////////////////////////////////////////
// Métodos.
protected:
/**
* Corre la planta (la monitorea o la simula).
*/
- virtual void real_run(void);
+ virtual void real_run(void) throw();
public:
*/
bool set_open(const std::string& element, bool open = true);
+ /**
+ * Setea la frecuencia de refresco de la simulación.
+ * Si se setea a cero, se usa el tiempo por omisión.
+ *
+ * \param hz Cantidad de veces por segundo que debe refrescarse la
+ * simulación.
+ */
+ void set_frequency(unsigned hz = 0u);
+
+ /**
+ * Pausa (o reanuda) la simulación.
+ *
+ * \param paused true si se la quiere pausar, false para reanudar.
+ */
+ void set_paused(bool paused = true);
+
/**
* Obtiene el XML de la planta.
*/