Página principal | Lista alfabética | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros | Páginas relacionadas

Referencia de la Clase Servidor

Clase que maneja todas las conexiones de red del MUD. Más...

#include <Servidor.hpp>

Lista de todos los miembros.

Métodos públicos

 Servidor ()
 Constructor.
 ~Servidor ()
 Destructor.
void CierraConexion (const int descriptor)
 Cierra la conexión de descriptor dado.
void Escribe (const int descriptor, const QString &texto)
 Envía un mensaje de texto a la conexión de descriptor dado.
void incomingConnection (int descriptor)
 Crea una nueva Conexion a la llegada de una nueva conexión.

Slots privados

void EliminarConexion (Conexion *con)
 Elimina la conexión que se pasa como parámetro.

Atributos privados

QHash< int, Conexion * > conexiones
 Contenedor de conexiones entrantes.


Descripción detallada

Clase que maneja todas las conexiones de red del MUD.

Definición en la línea 64 del archivo Servidor.hpp.


Documentación del constructor y destructor

Servidor::Servidor  ) 
 

Constructor.

Definición en la línea 92 del archivo Servidor.cpp.

Hace referencia a Log(), NUM_MAX_CONXS_PENDS, y NUM_PUERTO.

00093 {
00094   setMaxPendingConnections (NUM_MAX_CONXS_PENDS);
00095 
00096   if (!listen (QHostAddress::Any, NUM_PUERTO))
00097     qFatal ("El servidor no se ha podido asociar al puerto %d.", NUM_PUERTO);
00098 
00099   QString puerto;
00100   puerto.setNum (NUM_PUERTO);
00101   Log (8, "Servidor a la espera de nuevas conexiones en el puerto " + puerto +
00102        ".\n");
00103 }

Servidor::~Servidor  ) 
 

Destructor.

Definición en la línea 106 del archivo Servidor.cpp.

Hace referencia a conexiones.

00107 {
00108   qDebug ("Destructor de Servidor");
00109 
00110   // Eliminamos todas las conexiones
00111   foreach (Conexion *con, conexiones)
00112     delete (con);
00113 }


Documentación de las funciones miembro

void Servidor::CierraConexion const int  descriptor  ) 
 

Cierra la conexión de descriptor dado.

Definición en la línea 116 del archivo Servidor.cpp.

Hace referencia a conexiones, y EliminarConexion().

Referenciado por Mensajero::NuevaLinea().

00117 {
00118   if (!conexiones.contains (descriptor))
00119     qFatal ("Intento de cerrar la conexión de un descriptor no presente.");
00120 
00121   Conexion *con = conexiones.value (descriptor);
00122 
00123   EliminarConexion (con);
00124 }

void Servidor::EliminarConexion Conexion con  )  [private, slot]
 

Elimina la conexión que se pasa como parámetro.

Definición en la línea 127 del archivo Servidor.cpp.

Hace referencia a conexiones, Conexion::descriptor, Conexion::direccion, Mensajero::EliminaCanal(), y Log().

Referenciado por CierraConexion(), y incomingConnection().

00128 {
00129   Log (6, "Cerrando conexión");
00130   Log (5, " procedente de la dirección IP: " + *con->direccion);
00131   Log (6, "\n");
00132   miMensaj->EliminaCanal (con->descriptor);
00133   conexiones.remove (con->descriptor);
00134   delete con;
00135 
00136   QString num_conexiones;
00137   num_conexiones.setNum (conexiones.count());
00138   Log (4, "Ahora mismo hay " + num_conexiones + " conexiones abiertas.\n");
00139 }

void Servidor::Escribe const int  descriptor,
const QString &  texto
 

Envía un mensaje de texto a la conexión de descriptor dado.

Definición en la línea 142 del archivo Servidor.cpp.

Hace referencia a conexiones, y Conexion::Escribe().

Referenciado por Mensajero::EnviaMensaje(), Mensajero::NuevaLinea(), y Mensajero::NuevoCanal().

00143 {
00144   if (!conexiones.contains (descriptor))
00145     qFatal ("Intento de escritura hacia un descriptor no presente.");
00146 
00147   Conexion *destino = conexiones.value (descriptor);
00148 
00149   destino->Escribe (texto);
00150 }

void Servidor::incomingConnection int  descriptor  ) 
 

Crea una nueva Conexion a la llegada de una nueva conexión.

Definición en la línea 153 del archivo Servidor.cpp.

Hace referencia a conexiones, Conexion::direccion, EliminarConexion(), Log(), y Mensajero::NuevoCanal().

00154 {
00155   Conexion *entrante = new Conexion (descriptor);
00156 
00157   // Añadimos la nueva conexión a la lista de conexiones entrantes
00158   conexiones.insert (descriptor, entrante);
00159 
00160   connect (entrante, SIGNAL (EliminarConexion (Conexion *)), this,
00161            SLOT (EliminarConexion (Conexion *)));
00162 
00163   miMensaj->NuevoCanal (descriptor);
00164 
00165   Log (6, "Nueva conexión entrante aceptada.\n");
00166   Log (5, "La conexión proviene de la dirección IP: " + *entrante->direccion +
00167        "\n");
00168 
00169   QString num_conexiones;
00170   num_conexiones.setNum (conexiones.count());
00171   Log (4, "Ahora mismo hay " + num_conexiones);
00172   if (conexiones.count() == 1)
00173     Log (4, " conexión abierta.\n");
00174   else
00175     Log (4, " conexiones abiertas.\n");
00176 }


Documentación de los datos miembro

QHash<int, Conexion *> Servidor::conexiones [private]
 

Contenedor de conexiones entrantes.

Definición en la línea 78 del archivo Servidor.hpp.

Referenciado por CierraConexion(), EliminarConexion(), Escribe(), incomingConnection(), y ~Servidor().


La documentación para esta clase fué generada a partir de los siguientes archivos:
Generado el Tue Nov 29 01:04:33 2005 para MUnDoCAAD MUD Engine por  doxygen 1.4.4