#include "plaqui/server/runnable.h"
#include <socket++/sockinet.h>
-namespace Plaqui {
+namespace PlaQui {
+
+namespace Server {
/// Conexión.
class Connection: public Runnable {
- protected:
+ // Tipos.
+
+ public:
- /// Tamaño del buffer usado para enviar y recibir datos.
- static const int BUFFER_SIZE = 4096;
+ /// Puerto.
+ typedef unsigned Port;
+
+ // Atributos.
+
+ protected:
/// Socket a usar en la conexión.
iosockinet socket;
+ /// Host.
+ std::string host;
+
+ /// Puerto.
+ Port port;
+
+ /// Mutex para el socket.
+ //Glib::Mutex socket_mutex;
+
+ // Métodos.
+
public:
/**
* Destructor.
*/
- virtual ~Connection(void) {}
+ virtual ~Connection(void);
/**
* Constructor.
/**
* Constructor.
*
- * \param socket Socket a usar en la conexión.
+ * \param type Tipo de socket a usar.
*/
- //Connection(const sockinetbuf& sb);
+ Connection(const sockbuf::type& type);
/**
* Constructor.
*
- * \param type Tipo de socket a usar.
+ * \param host Host a donde conectarse.
+ * \param port Puerto a donde conectarse.
*/
- Connection(sockbuf::type type);
+ Connection(const std::string& host, const Port& port);
+
+ /**
+ * Finaliza la conexión.
+ *
+ * \param attach Si es true, la función no retorna hasta que no
+ * finalice la tearea (no recomendable).
+ *
+ * \note Para saber cuando la tarea fue finalizada puede utilizar
+ * la señal signal_finished().
+ */
+ virtual void finish(bool attach = false);
+
+ /**
+ * Obtiene el nombre del host local de la conexión.
+ */
+ const std::string& get_host(void) const;
+
+ /**
+ * Obtiene el puerto local de la conexión.
+ */
+ const Port& get_port(void) const;
};
}
+}
+
#endif // PLAQUI_CONNECTION_H