|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.sf.colossus.webserver.WebServer
public class WebServer
The main class for the WebServer - brings up the WebServer GUI - starts the ServerSocket and listens there for WebClients - based on actions coming from clients, keeps book of "instant" and "running" games (both GameInfo objects), and tell the GameInfo objects when to start the game.
Nested Class Summary | |
---|---|
(package private) class |
WebServer.GameThreadReaper
Check whether any game executed in an own process has been finished. |
private static class |
WebServer.NullWebServerGUI
A Null Object for the web server GUI interface. |
Field Summary | |
---|---|
private java.util.ArrayList<GameInfo> |
endingGames
|
private ChatChannel |
generalChat
|
private IWebServerGUI |
gui
|
private static java.util.logging.Logger |
LOGGER
|
private static java.util.ArrayList<java.lang.String> |
loginMessage
|
private IColossusMail |
mailObject
|
private int |
maxClients
|
private static int |
MIN_FREE_GAME_PORTS
|
private WebServerOptions |
options
|
private PortBookKeeper |
portBookKeeper
|
private java.util.HashMap<java.lang.String,GameInfo> |
proposedGames
|
private java.lang.String |
proposedGamesFilename
|
private boolean |
proposedGamesListModified
|
private boolean |
runGUI
Controls whether the GUI is shown or not. |
private java.util.ArrayList<GameInfo> |
runningGames
|
private static java.lang.String |
sep
|
private int |
serverPort
Server port where we listen for WebClient connections |
private java.net.ServerSocket |
serverSocket
Server actual socket where we listen for WebClient connections |
private boolean |
shutdownRequested
|
private ClientWatchDog |
watchDog
|
Fields inherited from interface net.sf.colossus.webcommon.IWebServer |
---|
Cancel, ChangePassword, ChatSubmit, ConfirmRegistration, Echo, Enroll, generalChatName, LocallyGameOver, Login, Logout, PingResponse, Propose, RegisterUser, RequestUserAttention, RereadLoginMessage, ShutdownServer, Start, StartAtPlayer, StartedByPlayer, Unenroll, WebProtocolSeparator |
Constructor Summary | |
---|---|
WebServer(java.lang.String optionsFile)
|
Method Summary | |
---|---|
void |
allTellGameInfo(GameInfo gi)
|
void |
allTellUserCounts()
|
private void |
attemptStartOnServer(GameInfo gi,
User byUser)
|
void |
cancelGame(java.lang.String gameId,
java.lang.String byUser)
|
void |
cancelIfNecessary(User user)
|
java.lang.String |
changeProperties(java.lang.String username,
java.lang.String oldPW,
java.lang.String newPW,
java.lang.String email,
java.lang.Boolean isAdminObj)
|
void |
chatSubmit(java.lang.String chatId,
java.lang.String sender,
java.lang.String message)
|
private void |
closeAllWscst()
|
java.lang.String |
confirmRegistration(java.lang.String username,
java.lang.String confirmationCode)
|
private int |
countProposedGames(boolean shallBeScheduled)
|
private void |
doReadGamesFromFile()
|
private void |
doReadLoginMessage()
|
private void |
doReadUsersFromFile()
|
void |
enrollUserToGame(java.lang.String gameId,
java.lang.String username)
|
private GameInfo |
findByGameId(java.lang.String gameId)
|
private GameInfo |
findFromRunningGames(java.lang.String gameId)
|
void |
gameFailed(GameInfo gi,
java.lang.String reason)
|
void |
gameStarted(GameInfo gi)
|
private IGameRunner |
getGameOnServer(GameInfo gi)
|
private int |
getMaximumGameIdFromFiles()
|
(package private) java.lang.String |
getPlayerName()
Each user server thread's name is set to it user's name. |
PortBookKeeper |
getPortBookKeeper()
|
java.lang.String |
getStringOption(java.lang.String key)
|
private void |
handlePing(java.lang.String sender,
java.lang.String pingCommand)
|
private void |
handlePingQuotedName(java.lang.String sender,
java.lang.String pingCommand)
|
void |
informAllEnrolledThatStartFailed(GameInfo gi,
java.lang.String reason,
User byUser)
|
void |
informLocallyGameOver(java.lang.String gameId)
|
private void |
informPingFailed(java.lang.String sender,
java.lang.String failMessage)
|
void |
informStartedByPlayer(java.lang.String gameId)
|
void |
initiateShutdown(java.lang.String byUserName)
|
void |
logout()
|
static void |
main(java.lang.String[] args)
|
void |
makeDummyConnection()
|
GameInfo |
proposeGame(java.lang.String initiator,
java.lang.String variant,
java.lang.String viewmode,
long startAt,
int duration,
java.lang.String summary,
java.lang.String expire,
boolean unlimitedMulligans,
boolean balancedTowers,
int min,
int target,
int max)
|
private void |
readGamesFromFile(java.lang.String filename,
java.util.HashMap<java.lang.String,GameInfo> proposedGames)
|
private void |
readLoginMessageFromFile(java.lang.String filename)
|
void |
reEnrollIfNecessary(WebServerClientSocketThread newCst)
|
java.lang.String |
registerUser(java.lang.String username,
java.lang.String password,
java.lang.String email)
|
void |
requestUserAttention(long when,
java.lang.String sender,
boolean isAdmin,
java.lang.String recipient,
java.lang.String message,
int beepCount,
long beepInterval,
boolean windows)
|
void |
rereadLoginMessage()
Triggered by remode admin connection |
(package private) void |
runSocketServer()
|
void |
saveGamesIfNeeded()
|
void |
sendMessageOfTheDayToOne(WebServerClientSocketThread cst,
java.lang.String chatId)
|
void |
sendOldVersionWarningToOne(WebServerClientSocketThread cst,
java.lang.String userName,
java.lang.String chatId)
|
void |
shutdownServer()
|
void |
startGame(java.lang.String gameId,
User byUser)
|
void |
startGameOnPlayerHost(java.lang.String gameId,
java.lang.String hostingPlayer,
java.lang.String playerHost,
int port)
A game was started by a WebClient user locally on his computer and is ready to accept the other players as remote client; so we notify them and tell them host and port to where to connect. |
private java.lang.String |
startOneGame(GameInfo gi)
|
private void |
storeGamesToFile(java.lang.String filename)
|
void |
tellAllGamesFromListToOne(WebServerClientSocketThread cst,
java.util.ArrayList<GameInfo> games)
|
void |
tellAllProposedGamesToOne(WebServerClientSocketThread cst)
|
void |
tellAllRunningGamesToOne(WebServerClientSocketThread cst)
|
void |
tellEnrolledGameStartsNow(GameInfo gi,
java.lang.String host,
int port)
|
void |
tellEnrolledGameStartsSoon(GameInfo gi)
|
void |
tellLastChatMessagesToOne(WebServerClientSocketThread cst,
java.lang.String chatId)
|
void |
unenrollUserFromGame(java.lang.String gameId,
java.lang.String username)
|
void |
unregisterGame(GameInfo gi,
int port)
unregister a game from runningGames (or proposedGames), and keep in endingGames until it's reaped |
void |
unregisterGamePlayerPC(GameInfo gi)
unregister a game (run on player's PC) from runningGames, keep in endingGames until it's reaped |
void |
updateGUI()
|
void |
updateUserCounts()
|
private boolean |
waitForUser()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final java.util.logging.Logger LOGGER
private WebServerOptions options
private PortBookKeeper portBookKeeper
private IWebServerGUI gui
private final IColossusMail mailObject
private static final int MIN_FREE_GAME_PORTS
private static final java.util.ArrayList<java.lang.String> loginMessage
private final boolean runGUI
private boolean shutdownRequested
private java.lang.String proposedGamesFilename
private boolean proposedGamesListModified
private final int maxClients
private final java.util.HashMap<java.lang.String,GameInfo> proposedGames
private final java.util.ArrayList<GameInfo> runningGames
private final java.util.ArrayList<GameInfo> endingGames
private static final java.lang.String sep
private final int serverPort
private java.net.ServerSocket serverSocket
private final ChatChannel generalChat
private final ClientWatchDog watchDog
Constructor Detail |
---|
public WebServer(java.lang.String optionsFile)
Method Detail |
---|
public static void main(java.lang.String[] args)
private void doReadGamesFromFile()
private void doReadUsersFromFile()
private void doReadLoginMessage()
public void rereadLoginMessage()
void runSocketServer()
public void initiateShutdown(java.lang.String byUserName)
public void shutdownServer()
shutdownServer
in interface IWebServer
public void makeDummyConnection()
private boolean waitForUser()
private void closeAllWscst()
java.lang.String getPlayerName()
public PortBookKeeper getPortBookKeeper()
public void updateGUI()
public GameInfo proposeGame(java.lang.String initiator, java.lang.String variant, java.lang.String viewmode, long startAt, int duration, java.lang.String summary, java.lang.String expire, boolean unlimitedMulligans, boolean balancedTowers, int min, int target, int max)
proposeGame
in interface IWebServer
public void cancelIfNecessary(User user)
public void reEnrollIfNecessary(WebServerClientSocketThread newCst)
public void tellAllGamesFromListToOne(WebServerClientSocketThread cst, java.util.ArrayList<GameInfo> games)
public void tellAllProposedGamesToOne(WebServerClientSocketThread cst)
public void tellAllRunningGamesToOne(WebServerClientSocketThread cst)
public void allTellGameInfo(GameInfo gi)
allTellGameInfo
in interface IRunWebServer
public void tellEnrolledGameStartsSoon(GameInfo gi)
tellEnrolledGameStartsSoon
in interface IRunWebServer
public void tellEnrolledGameStartsNow(GameInfo gi, java.lang.String host, int port)
tellEnrolledGameStartsNow
in interface IRunWebServer
public void gameStarted(GameInfo gi)
gameStarted
in interface IRunWebServer
public void gameFailed(GameInfo gi, java.lang.String reason)
gameFailed
in interface IRunWebServer
public void enrollUserToGame(java.lang.String gameId, java.lang.String username)
enrollUserToGame
in interface IWebServer
public void unenrollUserFromGame(java.lang.String gameId, java.lang.String username)
unenrollUserFromGame
in interface IWebServer
public void cancelGame(java.lang.String gameId, java.lang.String byUser)
cancelGame
in interface IWebServer
public void startGame(java.lang.String gameId, User byUser)
startGame
in interface IWebServer
private void attemptStartOnServer(GameInfo gi, User byUser)
public void startGameOnPlayerHost(java.lang.String gameId, java.lang.String hostingPlayer, java.lang.String playerHost, int port)
startGameOnPlayerHost
in interface IWebServer
public void informStartedByPlayer(java.lang.String gameId)
informStartedByPlayer
in interface IWebServer
public void informAllEnrolledThatStartFailed(GameInfo gi, java.lang.String reason, User byUser)
public void requestUserAttention(long when, java.lang.String sender, boolean isAdmin, java.lang.String recipient, java.lang.String message, int beepCount, long beepInterval, boolean windows)
requestUserAttention
in interface IWebServer
private void informPingFailed(java.lang.String sender, java.lang.String failMessage)
public void informLocallyGameOver(java.lang.String gameId)
informLocallyGameOver
in interface IWebServer
public void updateUserCounts()
public void allTellUserCounts()
public void chatSubmit(java.lang.String chatId, java.lang.String sender, java.lang.String message)
chatSubmit
in interface IWebServer
private void handlePingQuotedName(java.lang.String sender, java.lang.String pingCommand)
private void handlePing(java.lang.String sender, java.lang.String pingCommand)
public void tellLastChatMessagesToOne(WebServerClientSocketThread cst, java.lang.String chatId)
public void sendMessageOfTheDayToOne(WebServerClientSocketThread cst, java.lang.String chatId)
public void sendOldVersionWarningToOne(WebServerClientSocketThread cst, java.lang.String userName, java.lang.String chatId)
private void readLoginMessageFromFile(java.lang.String filename)
public void logout()
logout
in interface IWebServer
public java.lang.String registerUser(java.lang.String username, java.lang.String password, java.lang.String email)
public java.lang.String confirmRegistration(java.lang.String username, java.lang.String confirmationCode)
public java.lang.String changeProperties(java.lang.String username, java.lang.String oldPW, java.lang.String newPW, java.lang.String email, java.lang.Boolean isAdminObj)
changeProperties
in interface IWebServer
private int countProposedGames(boolean shallBeScheduled)
private GameInfo findByGameId(java.lang.String gameId)
private GameInfo findFromRunningGames(java.lang.String gameId)
private IGameRunner getGameOnServer(GameInfo gi)
private java.lang.String startOneGame(GameInfo gi)
public void unregisterGame(GameInfo gi, int port)
unregisterGame
in interface IRunWebServer
public void unregisterGamePlayerPC(GameInfo gi)
private void readGamesFromFile(java.lang.String filename, java.util.HashMap<java.lang.String,GameInfo> proposedGames)
public void saveGamesIfNeeded()
private void storeGamesToFile(java.lang.String filename)
public java.lang.String getStringOption(java.lang.String key)
private int getMaximumGameIdFromFiles()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |