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, yield
private 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.ConnectionInitException
protected static SocketClientThread recreateConnection(IServerConnection prevConnection) throws Client.ConnectionInitException
Client.ConnectionInitException
public void waitForPrompt() throws java.net.SocketTimeoutException, java.net.SocketException, java.io.IOException
java.net.SocketTimeoutException
java.net.SocketException
java.io.IOException
public java.lang.String getReasonFail()
getReasonFail
in interface IServerConnection
public void appendToConnectionLog(java.lang.String s)
public java.lang.String getVariantNameForInit()
getVariantNameForInit
in interface IServerConnection
public java.util.Collection<java.lang.String> getPreliminaryPlayerNames()
getPreliminaryPlayerNames
in interface IServerConnection
public IServer getIServer()
getIServer
in interface IServerConnection
public void setClient(Client client)
setClient
in interface IServerConnection
public int getDisposedQueueLen()
getDisposedQueueLen
in interface IServerConnection
public void startThread()
startThread
in interface IServerConnection
public void run()
run
in interface java.lang.Runnable
run
in class java.lang.Thread
private void readAndParseUntilDone()
private void setWaiting(boolean val)
private java.lang.String waitForLine()
public boolean isAlreadyDown()
isAlreadyDown
in interface IServerConnection
private void cleanupSocket()
public void interrupt()
interrupt
in class java.lang.Thread
public void stopSocketClientThread(boolean sendConnect)
stopSocketClientThread
in interface IServerConnection
sendConnect
- If true, sends a disconnect message to serverpublic int abandonAndGetMessageCounter()
abandonAndGetMessageCounter
in interface IServerConnection
private 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 IServerConnection
public void leaveCarryMode()
leaveCarryMode
in interface IServer
public void doneWithBattleMoves()
doneWithBattleMoves
in interface IServer
public void doneWithStrikes()
doneWithStrikes
in interface IServer
public void acquireAngel(Legion legion, CreatureType angelType)
acquireAngel
in interface IServer
public void doSummon(Summoning event)
IServer
public void doRecruit(Recruitment event)
public void doNotConcede(Legion legion)
doNotConcede
in interface IServer
public void makeProposal(java.lang.String proposalString)
makeProposal
in interface IServer
public void doBattleMove(int tag, BattleHex hex)
doBattleMove
in interface IServer
public void applyCarries(BattleHex hex)
applyCarries
in interface IServer
public void undoBattleMove(BattleHex hex)
undoBattleMove
in interface IServer
public void assignStrikePenalty(java.lang.String prompt)
assignStrikePenalty
in interface IServer
public void undoRecruit(Legion legion)
undoRecruit
in interface IServer
public void doneWithSplits()
doneWithSplits
in interface IServer
public void doneWithMoves()
doneWithMoves
in interface IServer
public void doneWithEngagements()
doneWithEngagements
in interface IServer
public void doneWithRecruits()
doneWithRecruits
in interface IServer
public void withdrawFromGame()
withdrawFromGame
in interface IServer
public void sendDisconnect()
sendDisconnect
in interface IServer
public void doSplit(Legion parent, java.lang.String childMarker, java.util.List<CreatureType> creaturesToSplit)
IServer
public void doMove(Legion legion, MasterHex hex, EntrySide entrySide, boolean teleport, CreatureType teleportingLord)
public void assignColor(PlayerColor color)
assignColor
in interface IServer
public void assignFirstMarker(java.lang.String markerId)
assignFirstMarker
in interface IServer
public void loadGame(java.lang.String filename)
public void saveGame(java.lang.String filename)
public void checkServerConnection()
checkServerConnection
in interface IServer
public void clientConfirmedCatchup()
clientConfirmedCatchup
in interface IServer
public void joinGame(java.lang.String playerName)
public void requestSyncDelta(int msgNr, int syncCounter)
requestSyncDelta
in interface IServerConnection
public void replyToPing()
public void enforcedConnectionException()
enforcedConnectionException
in interface IServerConnection