fr.lip6.sma.simulacion.server.http
Class HTTPClient

java.lang.Object
  extended by java.lang.Thread
      extended by fr.lip6.sma.simulacion.server.http.HTTPClient
All Implemented Interfaces:
Server, Runnable, AsyncCallback

public class HTTPClient
extends Thread
implements Server, AsyncCallback

Classe pour le client HTTP qui gère les échanges bidirectionnels avec le serveur (HTTP). Ce client HTTP est un Server au sens de Simulación, i.e. l'objet qui reçoit les requêtes des autres joueurs (via le serveur HTTP). Cette classe gère aussi la liste des agents.

Version:
$Revision: 3 $
Author:
Paul Guyot
See Also:
"aucun test défini."

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
private  HTTPAgentListManager mAgentListManager
          Gestionnaire pour la liste des agents.
private  Integer mClientID
          Référence sur notre identifiant en tant que client auprès du serveur.
private  LocalAgent mLocalAgent
          Référence sur l'agent local.
private  Integer mLocalAgentLock
          Verrou pour attendre l'agent local.
private  String mOurGameID
          Notre version du jeu (doit correspondre à celle du serveur).
private  boolean mRunning
          Si on tourne.
private  XmlRpcClient mXmlRpcClient
          Client XML-RPC.
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
HTTPClient()
          Constructeur par défaut.
 
Method Summary
(package private)  boolean configure(String inURL)
          Méthode appelée par la fenêtre de configuration lorsque l'utilisateur clique sur le bouton de connexion.
private  void connect()
          Connect to the server.
(package private)  Object doExecute(int inLeftAttempts, String inMethodName, List inParams)
          Exécute une requête sur le serveur HTTP.
(package private)  Object execute(String inMethodName, Object inArg1, Object inArg2)
          Exécute une requête sur le serveur HTTP avec deux paramètres.
(package private)  Object execute(String inMethodName, Object inArg1, Object inArg2, Object inArg3, Object inArg4)
          Exécute une requête sur le serveur HTTP avec quatre paramètres.
 AgentListManager getAgentListManager()
          Retourne l'interface pour la liste des agents.
 void handleError(Exception inException, URL inURL, String inMethod)
          Méthode appelée lorsqu'une erreur est survenue avec notre requête listen.
 void handleResult(Object inResult, URL inURL, String inMethod)
          Méthode appelée lorsque le serveur a répondu à notre requête listen.
 void processEvent(Map inEvent)
          Méthode appelée pour gérer un événement.
 void run()
          Point d'entrée du processus léger.
(package private)  void setLocalAgent(LocalAgent inLocalAgent)
          Configure le serveur (Server) pour l'agent local.
 void shutdown()
          Ferme le serveur.
 void start(Configuration inConfiguration)
          Configure et démarre le serveur.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

mXmlRpcClient

private XmlRpcClient mXmlRpcClient
Client XML-RPC.


mOurGameID

private String mOurGameID
Notre version du jeu (doit correspondre à celle du serveur).


mClientID

private Integer mClientID
Référence sur notre identifiant en tant que client auprès du serveur.


mRunning

private boolean mRunning
Si on tourne.


mLocalAgent

private LocalAgent mLocalAgent
Référence sur l'agent local.


mAgentListManager

private HTTPAgentListManager mAgentListManager
Gestionnaire pour la liste des agents.


mLocalAgentLock

private final Integer mLocalAgentLock
Verrou pour attendre l'agent local.

Constructor Detail

HTTPClient

public HTTPClient()
Constructeur par défaut.

Method Detail

start

public void start(Configuration inConfiguration)
Configure et démarre le serveur.

Specified by:
start in interface Server
Parameters:
inConfiguration - configuration de l'application.

configure

final boolean configure(String inURL)
Méthode appelée par la fenêtre de configuration lorsque l'utilisateur clique sur le bouton de connexion.

Parameters:
inURL - chaîne avec l'URL du serveur.
Returns:
true si la connexion a réussi.

connect

private void connect()
Connect to the server.


run

public final void run()
Point d'entrée du processus léger.

Specified by:
run in interface Runnable
Overrides:
run in class Thread

setLocalAgent

final void setLocalAgent(LocalAgent inLocalAgent)
Configure le serveur (Server) pour l'agent local.

Parameters:
inLocalAgent - l'agent local.
See Also:
Server

shutdown

public final void shutdown()
Ferme le serveur.

Specified by:
shutdown in interface Server

handleResult

public void handleResult(Object inResult,
                         URL inURL,
                         String inMethod)
Méthode appelée lorsque le serveur a répondu à notre requête listen.

Specified by:
handleResult in interface AsyncCallback
Parameters:
inResult - résultat de la méthode.
inURL - URL du serveur.
inMethod - méthode appelée (ici listen).

handleError

public void handleError(Exception inException,
                        URL inURL,
                        String inMethod)
Méthode appelée lorsqu'une erreur est survenue avec notre requête listen.

Specified by:
handleError in interface AsyncCallback
Parameters:
inException - exception survenue.
inURL - URL de la requête.
inMethod - méthode invoquée (listen).

processEvent

public void processEvent(Map inEvent)
Méthode appelée pour gérer un événement.

Parameters:
inEvent - dictionnaire représentant l'événement.

getAgentListManager

public final AgentListManager getAgentListManager()
Retourne l'interface pour la liste des agents.

Specified by:
getAgentListManager in interface Server
Returns:
le gestionnaire de la liste des agents.

execute

Object execute(String inMethodName,
               Object inArg1,
               Object inArg2)
         throws XmlRpcException
Exécute une requête sur le serveur HTTP avec deux paramètres. Rajoute notre ID au début. Persiste CLIENT_MAXATTEMPTS fois si une erreur I/O est survenue.

Parameters:
inMethodName - nom de la méthode à invoquer.
inArg1 - premier paramètre.
inArg2 - deuxième paramètre.
Returns:
le résultat de la requête.
Throws:
XmlRpcException - si le serveur a lancé une exception.

execute

Object execute(String inMethodName,
               Object inArg1,
               Object inArg2,
               Object inArg3,
               Object inArg4)
         throws XmlRpcException
Exécute une requête sur le serveur HTTP avec quatre paramètres. Rajoute notre ID au début. Persiste CLIENT_MAXATTEMPTS fois si une erreur I/O est survenue.

Parameters:
inMethodName - nom de la méthode à invoquer.
inArg1 - premier paramètre.
inArg2 - deuxième paramètre.
inArg3 - troisième paramètre.
inArg4 - quatrième paramètre.
Returns:
le résultat de la requête.
Throws:
XmlRpcException - si le serveur a lancé une exception.

doExecute

Object doExecute(int inLeftAttempts,
                 String inMethodName,
                 List inParams)
           throws XmlRpcException
Exécute une requête sur le serveur HTTP.

Parameters:
inLeftAttempts - nombre de tentative à faire.
inMethodName - nom de la méthode à appeler.
inParams - paramètres pour la méthode.
Returns:
le résultat de la requête.
Throws:
XmlRpcException - si le serveur a lancé une exception.