|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.lang.Thread de.tud.dvs1.mmpgp2p.MmpgP2PServiceThread de.tud.dvs1.mmpgp2p.ServerThread
public abstract class ServerThread
Diese Klasse abstrahiert den Zentralen Server, der die Verwaltung der Benutzeraccounts übernimmt, als Einstiegspunkt für neue Spieler fungiert und die Verteilung der Spheren an Clients übernimmt (Region-Controller). Die Klasse bietet ein HTTP-Interface, über das Status-Informationen abgefragt werden dürfen und Adminstratoren diverse Einstellungen bietet.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class java.lang.Thread |
---|
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler |
Field Summary | |
---|---|
protected RegionControllerThread |
initialRC
|
protected static long |
MAX_WAIT_CLIENT_CONNECT
|
protected static long |
MAX_WAIT_CLIENT_INACTIVE
|
static java.lang.String |
PORT
|
protected java.util.Hashtable |
regionControllers
|
protected RegionTree |
regionTree
|
static java.lang.String |
SERVER
|
static java.lang.String |
SERVERNICENAME
|
protected GameWorldInfo |
worldInfo
|
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 | |
---|---|
ServerThread()
|
|
ServerThread(java.util.Properties p)
Constructor Ein neuer Server-Thread wird erzeugt |
Method Summary | |
---|---|
protected void |
closedConnection(ConnectionWorkerThread t)
Diese Funktion wird aufgerufen, nachem sich ein ConnectionWorkerThread beendet |
protected void |
doLogSystemStats()
Statistiken in ein Logfile schreiben |
java.util.Hashtable |
getActiveClients()
|
protected abstract Avatar[] |
getClientAvatars(ClientInfo c)
Die zu einem Client gehörigen Avatare ermitteln. |
GameWorld |
getGameWorld()
Liefere die Spiele-Welt zurück. |
static java.lang.String |
getHeader(java.io.ObjectInputStream in)
Holt die restlichen Zeilen aus der Verbindung, bis CR kommt |
static java.lang.String |
getHeaderFromInputStreamReader(java.io.InputStreamReader ins)
Holt die restlichen Zeilen aus der Verbindung, bis CR kommt |
java.lang.String |
getInfo()
|
protected abstract GameWorld |
getInitialGameWorld()
Die Implementierung muß eine Spielewelt liefern, mit der sich der Server initialisieren kann. |
protected abstract Ruleset |
getInitialRuleset()
Mit dieser Methode liefert die Serverklasse die Spielregeln. |
RegionControllerInfo |
getNextFreeRC()
|
int |
getNumConnectionRequests()
|
Ruleset |
getRuleset()
|
ServerThread |
getServerThread()
|
protected java.lang.String |
getShutdownMagic()
|
ClientRequest |
incomingConnection(ConnectionWorkerThread t)
Eine Verbinung kommt herein. |
void |
incomingData(ConnectionWorkerThread t)
Verarbeite reinkommende Daten |
protected abstract SessionTicket |
loginClient(ClientRequest client)
Ein schon bekannter Client verbindet sich mit dem Server und loggt sich durch einen LOGIN-Befehl ein. |
protected void |
printSystemStatsFirstLine()
Intozeile der SystemStats |
protected abstract int |
registerNewClient(ClientRequest client)
Verbindet sich ein neuer Client mit dem Befehl REGISTER zum Server, dann wird diese Methode aufgerufen. |
void |
requestMerge(java.lang.Integer x,
java.lang.Integer y)
Eine Region soll mit einer anderen Region zusammengelegt werden. |
void |
requestSplit(RegionInfo ri,
java.lang.Integer x,
java.lang.Integer y)
Ein RegionController erbittet die Splittung der Region an den vorgeschlagenen Koordinaten. |
void |
run()
Thread-Methode |
protected abstract void |
saveClientAvatars(ClientInfo c,
Avatar[] avatars)
Die zum Client gehörenden Avatare persistent sichern. |
protected void |
sendShutDown()
|
void |
splitRegion(char o,
int x,
int y)
Splitten einer Region |
void |
splitRegion(RegionControllerThread r,
int x,
int y)
|
void |
stopServer()
Beendet den Server. |
void |
stopThread()
Überschreibt die Methode der Abstrakten Vaterklasse. |
Methods inherited from class de.tud.dvs1.mmpgp2p.MmpgP2PServiceThread |
---|
closeServerConnectionWorker, getConnectionWorker, getDebug, getProperties, getProperty, getProperty, getServerConnectionWorker, getSystemLoad, getSystemMemory, getThreadName, getTime, getTraffic, initSystemStats, isRunning, isStarting, log_debug, log_debug, log, log, logSystemStats, openConnection, openServerConnection, readFirstLine, resetSystemStats, setDebug, setProperty, setRunning, 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 |
---|
public static final java.lang.String PORT
public static final java.lang.String SERVER
public static final java.lang.String SERVERNICENAME
protected static final long MAX_WAIT_CLIENT_CONNECT
protected static final long MAX_WAIT_CLIENT_INACTIVE
protected java.util.Hashtable regionControllers
protected RegionControllerThread initialRC
protected GameWorldInfo worldInfo
protected RegionTree regionTree
Constructor Detail |
---|
public ServerThread(java.util.Properties p)
prop
- Konfiguration.public ServerThread()
Method Detail |
---|
public java.util.Hashtable getActiveClients()
public ServerThread getServerThread()
protected abstract int registerNewClient(ClientRequest client)
client
- Enthält alle Informationen, die vom
Client geliefert wurden.
protected abstract SessionTicket loginClient(ClientRequest client)
client
- Enthält alle Informationen, die vom Client geliefert wurden.
protected abstract Avatar[] getClientAvatars(ClientInfo c)
c
- Enthält alle Informationen, die vom Client geliefert wurden.
protected abstract void saveClientAvatars(ClientInfo c, Avatar[] avatars)
c
- Enthält alle Informationen, die den Client identifizieren.avatars
- Die Avatare des Clientsprotected abstract GameWorld getInitialGameWorld()
protected abstract Ruleset getInitialRuleset()
public Ruleset getRuleset()
public void requestMerge(java.lang.Integer x, java.lang.Integer y) throws MmpgP2PException
MmpgP2PException
public void requestSplit(RegionInfo ri, java.lang.Integer x, java.lang.Integer y) throws MmpgP2PException
MmpgP2PException
public void splitRegion(char o, int x, int y) throws MmpgP2PException
MmpgP2PException
public void splitRegion(RegionControllerThread r, int x, int y) throws MmpgP2PException
MmpgP2PException
public RegionControllerInfo getNextFreeRC()
public void run()
run
in interface java.lang.Runnable
run
in class java.lang.Thread
public GameWorld getGameWorld()
protected void printSystemStatsFirstLine() throws java.io.IOException
printSystemStatsFirstLine
in class MmpgP2PServiceThread
java.io.IOException
protected void doLogSystemStats()
doLogSystemStats
in class MmpgP2PServiceThread
public ClientRequest incomingConnection(ConnectionWorkerThread t)
incomingConnection
in class MmpgP2PServiceThread
protected void closedConnection(ConnectionWorkerThread t)
MmpgP2PServiceThread
closedConnection
in class MmpgP2PServiceThread
public void incomingData(ConnectionWorkerThread t)
incomingData
in class MmpgP2PServiceThread
s
- Der Socket, dessen Daten verarbeitet werden sollen.public void stopServer() throws java.io.IOException
Sorgt dafür, dass alle Clients über den Abbruch informiert werden, fordert die RegionController zum Backup der Daten auf und macht die Spielwelt consistent.
java.io.IOException
protected void sendShutDown()
public void stopThread()
stopThread
in class MmpgP2PServiceThread
public java.lang.String getInfo()
public static java.lang.String getHeader(java.io.ObjectInputStream in)
public static java.lang.String getHeaderFromInputStreamReader(java.io.InputStreamReader ins)
protected java.lang.String getShutdownMagic()
public int getNumConnectionRequests()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |