de.tud.dvs1.mmpgp2p
Class ClientThread

java.lang.Object
  extended by java.lang.Thread
      extended by de.tud.dvs1.mmpgp2p.MmpgP2PServiceThread
          extended by de.tud.dvs1.mmpgp2p.ClientThread
All Implemented Interfaces:
java.lang.Runnable
Direct Known Subclasses:
BotPlayer, ClientImplementation

public abstract class ClientThread
extends MmpgP2PServiceThread

Diese Klasse abstrahiert einen Client, der in Verbindung mit dem Server tritt.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
static long MAX_WAIT_NOP
           
static long STATUS_PAUSEING
           
static long STATUS_PLAYING
           
static long STATUS_STARTING
           
static long STATUS_UNDEFINED
           
 
Fields inherited from class de.tud.dvs1.mmpgp2p.MmpgP2PServiceThread
CR, logSystemStatsInterval, logSystemStatsLast, logSystemStatsStart, logSystemStatsWriter, MAGIC
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
ClientThread(java.util.Properties p)
           
ClientThread(java.lang.String server, java.lang.String port, java.lang.String username, java.lang.String password)
           
 
Method Summary
 void addCommand(MmpgP2PCommand c)
          Diese Methode dient als Schnittstelle zur Implementierung.
protected  void closedConnection(ConnectionWorkerThread t)
          Diese Funktion wird aufgerufen, nachem sich ein ConnectionWorkerThread beendet
protected  void executeCommand(MmpgP2PCommand c)
          Führe ein Kommando aus.
abstract  void gameWorldUpdated()
          Diese Methode wird aufgerufen, sobald die Welt sich geändert hat.
 Avatar[] getAvatars()
          Gibt die Avatare des Clients zurück.
 GameWorld getGameWorld()
          Liefert die Spielewelt zurück, die alle für den Clients sichtbaren Objekte enthält.
 java.lang.String getRCInformationString()
           
 SessionTicket getTicket()
          Liefert das SessionTicket des Clients zurück, sofern es schon erhalten ist.
protected  ClientRequest incomingConnection(ConnectionWorkerThread t)
          Eine Verbinung kommt herein.
protected  void incomingData(ConnectionWorkerThread t)
          Auf einer Verbindung kommen Daten herein.
 void login()
          In das System einloggen.
 void logout()
          Logout.
 void pauseGame()
          Gib den RegionControllern das Signal zum Pausieren des Spiels für diesen Spieler
 void playGame()
          Spielbetrieb wieder aufnehmen.
 void run()
          Thread-Methode
 void setGZIP(boolean b)
           
 void startGame()
          Gib den RegionControllern das Signal zur Aufnahme des Spielbetriebs.
 void stopClient()
          Der Client beendet sich.
 
Methods inherited from class de.tud.dvs1.mmpgp2p.MmpgP2PServiceThread
closeServerConnectionWorker, doLogSystemStats, getConnectionWorker, getDebug, getProperties, getProperty, getProperty, getServerConnectionWorker, getSystemLoad, getSystemMemory, getThreadName, getTime, getTraffic, initSystemStats, isRunning, isStarting, log_debug, log_debug, log, log, logSystemStats, openConnection, openServerConnection, printSystemStatsFirstLine, readFirstLine, resetSystemStats, setDebug, setProperty, setRunning, stopThread, waitFor, waitForShutdown
 
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

STATUS_UNDEFINED

public static final long STATUS_UNDEFINED
See Also:
Constant Field Values

STATUS_STARTING

public static final long STATUS_STARTING
See Also:
Constant Field Values

STATUS_PLAYING

public static final long STATUS_PLAYING
See Also:
Constant Field Values

STATUS_PAUSEING

public static final long STATUS_PAUSEING
See Also:
Constant Field Values

MAX_WAIT_NOP

public static final long MAX_WAIT_NOP
See Also:
Constant Field Values
Constructor Detail

ClientThread

public ClientThread(java.util.Properties p)

ClientThread

public ClientThread(java.lang.String server,
                    java.lang.String port,
                    java.lang.String username,
                    java.lang.String password)
Method Detail

gameWorldUpdated

public abstract void gameWorldUpdated()
Diese Methode wird aufgerufen, sobald die Welt sich geändert hat.


getTicket

public SessionTicket getTicket()
Liefert das SessionTicket des Clients zurück, sofern es schon erhalten ist.


stopClient

public void stopClient()
Der Client beendet sich. Diese Methode ruft nach eigener Arbeit die abstrakte Methode der Implementierung auf.


getRCInformationString

public java.lang.String getRCInformationString()

pauseGame

public void pauseGame()
               throws MmpgP2PException
Gib den RegionControllern das Signal zum Pausieren des Spiels für diesen Spieler

Throws:
MmpgP2PException

playGame

public void playGame()
              throws MmpgP2PException
Spielbetrieb wieder aufnehmen.

Throws:
MmpgP2PException

startGame

public void startGame()
               throws MmpgP2PException
Gib den RegionControllern das Signal zur Aufnahme des Spielbetriebs.

Throws:
MmpgP2PException

getAvatars

public Avatar[] getAvatars()
Gibt die Avatare des Clients zurück.


getGameWorld

public GameWorld getGameWorld()
Liefert die Spielewelt zurück, die alle für den Clients sichtbaren Objekte enthält.


run

public void run()
Thread-Methode

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread

setGZIP

public void setGZIP(boolean b)

logout

public void logout()
Logout. Durch Aufruf dieser Funktion wird ein Logout Befehl übermittelt und es werden die Verbindungen zu den RegionControllern geschlossen.


login

public void login()
           throws MmpgP2PException,
                  java.io.IOException,
                  java.lang.InterruptedException,
                  java.lang.ClassNotFoundException
In das System einloggen. Der Server wird kontaktiert und ein SessionTicket beantragt. Danach werden die im Ticket genannten RegionController kontaktiert.

Throws:
MmpgP2PException
java.io.IOException
java.lang.InterruptedException
java.lang.ClassNotFoundException

executeCommand

protected void executeCommand(MmpgP2PCommand c)
                       throws MmpgP2PException
Führe ein Kommando aus. Nicht mehr als ein Kommando zur gleichen Zeit ausführen. synchronized

Throws:
MmpgP2PException

addCommand

public void addCommand(MmpgP2PCommand c)
Diese Methode dient als Schnittstelle zur Implementierung. Diese kann ein Kommando an das System übermitteln, welches dann im nächsten "TICK" an die zuständigen RCs übertragen wird.


incomingConnection

protected ClientRequest incomingConnection(ConnectionWorkerThread t)
Eine Verbinung kommt herein. Ungewöhnlich bei einem ClientThread

Specified by:
incomingConnection in class MmpgP2PServiceThread
Returns:
Ein ClientRequest wird erzeugt, über den die Verbindung identifiziert wird.

incomingData

protected void incomingData(ConnectionWorkerThread t)
Description copied from class: MmpgP2PServiceThread
Auf einer Verbindung kommen Daten herein. In der Regel rufen die ConnectionWorkerThreads diese Metode auf sobald Daten anliegen.

Specified by:
incomingData in class MmpgP2PServiceThread

closedConnection

protected void closedConnection(ConnectionWorkerThread t)
Description copied from class: MmpgP2PServiceThread
Diese Funktion wird aufgerufen, nachem sich ein ConnectionWorkerThread beendet

Specified by:
closedConnection in class MmpgP2PServiceThread