- El server ahora acepta dos parametros (opcionales): planta y puerto.
planta: Nombre del archivo XML de la planta (por defecto prueba.xml).
puerto: Puerto donde escuchar (por defecto 7522)
*
* \param port Puerto en el cual escuchar.
*/
- Server(int port = 7522);
+ Server(const std::string& plant_filename,
+ const Connection::Port& port = 7522);
/**
* Maneja los comandos recibidos por las conexiones.
cerr << __FILE__ << ": constructor. filename = " << filename << endl;
#endif // DEBUG
// TODO plant
- simulator.add_pump("bomba1");
+/* simulator.add_pump("bomba1");
simulator.add_conduct("c");
simulator.add_conduct("c1");
simulator.add_drainage("d");
simulator.connect("c", "tanque", Model::IConector::OUT);
simulator.connect("tanque", "c1", Model::IConector::OUT);
simulator.connect("c1", "d", Model::IConector::OUT);
-
+*/
}
void Plant::real_run(void) {
}
}
-Server::Server(int port): TCPServer(port) {
+Server::Server(const string& plant_filename, const Connection::Port& port):
+ TCPServer(port) {
#ifdef DEBUG
cerr << __FILE__ << ": port = " << port << endl;
#endif // DEBUG
// FIXME
Glib::Mutex::Lock lock(plants_mutex);
- plants["prueba"] = new Plant("prueba.xml");
- plants["prueba"]->signal_finished().connect(
+ plants["default"] = new Plant(plant_filename);
+ plants["default"]->signal_finished().connect(
SigC::bind<const char*>(
SigC::slot_class(*this, &Server::on_plant_finished),
- "prueba"));
- plants["prueba"]->run();
+ "default"));
+ plants["default"]->run();
}
Connection* Server::new_connection(
--- /dev/null
+<?xml version="1.0" encoding="iso-8859-1" ?>
+<planta>
+ <tubo nombre="tubo0" id="1">
+ <caudal>3,50</caudal>
+ <conector>
+ <entrada>codo3</entrada>
+ <salida>union2</salida>
+ </conector>
+ <orientacion>0</orientacion>
+ <x>96</x>
+ <y>64</y>
+ </tubo>
+ <empalme nombre="union2" id="2">
+ <tipo>union</tipo>
+ <conector>
+ <entrada>codo10</entrada>
+ <entrada>exclusa11</entrada>
+ <salida>union2</salida>
+ </conector>
+ <caudal>10,00</caudal>
+ <orientacion>3</orientacion>
+ <x>96</x>
+ <y>160</y>
+ </empalme>
+ <bomba nombre="bomba2" id="3">
+ <entrega>0,90</entrega>
+ <color>
+ <rojo>57852</rojo>
+ <verde>17196</verde>
+ <azul>17196</azul>
+ </color>
+ <conector>
+ <salida>codo3</salida>
+ </conector>
+ <orientacion>1</orientacion>
+ <x>160</x>
+ <y>0</y>
+ </bomba>
+ <codo nombre="codo3" id="4">
+ <caudal>17,90</caudal>
+ <conector>
+ <salida>tubo0</salida>
+ <entrada>bomba2</entrada>
+ </conector>
+ <orientacion>3</orientacion>
+ <x>96</x>
+ <y>0</y>
+ </codo>
+ <bomba nombre="bomba4" id="5">
+ <entrega>26,00</entrega>
+ <color>
+ <rojo>0</rojo>
+ <verde>0</verde>
+ <azul>0</azul>
+ </color>
+ <conector>
+ <salida>codo6</salida>
+ </conector>
+ <orientacion>1</orientacion>
+ <x>160</x>
+ <y>352</y>
+ </bomba>
+ <codo nombre="codo6" id="7">
+ <caudal>2,10</caudal>
+ <conector>
+ <entrada>bomba4</entrada>
+ <salida>exclusa11</salida>
+ </conector>
+ <orientacion>2</orientacion>
+ <x>96</x>
+ <y>320</y>
+ </codo>
+ <drenaje nombre="drenaje7" id="8">
+ <conector>
+ <entrada>drenaje7</entrada>
+ </conector>
+ <orientacion>0</orientacion>
+ <x>352</x>
+ <y>288</y>
+ </drenaje>
+ <tanque nombre="tanque8" id="9">
+ <capacidad>40,00</capacidad>
+ <inicial>6,00</inicial>
+ <color>
+ <rojo>52477</rojo>
+ <verde>53774</verde>
+ <azul>16764</azul>
+ </color>
+ <conector>
+ <entrada>tanque8</entrada>
+ <salida>tanque8</salida>
+ </conector>
+ <orientacion>0</orientacion>
+ <x>192</x>
+ <y>256</y>
+ </tanque>
+ <tubo nombre="tubo9" id="10">
+ <caudal>0,00</caudal>
+ <conector>
+ <salida>tubo9</salida>
+ <salida>tubo9</salida>
+ </conector>
+ <orientacion>1</orientacion>
+ <x>256</x>
+ <y>288</y>
+ </tubo>
+ <codo nombre="codo10" id="11">
+ <caudal>0,00</caudal>
+ <conector>
+ <salida>codo10</salida>
+ <salida>codo10</salida>
+ </conector>
+ <orientacion>0</orientacion>
+ <x>160</x>
+ <y>192</y>
+ </codo>
+ <exclusa nombre="exclusa11" id="12">
+ <conector>
+ <salida>exclusa11</salida>
+ <salida>exclusa11</salida>
+ </conector>
+ <orientacion>1</orientacion>
+ <estado>1</estado>
+ <x>96</x>
+ <y>256</y>
+ </exclusa>
+</planta>
// $Id$
//
+#include "plaqui/server/connection.h"
#include "plaqui/server/server.h"
#include <socket++/sockinet.h>
#include <iostream>
// Termina con mas informacion si hay una excepcion no manejada.
set_terminate (__gnu_cxx::__verbose_terminate_handler);
- // Necesita argumentos.
- if (argc != 2) {
- cerr << "Faltan argumentos: " << endl;
- cerr << "\t" << argv[0] << " port" << endl;
- return 1;
- }
+ // Bienvenida.
+ cout << "PlaQui Server. Modo de uso: " << endl;
+ cout << "\t" << argv[0] << " [planta] [puerto]" << endl;
- // Obtengo puerto.
- unsigned port;
- {
- stringstream str(argv[1]);
- str >> port;
+ // Acepta argumentos.
+ string filename = "prueba.xml";
+ Connection::Port port = 7522;
+ if (argc > 1) {
+ // Obtengo nombre del archivo de la planta.
+ filename = argv[1];
+ // Si tiene 2 parámetros.
+ if (argc > 2) {
+ // Obtengo puerto.
+ stringstream ss(argv[1]);
+ ss >> port;
+ }
}
// Inicializa threads.
try {
// Corre el server.
- Server server(port);
+ Server server(filename, port);
server.run(false);
} catch (const sockerr& e) {
cerr << "Socket Error: " << e.operation() << " | serrno = "