/**
* Servidor de plantas químicas.
- * Maneja múltiples conexiones, de control o de transmisión.
+ *
+ * Esta clase se encarga, entre otras cosas, de definir el método
+ * new_connection() de TCPServer para crear una nueva
+ * \ref ControlServer "conexión de control" para atender las conexiones que
+ * éste recibe.
+ *
+ * Una vez recibida una conexión, esta clase se encarga de manejar los
+ * comandos que a través de ella se reciben a través de los métodos como
+ * cmd_server_info(), cmd_connection_list(), etc.
+ *
+ * Esta clase es también la encargado de mantener la \ref plants "lista" de
+ * \ref Plant "plantas" que se están sirviendo (y simulando).
*/
class Server: public TCPServer {
/**
* Constructor.
*
- * \param plant_filename Nombre del archivo con la planta a cargar.
- * \param port Puerto en el cual escuchar.
+ * \param port Puerto en el cual escuchar.
*/
- Server(const std::string& plant_filename,
- const Connection::Port& port = 7522) throw(sockerr);
+ Server(const Connection::Port& port = 7522) throw(sockerr);
+
+ /**
+ * Agrega una planta al servidor.
+ *
+ * \param name Nombre que utilizará el servidor para identificar
+ * a la planta.
+ * \param filename Nombre del archivo con la planta a cargar.
+ * \return true si se agregó la planta, false si ya existía una
+ * planta con ese nombre.
+ */
+ bool add_plant(const std::string& name,
+ const std::string& filename);
/**
* Maneja los comandos recibidos por las conexiones.