/**
* 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 {
namespace Server {
/**
- * Servidor de plantas químicas.
- * Maneja muchas conexiones, de control o de transmisión.
+ * Servidor genéríco TCP/IP.
+ *
+ * Maneja muchas conexiones, en threads. En términos generales todo lo que
+ * hace es algo parecido a esto:
+ * \code
+ * while (!stop) {
+ * Connection* conexion = new_connection(accept());
+ * connections.push_back(conexion);
+ * }
+ * \endcode
+ *
+ * new_connection() es un método virtual puro que hay que definir en las
+ * subclases para hacer un servidor específico que trabaje con un protocolo
+ * determinado. new_connection() devuelve un puntero a una
+ * \ref Connection "conexión".
+ *
+ * on_connection_finished() maneja la
+ * \ref Runnable::signal_finished "señal para indicar que una conexión terminó"
+ * para eliminarla de la \ref connections "lista de conexiones".
*/
class TCPServer: public Runnable {