public class PushMessagesWorker
extends java.lang.Thread
IMPORTANT: Do not use logging anywhere inside this class. When an authentication plugin is running during session establishment with the P2J server using logging no messages are written into the log and the application becomes deadlocked.
| Modifier and Type | Field and Description |
|---|---|
private static CentralLogger |
LOG
Logger
|
private java.util.Deque<java.lang.Object> |
messages
Messages queue
|
private boolean |
running
Running flag.
|
private org.eclipse.jetty.websocket.api.Session |
session
Remote session.
|
private java.lang.Object |
sessionGuard
The session guard object
|
private boolean |
sessionInvalid
The session state
|
private static long |
WAIT_TO_DIE
Time in milliseconds to wait for the thread exit.
|
| Constructor and Description |
|---|
PushMessagesWorker()
The default constructor.
|
| Modifier and Type | Method and Description |
|---|---|
org.eclipse.jetty.websocket.api.Session |
getCurrentSession()
Get the current session.
|
void |
pushMessage(java.lang.Object message)
Add a new message at the end of the FIFO queue and notify the push thread.
|
void |
run()
Get messages from queue and send.
|
private void |
sendMessage(org.eclipse.jetty.websocket.api.Session session)
Send a message.
|
void |
setCurrentSession(org.eclipse.jetty.websocket.api.Session session)
Set the current session.
|
void |
stopPushing()
Kill thread and wait to die.
|
private void |
waitForMessages()
Block if the queue is empty.
|
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, yieldprivate static final CentralLogger LOG
private static final long WAIT_TO_DIE
private final java.util.Deque<java.lang.Object> messages
private org.eclipse.jetty.websocket.api.Session session
private boolean running
private final java.lang.Object sessionGuard
private boolean sessionInvalid
public void setCurrentSession(org.eclipse.jetty.websocket.api.Session session)
session - The current websocket sessionpublic org.eclipse.jetty.websocket.api.Session getCurrentSession()
public void pushMessage(java.lang.Object message)
message - A binary or a text message.public void run()
run in interface java.lang.Runnablerun in class java.lang.Threadpublic void stopPushing()
private void waitForMessages()
running flag.private void sendMessage(org.eclipse.jetty.websocket.api.Session session)
session - The current websocket session