*/
class TCPServer: public Runnable {
+ /////////////////////////////////////////////////////////////////////
// Constantes.
private:
/// Cantidad máxima de conexiones pendientes.
static const unsigned MAX_PENDING_CONNECTIONS = 10;
+ /////////////////////////////////////////////////////////////////////
// Tipos.
private:
/// Host.
std::string host;
/// Port.
- unsigned port;
+ Connection::Port port;
};
/// Lista de información de conexiones de control.
typedef std::vector<ConnectionInfo> ConnectionInfoList;
+ /////////////////////////////////////////////////////////////////////
// Atributos.
- private:
+ protected: //FIXME
/// Socket para escuchar conexiones.
sockinetbuf socket;
-
- /// Mutex para las conexiones.
- Glib::Mutex connections_mutex;
+ private: // FIXME
/// Conexiones de control.
ConnectionList connections;
+ /// Mutex para las conexiones.
+ Glib::Mutex connections_mutex;
+
+ /////////////////////////////////////////////////////////////////////
// Métodos.
private:
/**
* Entra en el loop para atender conexiones.
*/
- virtual void real_run(void);
+ virtual void real_run(void) throw();
protected:
*
* \param port Puerto en el cual escuchar.
*/
- TCPServer(int port);
+ TCPServer(const Connection::Port& port) throw(sockerr);
+
+ /**
+ * Finaliza la tarea.
+ *
+ * \note Para saber cuando la tarea fue finalizada puede utilizar
+ * la señal signal_finished().
+ */
+ virtual void finish(void);
/**
* Se encarga de borrar una conexión de la lista cuando finaliza.
*/
void on_connection_finished(Connection* connection);
+ /**
+ * Detiene una conexión.
+ */
+ bool disconnect(const std::string& host,
+ const Connection::Port& port);
+
/**
* Obtiene una lista conexiones de control abiertas.
*/