uniandes.cupi2.messengerAmigos.cliente
Interface IClienteMessenger

All Known Implementing Classes:
ClienteAmigos

public interface IClienteMessenger

Esta interfaz define los servicios que debe ofrecer el cliente para el messenger


Field Summary
static java.lang.String AGREGAR_AMIGO
          Mensaje que se usa para agregar un amigo
static java.lang.String CONVERSACION
          Mensaje que se usa para que un cliente le indique al servidor que va a iniciar una charla y que necesita ponerse en contacto con un amigo
static java.lang.String DESCONEXION
          Mensaje que envía el servidor a un cliente cuando lo desconecta
static java.lang.String INICIO_CHARLA
          Mensaje que se usa para que el servidor le indique a un cliente que va a iniciarse una conversación
static java.lang.String LOGIN
          Mensaje que se envía cuando un cliente se va a conectar
static java.lang.String LOGOUT
          Mensaje que se envía cuando un cliente se va a desconectar
static java.lang.String OFFLINE
          Mensaje que se usa para indicar que un amigo está desconectado
static java.lang.String ONLINE
          Mensaje que se usa para indicar que un amigo está conectado
 
Method Summary
 void actualizarEstado(Usuario amigo)
          Actualiza el estado de un amigo.
 void agregarAmigo(java.lang.String nombreAmigo)
          Agrega un amigo al usuario
 void conectar(java.lang.String usuario)
          Conecta el cliente al servidor y deja la aplicación lista para enviar y recibir mensajes.
 void conectarAConversacion(java.lang.String nombreAmigo, java.lang.String ipAmigo, int puertoAmigo)
          Este método es usado cuando se recibe una notificación que indica que se debe participar en una conversación con un amigo.
 Conversacion crearConversacionLocal(java.lang.String amigo)
          Este método es usado cuando el usuario local va a iniciar una conversación con un amigo.
 java.lang.String darNombreUsuario()
          Retorna el nombre del usuario conectado
 void desconectar()
          Cierra todas las conversaciones que están abiertas actualmente, limpia la lista de amigos y desconecta al cliente del servidor.
 void eliminarConversacion(Conversacion conv)
          Elimina de la colección de conversaciones la conversación indicada
 void enviarDesconexion()
          Envía un mensaje de LOGOUT al servidor.
 boolean estaConectado()
          Indica si el cliente está conectado al servidor
 java.lang.String metodo1()
          Método para la extensión 1
 java.lang.String metodo2()
          Método para la extensión2
 

Field Detail

LOGIN

static final java.lang.String LOGIN
Mensaje que se envía cuando un cliente se va a conectar

See Also:
Constant Field Values

LOGOUT

static final java.lang.String LOGOUT
Mensaje que se envía cuando un cliente se va a desconectar

See Also:
Constant Field Values

DESCONEXION

static final java.lang.String DESCONEXION
Mensaje que envía el servidor a un cliente cuando lo desconecta

See Also:
Constant Field Values

ONLINE

static final java.lang.String ONLINE
Mensaje que se usa para indicar que un amigo está conectado

See Also:
Constant Field Values

OFFLINE

static final java.lang.String OFFLINE
Mensaje que se usa para indicar que un amigo está desconectado

See Also:
Constant Field Values

AGREGAR_AMIGO

static final java.lang.String AGREGAR_AMIGO
Mensaje que se usa para agregar un amigo

See Also:
Constant Field Values

INICIO_CHARLA

static final java.lang.String INICIO_CHARLA
Mensaje que se usa para que el servidor le indique a un cliente que va a iniciarse una conversación

See Also:
Constant Field Values

CONVERSACION

static final java.lang.String CONVERSACION
Mensaje que se usa para que un cliente le indique al servidor que va a iniciar una charla y que necesita ponerse en contacto con un amigo

See Also:
Constant Field Values
Method Detail

estaConectado

boolean estaConectado()
Indica si el cliente está conectado al servidor

Returns:
Retorna true si el cliente está conectado

darNombreUsuario

java.lang.String darNombreUsuario()
Retorna el nombre del usuario conectado

