final class SocketClientThread extends java.lang.Thread implements IServer, IServerConnection
| Modifier and Type | Field and Description |
|---|---|
private boolean |
abandoned |
private ClientThread |
clientThread |
private ClientThread |
disposedClientThread |
private boolean |
goingDown |
private java.lang.String |
host
Those are stored at the moment only to be able to reconnect
|
private java.io.BufferedReader |
in |
private java.lang.String |
initialLine |
private boolean |
isWaiting |
private java.lang.Object |
isWaitingLock |
private static java.util.logging.Logger |
LOGGER |
private java.io.PrintWriter |
out |
private int |
ownMessageCounter |
private java.lang.String |
playerName |
private int |
port |
private java.util.Collection<java.lang.String> |
preliminaryPlayerNames |
private java.lang.String |
reasonFail |
private boolean |
remote |
private boolean |
selfInterrupted |
private static java.lang.String |
sep |
private boolean |
serverReceiveTimedout |
private java.net.Socket |
socket |
private java.lang.String |
variantNameForInit |
CLIENT_VERSION, CLIENT_VERSION_CAN_RECONNECT, CLIENT_VERSION_UNDERSTANDS_PING, MINIMUM_CLIENT_VERSION| Constructor and Description |
|---|
SocketClientThread(java.lang.String host,
int port,
java.lang.String initialName,
boolean isRemote) |
| Modifier and Type | Method and Description |
|---|---|
int |
abandonAndGetMessageCounter() |
void |
acquireAngel(Legion legion,
CreatureType angelType) |
void |
appendToConnectionLog(java.lang.String s) |
void |
applyCarries(BattleHex hex) |
void |
assignColor(PlayerColor color) |
void |
assignFirstMarker(java.lang.String markerId) |
void |
assignStrikePenalty(java.lang.String prompt) |
private void |
callMethod(java.lang.String method,
java.util.List<java.lang.String> args) |
void |
checkServerConnection() |
private void |
cleanupSocket() |
void |
clientConfirmedCatchup() |
void |
concede(Legion legion) |
static SocketClientThread |
createConnection(java.lang.String host,
int port,
java.lang.String playerName,
boolean remote) |
void |
doBattleMove(int tag,
BattleHex hex) |
void |
doMove(Legion legion,
MasterHex hex,
EntrySide entrySide,
boolean teleport,
CreatureType teleportingLord) |
void |
doneWithBattleMoves() |
void |
doneWithEngagements() |
void |
doneWithMoves() |
void |
doneWithRecruits() |
void |
doneWithSplits() |
void |
doneWithStrikes() |
void |
doNotConcede(Legion legion) |
void |
doNotFlee(Legion legion) |
void |
doRecruit(Recruitment event) |
void |
doSplit(Legion parent,
java.lang.String childMarker,
java.util.List<CreatureType> creaturesToSplit)
Executes a split of certain creatures from a legion.
|
void |
doSummon(Summoning event)
Handles a summon event
|
void |
enforcedConnectionException() |
void |
engage(MasterHex hex) |
void |
fight(MasterHex hex) |
void |
flee(Legion legion) |
int |
getDisposedQueueLen() |
IServer |
getIServer() |
private java.lang.String |
getNameMaybe() |
java.util.Collection<java.lang.String> |
getPreliminaryPlayerNames() |
java.lang.String |
getReasonFail() |
java.lang.String |
getVariantNameForInit() |
void |
interrupt() |
boolean |
isAlreadyDown() |
void |
joinGame(java.lang.String playerName) |
void |
leaveCarryMode() |
void |
loadGame(java.lang.String filename) |
void |
makeProposal(java.lang.String proposalString) |
void |
mulligan() |
void |
newGame() |
private void |
parseLine(java.lang.String s) |
private void |
readAndParseUntilDone() |
protected static SocketClientThread |
recreateConnection(IServerConnection prevConnection) |
void |
replyToPing() |
private void |
requestGameInfo() |
void |
requestSyncDelta(int msgNr,
int syncCounter) |
void |
run() |
void |
saveGame(java.lang.String filename) |
void |
sendDisconnect() |
private void |
sendToServer(java.lang.String message) |
void |
setClient(Client client) |
private void |
setWaiting(boolean val) |
private void |
signOn(java.lang.String loginName,
boolean isRemote,
int version,
java.lang.String buildInfo) |
void |
startThread() |
void |
stopGame() |
void |
stopSocketClientThread(boolean sendConnect)
Client originates the dispose:
If done because all is over, player chose close etc, send also a
disconnect so that server knows client is "gone".
|
void |
strike(int tag,
BattleHex hex) |
void |
undoBattleMove(BattleHex hex) |
void |
undoMove(Legion legion) |
void |
undoRecruit(Legion legion) |
void |
undoSplit(Legion splitoff) |
void |
updateThreadName(java.lang.String playerName)
Set the thread name to playerName
|
private java.lang.String |
waitForLine() |
void |
waitForPrompt() |
void |
withdrawFromGame() |
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yieldprivate static final java.util.logging.Logger LOGGER
private ClientThread clientThread
private ClientThread disposedClientThread
private java.net.Socket socket
private java.io.BufferedReader in
private java.io.PrintWriter out
private boolean goingDown
private boolean selfInterrupted
private boolean serverReceiveTimedout
private java.lang.String host
private int port
private java.lang.String playerName
private boolean remote
private static final java.lang.String sep
private java.lang.String reasonFail
private java.lang.String initialLine
private java.lang.String variantNameForInit
private java.util.Collection<java.lang.String> preliminaryPlayerNames
private final java.lang.Object isWaitingLock
private boolean isWaiting
private int ownMessageCounter
private boolean abandoned
SocketClientThread(java.lang.String host,
int port,
java.lang.String initialName,
boolean isRemote)
public static SocketClientThread createConnection(java.lang.String host, int port, java.lang.String playerName, boolean remote) throws Client.ConnectionInitException
Client.ConnectionInitExceptionprotected static SocketClientThread recreateConnection(IServerConnection prevConnection) throws Client.ConnectionInitException
Client.ConnectionInitExceptionpublic void waitForPrompt()
throws java.net.SocketTimeoutException,
java.net.SocketException,
java.io.IOException
java.net.SocketTimeoutExceptionjava.net.SocketExceptionjava.io.IOExceptionpublic java.lang.String getReasonFail()
getReasonFail in interface IServerConnectionpublic void appendToConnectionLog(java.lang.String s)
public java.lang.String getVariantNameForInit()
getVariantNameForInit in interface IServerConnectionpublic java.util.Collection<java.lang.String> getPreliminaryPlayerNames()
getPreliminaryPlayerNames in interface IServerConnectionpublic IServer getIServer()
getIServer in interface IServerConnectionpublic void setClient(Client client)
setClient in interface IServerConnectionpublic int getDisposedQueueLen()
getDisposedQueueLen in interface IServerConnectionpublic void startThread()
startThread in interface IServerConnectionpublic void run()
run in interface java.lang.Runnablerun in class java.lang.Threadprivate void readAndParseUntilDone()
private void setWaiting(boolean val)
private java.lang.String waitForLine()
public boolean isAlreadyDown()
isAlreadyDown in interface IServerConnectionprivate void cleanupSocket()
public void interrupt()
interrupt in class java.lang.Threadpublic void stopSocketClientThread(boolean sendConnect)
stopSocketClientThread in interface IServerConnectionsendConnect - If true, sends a disconnect message to serverpublic int abandonAndGetMessageCounter()
abandonAndGetMessageCounter in interface IServerConnectionprivate void parseLine(java.lang.String s)
private void callMethod(java.lang.String method,
java.util.List<java.lang.String> args)
private java.lang.String getNameMaybe()
private void sendToServer(java.lang.String message)
private void signOn(java.lang.String loginName,
boolean isRemote,
int version,
java.lang.String buildInfo)
private void requestGameInfo()
public void updateThreadName(java.lang.String playerName)
updateThreadName in interface IServerConnectionpublic void leaveCarryMode()
leaveCarryMode in interface IServerpublic void doneWithBattleMoves()
doneWithBattleMoves in interface IServerpublic void doneWithStrikes()
doneWithStrikes in interface IServerpublic void acquireAngel(Legion legion, CreatureType angelType)
acquireAngel in interface IServerpublic void doSummon(Summoning event)
IServerpublic void doRecruit(Recruitment event)
public void doNotConcede(Legion legion)
doNotConcede in interface IServerpublic void makeProposal(java.lang.String proposalString)
makeProposal in interface IServerpublic void doBattleMove(int tag,
BattleHex hex)
doBattleMove in interface IServerpublic void applyCarries(BattleHex hex)
applyCarries in interface IServerpublic void undoBattleMove(BattleHex hex)
undoBattleMove in interface IServerpublic void assignStrikePenalty(java.lang.String prompt)
assignStrikePenalty in interface IServerpublic void undoRecruit(Legion legion)
undoRecruit in interface IServerpublic void doneWithSplits()
doneWithSplits in interface IServerpublic void doneWithMoves()
doneWithMoves in interface IServerpublic void doneWithEngagements()
doneWithEngagements in interface IServerpublic void doneWithRecruits()
doneWithRecruits in interface IServerpublic void withdrawFromGame()
withdrawFromGame in interface IServerpublic void sendDisconnect()
sendDisconnect in interface IServerpublic void doSplit(Legion parent, java.lang.String childMarker, java.util.List<CreatureType> creaturesToSplit)
IServerpublic void doMove(Legion legion, MasterHex hex, EntrySide entrySide, boolean teleport, CreatureType teleportingLord)
public void assignColor(PlayerColor color)
assignColor in interface IServerpublic void assignFirstMarker(java.lang.String markerId)
assignFirstMarker in interface IServerpublic void loadGame(java.lang.String filename)
public void saveGame(java.lang.String filename)
public void checkServerConnection()
checkServerConnection in interface IServerpublic void clientConfirmedCatchup()
clientConfirmedCatchup in interface IServerpublic void joinGame(java.lang.String playerName)
public void requestSyncDelta(int msgNr,
int syncCounter)
requestSyncDelta in interface IServerConnectionpublic void replyToPing()
public void enforcedConnectionException()
enforcedConnectionException in interface IServerConnection