#ifndef PLAQUI_TCPSERVER_H
#define PLAQUI_TCPSERVER_H
-#include "plaqui/server/controlserver.h"
-#include "plaqui/server/transmitter.h"
+#include "plaqui/server/runnable.h"
+#include "plaqui/server/connection.h"
#include <socket++/sockinet.h>
-#include <string>
#include <list>
+#include <vector>
namespace PlaQui {
*/
class TCPServer: public Runnable {
+ // Constantes.
+
+ private:
+
+ /// Cantidad máxima de conexiones pendientes.
+ static const unsigned MAX_PENDING_CONNECTIONS = 10;
+
// Tipos.
private:
/// Lista de conexiones de control.
- typedef std::list<Connnection*> ConnectionList;
+ typedef std::list<Connection*> ConnectionList;
+
+ public:
+
+ /// Información sobre una conexión de contro.
+ struct ConnectionInfo {
+ /// Host.
+ std::string host;
+ /// Port.
+ unsigned port;
+ };
+
+ /// Lista de información de conexiones de control.
+ typedef std::vector<ConnectionInfo> ConnectionInfoList;
// Atributos.
/// Socket para escuchar conexiones.
sockinetbuf socket;
+ /// Mutex para las conexiones.
+ Glib::Mutex connections_mutex;
+
/// Conexiones de control.
ConnectionList connections;
/**
* Destructor.
*/
- virtual ~TCPServer(void) {}
+ virtual ~TCPServer(void);
/**
* Constructor.
*/
void on_connection_finished(Connection* connection);
+ /**
+ * Obtiene una lista conexiones de control abiertas.
+ */
+ ConnectionInfoList get_connected(void);
+
};
}