net.sf.colossus.webserver
Class WebServerClientSocketThread

java.lang.Object
  extended by java.lang.Thread
      extended by net.sf.colossus.webserver.WebServerClientSocketThread
All Implemented Interfaces:
java.lang.Runnable, IWebClient

public class WebServerClientSocketThread
extends java.lang.Thread
implements IWebClient

Thread to handle one user client connection at the webserver Reads always one line from the socket, parses it and executes the corresponding action. This class also provides the methods which the server calls on the client (=translates method calls to sending them as text messages over the socket).

Author:
Clemens Katzer

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
private  boolean done
           
private  java.io.BufferedReader in
           
private  java.io.InputStream is
           
private  boolean loggedIn
           
private static java.util.logging.Logger LOGGER
           
private  java.io.PrintWriter out
           
private static java.lang.String sep
           
private  WebServer server
           
private  java.net.Socket socket
           
private  java.lang.Thread stopper
           
private  User user
           
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Fields inherited from interface net.sf.colossus.webcommon.IWebClient
alreadyLoggedIn, chatDeliver, connectionClosed, didEnroll, didUnenroll, forcedLogout, gameCancelled, gameInfo, gameStarted, gameStartsNow, gameStartsSoon, grantAdmin, tooManyUsers, userInfo
 
Constructor Summary
WebServerClientSocketThread(WebServer server, java.net.Socket socket)
           
 
Method Summary
 void chatDeliver(java.lang.String chatId, long when, java.lang.String sender, java.lang.String message, boolean resent)
           
 void connectionReset(boolean forcedLogout)
           
 void didEnroll(java.lang.String gameId, java.lang.String username)
           
 void didUnenroll(java.lang.String gameId, java.lang.String username)
           
protected  void forceLogout(WebServerClientSocketThread other)
           
 void gameCancelled(java.lang.String gameId, java.lang.String byUser)
           
 void gameInfo(GameInfo gi)
           
 void gameStarted(java.lang.String gameId)
           
 void gameStartsNow(java.lang.String gameId, int port, java.lang.String hostingHost)
           
 void gameStartsSoon(java.lang.String gameId)
           
(package private)  User getUser()
           
 void grantAdminStatus()
           
 void interrupt()
           
private  boolean parseLine(java.lang.String fromClient)
           
static void reject(java.net.Socket socket)
           
 void run()
          prepare socket to read/write, and then loop as long as lines from client come, and parse them
private  void sendToClient(java.lang.String s)
           
 void tellToTerminate()
           
 void userInfo(int loggedin, int enrolled, int playing, int dead, long ago, java.lang.String text)
           
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, 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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

LOGGER

private static final java.util.logging.Logger LOGGER

server

private WebServer server

socket

private java.net.Socket socket

is

private java.io.InputStream is

in

private java.io.BufferedReader in

out

private java.io.PrintWriter out

user

private User user

loggedIn

private boolean loggedIn

sep

private static final java.lang.String sep
See Also:
Constant Field Values

stopper

private java.lang.Thread stopper

done

private boolean done
Constructor Detail

WebServerClientSocketThread

public WebServerClientSocketThread(WebServer server,
                                   java.net.Socket socket)
Method Detail

reject

public static void reject(java.net.Socket socket)

getUser

User getUser()

tellToTerminate

public void tellToTerminate()

interrupt

public void interrupt()
Overrides:
interrupt in class java.lang.Thread

run

public void run()
prepare socket to read/write, and then loop as long as lines from client come, and parse them

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread

parseLine

private boolean parseLine(java.lang.String fromClient)

forceLogout

protected void forceLogout(WebServerClientSocketThread other)

sendToClient

private void sendToClient(java.lang.String s)

grantAdminStatus

public void grantAdminStatus()
Specified by:
grantAdminStatus in interface IWebClient

didEnroll

public void didEnroll(java.lang.String gameId,
                      java.lang.String username)
Specified by:
didEnroll in interface IWebClient

didUnenroll

public void didUnenroll(java.lang.String gameId,
                        java.lang.String username)
Specified by:
didUnenroll in interface IWebClient

gameCancelled

public void gameCancelled(java.lang.String gameId,
                          java.lang.String byUser)
Specified by:
gameCancelled in interface IWebClient

userInfo

public void userInfo(int loggedin,
                     int enrolled,
                     int playing,
                     int dead,
                     long ago,
                     java.lang.String text)
Specified by:
userInfo in interface IWebClient

gameInfo

public void gameInfo(GameInfo gi)
Specified by:
gameInfo in interface IWebClient

gameStartsSoon

public void gameStartsSoon(java.lang.String gameId)
Specified by:
gameStartsSoon in interface IWebClient

gameStartsNow

public void gameStartsNow(java.lang.String gameId,
                          int port,
                          java.lang.String hostingHost)
Specified by:
gameStartsNow in interface IWebClient

gameStarted

public void gameStarted(java.lang.String gameId)
Specified by:
gameStarted in interface IWebClient

chatDeliver

public void chatDeliver(java.lang.String chatId,
                        long when,
                        java.lang.String sender,
                        java.lang.String message,
                        boolean resent)
Specified by:
chatDeliver in interface IWebClient

connectionReset

public void connectionReset(boolean forcedLogout)
Specified by:
connectionReset in interface IWebClient