public class RunGameInOwnJVM extends java.lang.Thread implements IGameRunner
Modifier and Type | Class and Description |
---|---|
private static class |
RunGameInOwnJVM.NullDumper
NullDumper is a dummy reader that just consumes all the output
produced by a Game's process - similar to /dev/null.
|
Modifier and Type | Field and Description |
---|---|
private boolean |
alreadyStarted |
private java.lang.String |
colossusJar |
private java.io.File |
flagFile |
private java.lang.String |
gameId |
private GameInfo |
gi |
private java.lang.String |
hostingHost |
private int |
hostingPort |
private java.lang.String |
javaCommand |
private static java.util.logging.Logger |
LOGGER |
private WebServerOptions |
options |
private java.lang.String |
reasonStartFailed |
private IRunWebServer |
server |
private java.lang.String |
template |
private java.lang.String |
workFilesBaseDir |
Constructor and Description |
---|
RunGameInOwnJVM(IRunWebServer server,
WebServerOptions options,
GameInfo gi) |
Modifier and Type | Method and Description |
---|---|
private boolean |
createLoggingPropertiesFromTemplate(java.io.File logPropTemplate,
java.io.File logPropFile) |
private boolean |
createServerCfgFile(java.io.File gameDir) |
java.lang.String |
getHostingHost() |
int |
getHostingPort() |
private java.lang.String |
getMissingPlayers(java.util.List<java.lang.String> names) |
java.lang.String |
getReasonStartFailed() |
private boolean |
isSocketUp() |
java.lang.String |
listAsString(java.util.List<java.lang.String> names) |
boolean |
makeRunningGame() |
void |
run() |
private void |
runInOwnJVM() |
private void |
sleepFor(long millis) |
private void |
superviseGameStartup() |
boolean |
tryToStart() |
private void |
waitForGameShutdown(java.lang.Process p,
RunGameInOwnJVM.NullDumper ndout,
RunGameInOwnJVM.NullDumper nderr) |
private java.lang.String |
waitForLine(java.io.BufferedReader in,
int checkInterval) |
boolean |
waitUntilGameStartedSuccessfully(int timeout) |
boolean |
waitUntilReadyToAcceptClients(int timeout)
Waits until socket is up, i.e.
|
activeCount, checkAccess, clone, 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
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
start
private static final java.util.logging.Logger LOGGER
private int hostingPort
private java.lang.String hostingHost
private final IRunWebServer server
private final WebServerOptions options
private final GameInfo gi
private final java.lang.String gameId
private java.lang.String workFilesBaseDir
private java.lang.String template
private java.lang.String javaCommand
private java.lang.String colossusJar
private java.io.File flagFile
private boolean alreadyStarted
private java.lang.String reasonStartFailed
public RunGameInOwnJVM(IRunWebServer server, WebServerOptions options, GameInfo gi)
public boolean makeRunningGame()
makeRunningGame
in interface IGameRunner
public int getHostingPort()
getHostingPort
in interface IGameRunner
public java.lang.String getHostingHost()
getHostingHost
in interface IGameRunner
public java.lang.String getReasonStartFailed()
public boolean tryToStart()
tryToStart
in interface IGameRunner
public void run()
run
in interface java.lang.Runnable
run
in class java.lang.Thread
private void runInOwnJVM()
private boolean createServerCfgFile(java.io.File gameDir)
private boolean createLoggingPropertiesFromTemplate(java.io.File logPropTemplate, java.io.File logPropFile)
private void superviseGameStartup()
private void waitForGameShutdown(java.lang.Process p, RunGameInOwnJVM.NullDumper ndout, RunGameInOwnJVM.NullDumper nderr)
private boolean isSocketUp()
public boolean waitUntilReadyToAcceptClients(int timeout)
IGameRunner
waitUntilReadyToAcceptClients
in interface IGameRunner
private java.lang.String waitForLine(java.io.BufferedReader in, int checkInterval)
private java.lang.String getMissingPlayers(java.util.List<java.lang.String> names)
public java.lang.String listAsString(java.util.List<java.lang.String> names)
public boolean waitUntilGameStartedSuccessfully(int timeout)
waitUntilGameStartedSuccessfully
in interface IGameRunner
private void sleepFor(long millis)