Package net.sf.colossus.client
Class ClientThread
- java.lang.Object
-
- java.lang.Thread
-
- net.sf.colossus.client.ClientThread
-
- All Implemented Interfaces:
java.lang.Runnable
public class ClientThread extends java.lang.ThreadThis will be a thread that executes all the client side processing; additional to the actual SocketClientThread which did that earlier. SCT will only handle the reading from Socket and push incoming messages to a queue and return back to listening on the socket. This way, it should be able to read all data in time so that no data pile up, and reply to ping requests almost instantly. ClientThread gets most of messages to parse already via a queue. Should also sending use a queue, and/or, the sending methods be inside ClientThread, and SocketClientThread merely provide the sendToServer method (which could be implemented differently e.g. in a "send via queue, instead of via socket", for local clients)?- Author:
- Clemens Katzer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classClientThread.ServerEvent
-
Field Summary
Fields Modifier and Type Field Description private Clientclientprivate booleandoneprivate static ClientThread.ServerEventEND_EVENTprivate booleanLOG_PROCESSING_TIMESprivate static java.util.logging.LoggerLOGGERprivate java.util.concurrent.LinkedBlockingQueue<ClientThread.ServerEvent>queueprivate intthreadNrprivate static intthreadNumberCounter
-
Constructor Summary
Constructors Constructor Description ClientThread(Client client)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidappendToConnectionLog(java.lang.String s)private voidcallMethod(java.lang.String method, java.util.List<java.lang.String> args)voiddisposeClient()voiddisposeQueue()voidenqueue(java.lang.String method, java.util.List<java.lang.String> args)java.lang.StringgetNameMaybe()static longgetNow()intgetQueueLen()intgetThreadNumber()private static intnextThreadNumber()voidnotifyThatNotConnected()voidnotifyUserIfGameIsPaused(java.lang.String message)private BattleHexresolveBattleHex(java.lang.String hexLabel)private CreatureTyperesolveCreatureType(java.lang.String creatureName)private java.util.List<CreatureType>resolveCreatureTypes(java.lang.String nameList)private MasterHexresolveHex(java.lang.String label)private LegionresolveLegion(java.lang.String markerId)voidrun()voidsetClosedByServer()-
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
-
-
-
-
Field Detail
-
LOGGER
private static final java.util.logging.Logger LOGGER
-
threadNumberCounter
private static int threadNumberCounter
-
threadNr
private final int threadNr
-
client
private final Client client
-
queue
private final java.util.concurrent.LinkedBlockingQueue<ClientThread.ServerEvent> queue
-
done
private boolean done
-
LOG_PROCESSING_TIMES
private final boolean LOG_PROCESSING_TIMES
- See Also:
- Constant Field Values
-
END_EVENT
private static final ClientThread.ServerEvent END_EVENT
-
-
Constructor Detail
-
ClientThread
public ClientThread(Client client)
-
-
Method Detail
-
nextThreadNumber
private static int nextThreadNumber()
-
getThreadNumber
public int getThreadNumber()
-
enqueue
public void enqueue(java.lang.String method, java.util.List<java.lang.String> args)
-
getQueueLen
public int getQueueLen()
-
disposeQueue
public void disposeQueue()
-
disposeClient
public void disposeClient()
-
setClosedByServer
public void setClosedByServer()
-
getNameMaybe
public java.lang.String getNameMaybe()
-
run
public void run()
- Specified by:
runin interfacejava.lang.Runnable- Overrides:
runin classjava.lang.Thread
-
notifyUserIfGameIsPaused
public void notifyUserIfGameIsPaused(java.lang.String message)
-
notifyThatNotConnected
public void notifyThatNotConnected()
-
appendToConnectionLog
public void appendToConnectionLog(java.lang.String s)
-
callMethod
private void callMethod(java.lang.String method, java.util.List<java.lang.String> args)
-
resolveHex
private MasterHex resolveHex(java.lang.String label)
-
resolveBattleHex
private BattleHex resolveBattleHex(java.lang.String hexLabel)
-
resolveCreatureTypes
private java.util.List<CreatureType> resolveCreatureTypes(java.lang.String nameList)
-
resolveCreatureType
private CreatureType resolveCreatureType(java.lang.String creatureName)
-
resolveLegion
private Legion resolveLegion(java.lang.String markerId)
-
getNow
public static long getNow()
-
-