Returns:
nombreUsuario

conectar

void conectar(java.lang.String usuario)
              throws java.io.IOException
Conecta el cliente al servidor y deja la aplicación lista para enviar y recibir mensajes.
Después de conectarse al servidor se envía la información del usuario (nombre y dirección ip) y se crea un hilo especial para leer los mensajes provenientes del servidor usando una instancia de la clase ThreadRecibirMensajesServidor.

Parameters:
usuario - El nombre del usuario local que se va a conectar al servidor - usuario != null && usuario != ""
Throws:
java.io.IOException - Se lanza esta excepción si hay problemas en la comunicación.

enviarDesconexion

void enviarDesconexion()
Envía un mensaje de LOGOUT al servidor. Este a su vez deberá cerrar la conexión con el cliente y enviar un mensaje de desconexión (DESCONEXION) para que, cuando sea recibido por el ThreadRecibirMensajesServidor, se inicie la desconexión del lado del cliente.


desconectar

void desconectar()
                 throws java.io.IOException
Cierra todas las conversaciones que están abiertas actualmente, limpia la lista de amigos y desconecta al cliente del servidor.
pre: No hay nadie escribiendo ni leyendo del socket que comunica al cliente con el servidor.

Throws:
java.io.IOException - Se lanza esta excepción si hay problemas desconectando al cliente

agregarAmigo

void agregarAmigo(java.lang.String nombreAmigo)
Agrega un amigo al usuario

Parameters:
nombreAmigo - El nombre del nuevo amigo - amigo != null

actualizarEstado

void actualizarEstado(Usuario amigo)
Actualiza el estado de un amigo. Si no se encontraba en la lista de amigos, entonces es agregado.

Parameters:
amigo - Los datos del amigo - amigo != null

crearConversacionLocal

Conversacion crearConversacionLocal(java.lang.String amigo)
                                    throws java.io.IOException
Este método es usado cuando el usuario local va a iniciar una conversación con un amigo.
El proceso de crear una conversación se ejecuta en tres etapas principales.
1. Se envía al servidor un mensaje solicitando que se le envíe un mensaje al otro cliente para que entre a hacer parte de la conversación.
2. Se crea un objeto Conversacion que se encargará de recibir y manejar la conexión del cliente remoto.
3. Se retorna el objeto conversación creado para que se abra la ventana correspondiente en la interfaz.

Parameters:
amigo - El nombre del amigo con el que se va a realizar la conversación - amigo != null && amigo hace parte de la lista de amigos
Returns:
Retorna el objeto conversación creado
Throws:
java.io.IOException - Se lanza esta excepción si hay problemas estableciendo la comunicación con el amigo

conectarAConversacion

void conectarAConversacion(java.lang.String nombreAmigo,
                           java.lang.String ipAmigo,
                           int puertoAmigo)
                           throws java.io.IOException
Este método es usado cuando se recibe una notificación que indica que se debe participar en una conversación con un amigo.
El proceso para crear la conversación es el siguiente.
1. Se crear un objeto Conversacion que se encargará de recibir y manejar la conexión del cliente remoto.
2. El objeto Conversacion recién creado establece una comunicación con el otro cliente.
3. Se le notifica a la interfaz que se creó una Conversación para que se cree la ventana correspondiente en la interfaz.

Parameters:
nombreAmigo - El nombre del amigo con el que se va a realizar la conversación - nombreAmigo != null
ipAmigo - La dirección del amigo con el que se va a realizar la conversación - ipAmigo != null && ipAmigo != ""
puertoAmigo - El puerto del amigo al que se debe conectar el cliente
Throws:
java.io.IOException - Se lanza esta excepción si hay problemas estableciendo la comunicación con el amigo

eliminarConversacion

void eliminarConversacion(Conversacion conv)
Elimina de la colección de conversaciones la conversación indicada

Parameters:
conv - La conversación que se va a eliminar - conv != null

metodo1

java.lang.String metodo1()
Método para la extensión 1

Returns:
respuesta1

metodo2

java.lang.String metodo2()
Método para la extensión2

Returns:
respuesta2