Package net.sf.colossus.webserver
Class WebServerClient
- java.lang.Object
-
- net.sf.colossus.webserver.WebServerClient
-
- All Implemented Interfaces:
IWebClient
public class WebServerClient extends java.lang.Object implements IWebClient
This class represents an actual WebServer client. Mostly it contains the client's state data (logged in, client version, user and user name, and such). It holds the reference to the actual socket thread that is waiting for input from client. This class here provides the parsing of commands coming from clients to convert them into actual calls to to on the server object, and it also provides the methods which the server calls on the client (=translates method calls into text to send them over the socket). TODO: The "parse messages" still contains some blocks and processing which should rather be in the actual socket thread object (during split into client and actual socket thread just copied the whole if-elseif-else block to here).
-
-
Field Summary
Fields Modifier and Type Field Description private intclientVersionClient side versionprivate WebServerClientSocketThreadcstThe client socket thread that handled the low-level connection stuffprivate longgameStartsNowSentTime when last gameStartsNowSent was sent (in ms since epoch)private longgameStartsSoonSentTime when last gameStartsSoonSent was sent (in ms since epoch)private booleanloggedInWhether or not this WebServerClient is at the moment logged inprivate static java.util.logging.LoggerLOGGERprivate static java.lang.Stringsepprivate WebServerserverThe web server object that is managing all WebServerClientsprivate java.lang.StringunverifiedUsernameDuring registration request and sending of confirmation code, we do not have a user yet.private UseruserThe user associated with this WebClient connection-
Fields inherited from interface net.sf.colossus.webcommon.IWebClient
alreadyLoggedIn, chatDeliver, connectionClosed, didEnroll, didUnenroll, forcedLogout, gameCancelled, gameInfo, gameStarted, gameStartsNow, gameStartsSoon, generalMessage, grantAdmin, pingRequest, requestAttention, systemMessage, tooManyUsers, userInfo, watchGameInfo
-
-
Constructor Summary
Constructors Constructor Description WebServerClient(WebServer server, java.net.Socket socket)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidchatDeliver(java.lang.String chatId, long when, java.lang.String sender, java.lang.String message, boolean resent)voidconnectionReset(boolean forcedLogout)voiddeliverGeneralMessage(long when, boolean error, java.lang.String title, java.lang.String message)voiddidEnroll(java.lang.String gameId, java.lang.String username)voiddidUnenroll(java.lang.String gameId, java.lang.String username)private java.lang.StringensureNotAlreadyLoggedIn(java.lang.String username, boolean force)if password is okay, check first whether same user is already logged in with another connection; if yes, when force is not set (1st try), send back the "already logged in"; reacting on that, client will prompt whether to force the old connection out, and if user answers yes, will send a 2nd login message, this time with force flag set.voidgameCancelled(java.lang.String gameId, java.lang.String byUser)voidgameInfo(GameInfo gi)voidgameStartsNow(java.lang.String gameId, int port, java.lang.String hostingHost)voidgameStartsSoon(java.lang.String gameId, java.lang.String byUser)intgetClientVersion()booleangetLoggedIn()java.lang.StringgetUnverifiedUsername()(package private) UsergetUser()(package private) java.lang.StringgetUsername()WebServerClientSocketThreadgetWSCSThread()voidgrantAdminStatus()voidhandleLogout()private java.util.List<java.lang.String>makeCaseMismatchWarning(java.lang.String name)booleanparseLine(java.lang.String fromClient)voidprocessChatLine(java.lang.String chatId, java.lang.String sender, java.lang.String message)voidrequestAttention(long when, java.lang.String byUser, boolean byAdmin, java.lang.String message, int beepCount, long beepInterval, boolean windows)voidrequestPing(java.lang.String arg1, java.lang.String arg2, java.lang.String arg3)voidrequestPingIfNeeded(long now)voidrequestPingNow()private voidsendToClient(java.lang.String s)private voidsetClientVersion(int version)voidsetLoggedIn(boolean val)voidsetUnverifiedUsername(java.lang.String name)private voidsetUser(User u)voidstartThread()voidsystemMessage(long now, java.lang.String message)voiduserInfo(int loggedin, int enrolled, int playing, int dead, long ago, java.lang.String text)voidwatchGameInfo(java.lang.String gameId, java.lang.String host, int port)
-
-
-
Field Detail
-
LOGGER
private static final java.util.logging.Logger LOGGER
-
sep
private static final java.lang.String sep
- See Also:
- Constant Field Values
-
cst
private final WebServerClientSocketThread cst
The client socket thread that handled the low-level connection stuff
-
server
private WebServer server
The web server object that is managing all WebServerClients
-
loggedIn
private boolean loggedIn
Whether or not this WebServerClient is at the moment logged in
-
clientVersion
private int clientVersion
Client side version
-
user
private User user
The user associated with this WebClient connection
-
unverifiedUsername
private java.lang.String unverifiedUsername
During registration request and sending of confirmation code, we do not have a user yet. The parseLine sets then this variable according to the username argument which was send from client.
-
gameStartsNowSent
private long gameStartsNowSent
Time when last gameStartsNowSent was sent (in ms since epoch)
-
gameStartsSoonSent
private long gameStartsSoonSent
Time when last gameStartsSoonSent was sent (in ms since epoch)
-
-
Constructor Detail
-
WebServerClient
public WebServerClient(WebServer server, java.net.Socket socket)
-
-
Method Detail
-
startThread
public void startThread()
-
getWSCSThread
public WebServerClientSocketThread getWSCSThread()
-
setClientVersion
private void setClientVersion(int version)
-
getClientVersion
public int getClientVersion()
- Specified by:
getClientVersionin interfaceIWebClient
-
setUser
private void setUser(User u)
-
getUser
User getUser()
-
getUsername
java.lang.String getUsername()
-
setUnverifiedUsername
public void setUnverifiedUsername(java.lang.String name)
-
getUnverifiedUsername
public java.lang.String getUnverifiedUsername()
-
requestPingIfNeeded
public void requestPingIfNeeded(long now)
-
requestPingNow
public void requestPingNow()
-
setLoggedIn
public void setLoggedIn(boolean val)
-
getLoggedIn
public boolean getLoggedIn()
-
handleLogout
public void handleLogout()
-
parseLine
public boolean parseLine(java.lang.String fromClient)
-
makeCaseMismatchWarning
private java.util.List<java.lang.String> makeCaseMismatchWarning(java.lang.String name)
-
processChatLine
public void processChatLine(java.lang.String chatId, java.lang.String sender, java.lang.String message)
-
ensureNotAlreadyLoggedIn
private java.lang.String ensureNotAlreadyLoggedIn(java.lang.String username, boolean force)if password is okay, check first whether same user is already logged in with another connection; if yes, when force is not set (1st try), send back the "already logged in"; reacting on that, client will prompt whether to force the old connection out, and if user answers yes, will send a 2nd login message, this time with force flag set.
-
systemMessage
public void systemMessage(long now, java.lang.String message)- Specified by:
systemMessagein interfaceIWebClient
-
sendToClient
private void sendToClient(java.lang.String s)
-
grantAdminStatus
public void grantAdminStatus()
- Specified by:
grantAdminStatusin interfaceIWebClient
-
didEnroll
public void didEnroll(java.lang.String gameId, java.lang.String username)- Specified by:
didEnrollin interfaceIWebClient
-
didUnenroll
public void didUnenroll(java.lang.String gameId, java.lang.String username)- Specified by:
didUnenrollin interfaceIWebClient
-
gameCancelled
public void gameCancelled(java.lang.String gameId, java.lang.String byUser)- Specified by:
gameCancelledin interfaceIWebClient
-
userInfo
public void userInfo(int loggedin, int enrolled, int playing, int dead, long ago, java.lang.String text)- Specified by:
userInfoin interfaceIWebClient
-
gameInfo
public void gameInfo(GameInfo gi)
- Specified by:
gameInfoin interfaceIWebClient
-
gameStartsSoon
public void gameStartsSoon(java.lang.String gameId, java.lang.String byUser)- Specified by:
gameStartsSoonin interfaceIWebClient
-
gameStartsNow
public void gameStartsNow(java.lang.String gameId, int port, java.lang.String hostingHost)- Specified by:
gameStartsNowin interfaceIWebClient
-
chatDeliver
public void chatDeliver(java.lang.String chatId, long when, java.lang.String sender, java.lang.String message, boolean resent)- Specified by:
chatDeliverin interfaceIWebClient
-
deliverGeneralMessage
public void deliverGeneralMessage(long when, boolean error, java.lang.String title, java.lang.String message)- Specified by:
deliverGeneralMessagein interfaceIWebClient
-
requestAttention
public void requestAttention(long when, java.lang.String byUser, boolean byAdmin, java.lang.String message, int beepCount, long beepInterval, boolean windows)- Specified by:
requestAttentionin interfaceIWebClient
-
watchGameInfo
public void watchGameInfo(java.lang.String gameId, java.lang.String host, int port)- Specified by:
watchGameInfoin interfaceIWebClient
-
requestPing
public void requestPing(java.lang.String arg1, java.lang.String arg2, java.lang.String arg3)
-
connectionReset
public void connectionReset(boolean forcedLogout)
- Specified by:
connectionResetin interfaceIWebClient
-
-