public class WebServerClientSocketThread
extends java.lang.Thread
Modifier and Type | Field and Description |
---|---|
private boolean |
connLostWarningLogged |
private boolean |
done |
private boolean |
forcedLogout |
private static int |
IDLE_WARNING_INTERVAL_MINUTES |
private static int |
IDLE_WARNING_MAXCOUNT |
private int |
idleWarningsSent |
private long |
lastPacketReceived |
private boolean |
lastWasLogin |
(package private) static java.util.logging.Logger |
LOGGER |
private long |
MAX_WRITE_BLOCKTIME_MS |
private static int |
PING_MAX_TRIES |
private static long |
PING_REQUEST_INTERVAL_SECONDS |
private int |
pingCounter |
private int |
pingsTried |
private RoundtripTimeBookkeeper |
rttBookKeeper |
private java.net.Socket |
socket |
private java.lang.Thread |
stopper |
private WebServerClient |
theClient |
private boolean |
toldToTerminate |
private QueuedSocketWriter |
writer |
Constructor and Description |
---|
WebServerClientSocketThread(WebServerClient theClient,
java.net.Socket socket) |
Modifier and Type | Method and Description |
---|---|
void |
checkMaxIdleTime(long now)
Currently this will log out only older clients, because they do not
respond to the ping packets.
|
void |
clearIdleWarningsSent() |
private void |
closeAndCleanupSocket() |
void |
createStopper(java.lang.Runnable r) |
void |
flushMessages()
Waits until writer has written all messages
|
protected void |
forceLogout(WebServerClientSocketThread other) |
(package private) java.lang.String |
getClientInfo() |
private void |
markForcedLogout() |
void |
requestPingIfNeeded(long now) |
void |
requestPingNow() |
void |
run()
prepare socket to read/write, and then loop as long
as lines from client come, and parse them
|
void |
sendToClient(java.lang.String s)
Send the given string/message over the socket to the client
Calculate the time how long it took to write it to the socket,
and log a warning if it was blocked in the write for more than
MAX_WRITE_BLOCKTIME_MS milliseconds.
|
void |
setLastWasLogin() |
void |
storeEntry(long requestResponseArriveTime,
long roundtripTime)
Simply forward the RTT entry creation to the RTT bookkeeper
|
void |
tellToTerminate() |
(package private) boolean |
wasForcedLogout() |
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
static final java.util.logging.Logger LOGGER
private static final long PING_REQUEST_INTERVAL_SECONDS
private static final int PING_MAX_TRIES
private static final int IDLE_WARNING_INTERVAL_MINUTES
private static final int IDLE_WARNING_MAXCOUNT
private final long MAX_WRITE_BLOCKTIME_MS
private final WebServerClient theClient
private final RoundtripTimeBookkeeper rttBookKeeper
private java.net.Socket socket
private QueuedSocketWriter writer
private long lastPacketReceived
private int pingsTried
private int pingCounter
private int idleWarningsSent
private boolean connLostWarningLogged
private java.lang.Thread stopper
private boolean forcedLogout
private boolean done
private boolean toldToTerminate
private boolean lastWasLogin
public WebServerClientSocketThread(WebServerClient theClient, java.net.Socket socket)
java.lang.String getClientInfo()
public void createStopper(java.lang.Runnable r)
public void tellToTerminate()
public void setLastWasLogin()
private void closeAndCleanupSocket()
public void run()
run
in interface java.lang.Runnable
run
in class java.lang.Thread
public void sendToClient(java.lang.String s)
s
- public void flushMessages()
public void storeEntry(long requestResponseArriveTime, long roundtripTime)
requestResponseArriveTime
- When response arrivedroundtripTime
- Actual roundtrip timepublic void requestPingIfNeeded(long now)
public void requestPingNow()
private void markForcedLogout()
boolean wasForcedLogout()
protected void forceLogout(WebServerClientSocketThread other)
public void clearIdleWarningsSent()
public void checkMaxIdleTime(long now)
now
-