net.sf.colossus.webserver
Class WebServer
java.lang.Object
net.sf.colossus.webserver.WebServer
- All Implemented Interfaces:
- IRunWebServer, IWebServer
public class WebServer
- extends java.lang.Object
- implements IWebServer, IRunWebServer
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.
- Author:
- Clemens Katzer
Fields inherited from interface net.sf.colossus.webcommon.IWebServer |
Cancel, ChangePassword, ChatSubmit, ConfirmRegistration, Echo, Enroll, generalChatName, LocallyGameOver, Login, Logout, Propose, RegisterUser, ShutdownServer, Start, StartAtPlayer, StartedByPlayer, Unenroll, WebProtocolSeparator |
Constructor Summary |
WebServer(java.lang.String optionsFile)
|
Method Summary |
void |
allTellGameInfo(GameInfo gi)
|
void |
allTellUserCounts()
|
void |
cancelGame(java.lang.String gameId,
java.lang.String byUser)
|
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)
|
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)
|
private IGameRunner |
getGameOnServer(GameInfo gi)
|
(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)
|
void |
informLocallyGameOver(java.lang.String gameId)
|
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)
|
void |
reEnrollIfNecessary(WebServerClientSocketThread newCst)
|
java.lang.String |
registerUser(java.lang.String username,
java.lang.String password,
java.lang.String email)
|
(package private) void |
runSocketServer()
|
void |
saveGamesIfNeeded()
|
void |
shutdownServer()
|
void |
startGame(java.lang.String gameId)
|
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 boolean |
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 |
tellEnrolledGameStarted(GameInfo gi)
|
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 st,
int port)
|
void |
unregisterGamePlayerPC(GameInfo gi)
|
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 |
LOGGER
private static final java.util.logging.Logger LOGGER
options
private WebServerOptions options
portBookKeeper
private PortBookKeeper portBookKeeper
gui
private IWebServerGUI gui
mailObject
private final IColossusMail mailObject
runGUI
private final boolean runGUI
- Controls whether the GUI is shown or not.
At the moment this is configured only by the possibility of doing so:
if the environment supports running a GUI, we will, if not, we won't.
It could be combined with a command line option to suppress the GUI
even if it would be possible to show one.
shutdownRequested
private boolean shutdownRequested
proposedGamesFilename
private java.lang.String proposedGamesFilename
proposedGamesListModified
private boolean proposedGamesListModified
maxClients
private final int maxClients
proposedGames
private final java.util.HashMap<java.lang.String,GameInfo> proposedGames
runningGames
private final java.util.ArrayList<GameInfo> runningGames
endingGames
private final java.util.ArrayList<GameInfo> endingGames
sep
private static final java.lang.String sep
- See Also:
- Constant Field Values
port
private final int port
serverSocket
private java.net.ServerSocket serverSocket
generalChat
private final ChatChannel generalChat
WebServer
public WebServer(java.lang.String optionsFile)
main
public static void main(java.lang.String[] args)
runSocketServer
void runSocketServer()
initiateShutdown
public void initiateShutdown(java.lang.String byUserName)
shutdownServer
public void shutdownServer()
- Specified by:
shutdownServer
in interface IWebServer
makeDummyConnection
public void makeDummyConnection()
waitForUser
private boolean waitForUser()
closeAllWscst
private void closeAllWscst()
getPlayerName
java.lang.String getPlayerName()
- Each user server thread's name is set to it user's name.
getPortBookKeeper
public PortBookKeeper getPortBookKeeper()
updateGUI
public void updateGUI()
proposeGame
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)
- Specified by:
proposeGame
in interface IWebServer
reEnrollIfNecessary
public void reEnrollIfNecessary(WebServerClientSocketThread newCst)
tellAllGamesFromListToOne
public void tellAllGamesFromListToOne(WebServerClientSocketThread cst,
java.util.ArrayList<GameInfo> games)
tellAllProposedGamesToOne
public void tellAllProposedGamesToOne(WebServerClientSocketThread cst)
tellAllRunningGamesToOne
public void tellAllRunningGamesToOne(WebServerClientSocketThread cst)
allTellGameInfo
public void allTellGameInfo(GameInfo gi)
- Specified by:
allTellGameInfo
in interface IRunWebServer
tellEnrolledGameStartsSoon
public void tellEnrolledGameStartsSoon(GameInfo gi)
- Specified by:
tellEnrolledGameStartsSoon
in interface IRunWebServer
tellEnrolledGameStartsNow
public void tellEnrolledGameStartsNow(GameInfo gi,
java.lang.String host,
int port)
- Specified by:
tellEnrolledGameStartsNow
in interface IRunWebServer
tellEnrolledGameStarted
public void tellEnrolledGameStarted(GameInfo gi)
- Specified by:
tellEnrolledGameStarted
in interface IRunWebServer
gameFailed
public void gameFailed(GameInfo gi,
java.lang.String reason)
- Specified by:
gameFailed
in interface IRunWebServer
enrollUserToGame
public void enrollUserToGame(java.lang.String gameId,
java.lang.String username)
- Specified by:
enrollUserToGame
in interface IWebServer
unenrollUserFromGame
public void unenrollUserFromGame(java.lang.String gameId,
java.lang.String username)
- Specified by:
unenrollUserFromGame
in interface IWebServer
cancelGame
public void cancelGame(java.lang.String gameId,
java.lang.String byUser)
- Specified by:
cancelGame
in interface IWebServer
startGame
public void startGame(java.lang.String gameId)
- Specified by:
startGame
in interface IWebServer
startGameOnPlayerHost
public 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.
- Specified by:
startGameOnPlayerHost
in interface IWebServer
informStartedByPlayer
public void informStartedByPlayer(java.lang.String gameId)
- Specified by:
informStartedByPlayer
in interface IWebServer
informLocallyGameOver
public void informLocallyGameOver(java.lang.String gameId)
- Specified by:
informLocallyGameOver
in interface IWebServer
updateUserCounts
public void updateUserCounts()
allTellUserCounts
public void allTellUserCounts()
chatSubmit
public void chatSubmit(java.lang.String chatId,
java.lang.String sender,
java.lang.String message)
- Specified by:
chatSubmit
in interface IWebServer
tellLastChatMessagesToOne
public void tellLastChatMessagesToOne(WebServerClientSocketThread cst,
java.lang.String chatId)
logout
public void logout()
- Specified by:
logout
in interface IWebServer
registerUser
public java.lang.String registerUser(java.lang.String username,
java.lang.String password,
java.lang.String email)
confirmRegistration
public java.lang.String confirmRegistration(java.lang.String username,
java.lang.String confirmationCode)
changeProperties
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)
- Specified by:
changeProperties
in interface IWebServer
countProposedGames
private int countProposedGames(boolean shallBeScheduled)
findByGameId
private GameInfo findByGameId(java.lang.String gameId)
findFromRunningGames
private GameInfo findFromRunningGames(java.lang.String gameId)
getGameOnServer
private IGameRunner getGameOnServer(GameInfo gi)
startOneGame
private boolean startOneGame(GameInfo gi)
unregisterGame
public void unregisterGame(GameInfo st,
int port)
- Specified by:
unregisterGame
in interface IRunWebServer
unregisterGamePlayerPC
public void unregisterGamePlayerPC(GameInfo gi)
readGamesFromFile
private void readGamesFromFile(java.lang.String filename,
java.util.HashMap<java.lang.String,GameInfo> proposedGames)
saveGamesIfNeeded
public void saveGamesIfNeeded()
storeGamesToFile
private void storeGamesToFile(java.lang.String filename)
getStringOption
public java.lang.String getStringOption(java.lang.String key)