de.tud.dvs1.mmpgp2p
Class RegionControllerThread

java.lang.Object
  extended by java.lang.Thread
      extended by de.tud.dvs1.mmpgp2p.MmpgP2PServiceThread
          extended by de.tud.dvs1.mmpgp2p.RegionControllerThread
All Implemented Interfaces:
java.lang.Runnable

public class RegionControllerThread
extends MmpgP2PServiceThread

Diese Klasse ist die auf den Clients laufende Instanz eines RegionControllers. Auf jedem Client läuft mindestens eine Instanz und wartet auf Verbindungen.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
static java.lang.String MAX_CLIENTS
           
static java.lang.String MIN_CLIENTS
           
static java.lang.String PORT
           
static java.lang.String START_TIMEOUT
           
 
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
RegionControllerThread()
           
RegionControllerThread(java.util.Properties p)
          Constructor Ein neuer RegionControllerThread wird erzeugt
 
Method Summary
protected  void closedConnection(ConnectionWorkerThread t)
          Diese Funktion wird aufgerufen, nachem sich ein ConnectionWorkerThread beendet
 void deleteGameWorld()
           
 GameWorld getGameWorld()
           
 java.net.InetAddress getInetAddress()
           
 int getPort()
           
 RegionControllerInfo getRegionControllerInfo()
          Eine RegionController Klasse für diesen RegionControllerThread zurückgeben
 RegionInfo getRegionInfo()
           
protected  ClientRequest incomingConnection(ConnectionWorkerThread t)
          Ein neuer Client verbindet sich.
 void incomingData(ConnectionWorkerThread t)
          Neue Daten liegen an
 void initRegionController()
          Den Initialisierungskram erledigen.
 void log(java.lang.Exception e)
           
 void log(java.lang.String s)
           
 void run()
          Thread-Methode
 void setGameWorld(GameWorld world)
          Erhält eine Klasse mit Objekte, mit denen die Welt initialisiert wird.
 void setLogStream(java.io.PrintStream s)
          Das logging des RCs kann umgeleitet werden, indem hier ein entsprechender PrintStream übergeben wird.
 void setRuleset(Ruleset rules)
          Die Spielregeln setzen.
 GameWorld[] splitGameWorld()
           
 GameWorld[] splitGameWorld(GameWorld gw)
          Die Spielewelt wird aufgeteilt.
static GameWorld[] splitGameWorld(GameWorld gw, int sx, int sy)
          Die Spielewelt wird aufgeteilt.
 GameWorld[] splitGameWorld(int x, int y)
           
 
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, 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

PORT

public static final java.lang.String PORT
See Also:
Constant Field Values

START_TIMEOUT

public static final java.lang.String START_TIMEOUT
See Also:
Constant Field Values

MAX_CLIENTS

public static final java.lang.String MAX_CLIENTS
See Also:
Constant Field Values

MIN_CLIENTS

public static final java.lang.String MIN_CLIENTS
See Also:
Constant Field Values
Constructor Detail

RegionControllerThread

public RegionControllerThread(java.util.Properties p)
Constructor Ein neuer RegionControllerThread wird erzeugt

Parameters:
prop - Konfiguration.

RegionControllerThread

public RegionControllerThread()
Method Detail

initRegionController

public void initRegionController()
Den Initialisierungskram erledigen.


incomingConnection

protected ClientRequest incomingConnection(ConnectionWorkerThread t)
Ein neuer Client verbindet sich.

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

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

incomingData

public void incomingData(ConnectionWorkerThread t)
Neue Daten liegen an

Specified by:
incomingData in class MmpgP2PServiceThread

setRuleset

public void setRuleset(Ruleset rules)
Die Spielregeln setzen.


setGameWorld

public void setGameWorld(GameWorld world)
                  throws MmpgP2PException
Erhält eine Klasse mit Objekte, mit denen die Welt initialisiert wird.

Parameters:
world - Die neue Spielwelt
Throws:
MmpgP2PException

getGameWorld

public GameWorld getGameWorld()

getRegionInfo

public RegionInfo getRegionInfo()

deleteGameWorld

public void deleteGameWorld()

splitGameWorld

public GameWorld[] splitGameWorld()
                           throws MmpgP2PException
Throws:
MmpgP2PException

splitGameWorld

public GameWorld[] splitGameWorld(int x,
                                  int y)
                           throws MmpgP2PException
Throws:
MmpgP2PException

splitGameWorld

public GameWorld[] splitGameWorld(GameWorld gw)
                           throws MmpgP2PException
Die Spielewelt wird aufgeteilt. Entscheidung über die Aufteilung obligt dem RegionController.

Throws:
MmpgP2PException

splitGameWorld

public static GameWorld[] splitGameWorld(GameWorld gw,
                                         int sx,
                                         int sy)
                                  throws MmpgP2PException
Die Spielewelt wird aufgeteilt. Sind BEIDE Parameter -1, dann kann der RegionController selbst über eine Aufteilung entscheiden. Ist GENAU EIN Parameter -1, dann wird die Region in 2 Teile zerlegt, sind beide Parameter gesetzt, dann sind es 4 Teile, wobei der Punkt (X,Y) dann der Berührungspunkt der vier entstehenden Regionen ist.

Parameters:
gw - Die Spielewelt, die geteilt werden soll
sx - Die X-Koordinate für eine vertikale Aufteilung. Kann -1 sein, falls nicht vertikal geteilt werden soll.
sy - Die Y-Koordinate für eine horizinlae Aufteilung. Kann -1 sein, falls nicht horizontal geteilt werden soll.
Returns:
Gibt einen Array von 2 oder 4 GameWorlds zurück. Der Server verteilt diese dann an freie RegionController.
Throws:
MmpgP2PException

run

public void run()
Thread-Methode

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

getRegionControllerInfo

public RegionControllerInfo getRegionControllerInfo()
Eine RegionController Klasse für diesen RegionControllerThread zurückgeben


getPort

public int getPort()
Returns:
Der Port, auf dem dieser Thread lauscht.

getInetAddress

public java.net.InetAddress getInetAddress()
Returns:
Die Adresse, auf der dieser Thread lauscht.

setLogStream

public void setLogStream(java.io.PrintStream s)
Das logging des RCs kann umgeleitet werden, indem hier ein entsprechender PrintStream übergeben wird.


log

public void log(java.lang.String s)
Specified by:
log in class MmpgP2PServiceThread

log

public void log(java.lang.Exception e)
Specified by:
log in class MmpgP2PServiceThread