Package com.neovisionaries.ws.client
Class ReadingThread
- java.lang.Object
-
- java.lang.Thread
-
- com.neovisionaries.ws.client.WebSocketThread
-
- com.neovisionaries.ws.client.ReadingThread
-
- All Implemented Interfaces:
java.lang.Runnable
class ReadingThread extends WebSocketThread
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
ReadingThread.CloseTask
-
Field Summary
Fields Modifier and Type Field Description private long
mCloseDelay
private WebSocketFrame
mCloseFrame
private java.lang.Object
mCloseLock
private ReadingThread.CloseTask
mCloseTask
private java.util.Timer
mCloseTimer
private java.util.List<WebSocketFrame>
mContinuation
private boolean
mNotWaitForCloseFrame
private PerMessageCompressionExtension
mPMCE
private boolean
mStopRequested
-
Fields inherited from class com.neovisionaries.ws.client.WebSocketThread
mWebSocket
-
-
Constructor Summary
Constructors Constructor Description ReadingThread(WebSocket websocket)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
callOnBinaryFrame(WebSocketFrame frame)
CallonBinaryFrame
method of the listeners.private void
callOnBinaryMessage(byte[] message)
CallonBinaryMessage
method of the listeners.private void
callOnCloseFrame(WebSocketFrame frame)
CallonCloseFrame
method of the listeners.private void
callOnContinuationFrame(WebSocketFrame frame)
CallonContinuationFrame
method of the listeners.private void
callOnError(WebSocketException cause)
CallonError
method of the listeners.private void
callOnFrame(WebSocketFrame frame)
CallonFrame
method of the listeners.private void
callOnFrameError(WebSocketException cause, WebSocketFrame frame)
CallonFrameError
method of the listeners.private void
callOnMessageDecompressionError(WebSocketException cause, byte[] compressed)
CallonMessageDecompressionError
method of the listeners.private void
callOnMessageError(WebSocketException cause, java.util.List<WebSocketFrame> frames)
CallonMessageError
method of the listeners.private void
callOnPingFrame(WebSocketFrame frame)
CallonPingFrame
method of the listeners.private void
callOnPongFrame(WebSocketFrame frame)
CallonPongFrame
method of the listeners.private void
callOnTextFrame(WebSocketFrame frame)
CallonTextFrame
method of the listeners.private void
callOnTextMessage(byte[] data)
CallonTextMessage
method of the listeners.private void
callOnTextMessage(java.lang.String message)
CallonTextMessage
method of the listeners.private void
callOnTextMessageError(WebSocketException cause, byte[] data)
CallonTextMessageError
method of the listeners.private void
cancelClose()
private void
cancelCloseTask()
private byte[]
concatenatePayloads(java.util.List<WebSocketFrame> frames)
private WebSocketFrame
createCloseFrame(WebSocketException wse)
private byte[]
decompress(byte[] input)
private byte[]
getMessage(WebSocketFrame frame)
private byte[]
getMessage(java.util.List<WebSocketFrame> frames)
private boolean
handleBinaryFrame(WebSocketFrame frame)
private boolean
handleCloseFrame(WebSocketFrame frame)
private boolean
handleContinuationFrame(WebSocketFrame frame)
private boolean
handleFrame(WebSocketFrame frame)
private boolean
handlePingFrame(WebSocketFrame frame)
private boolean
handlePongFrame(WebSocketFrame frame)
private boolean
handleTextFrame(WebSocketFrame frame)
private void
main()
private void
notifyFinished()
private WebSocketFrame
readFrame()
(package private) void
requestStop(long closeDelay)
void
runMain()
private void
scheduleClose()
private void
scheduleCloseTask()
private void
verifyFrame(WebSocketFrame frame)
private void
verifyFrameFragmentation(WebSocketFrame frame)
private void
verifyFrameMask(WebSocketFrame frame)
Ensure that the given frame is not masked.private void
verifyFrameOpcode(WebSocketFrame frame)
Ensure that the opcode of the give frame is a known one.private void
verifyFrameSize(WebSocketFrame frame)
private void
verifyReservedBit1(WebSocketFrame frame)
Verify the RSV1 bit of a frame.private boolean
verifyReservedBit1ForPMCE(WebSocketFrame frame)
Verify the RSV1 bit of a frame using the rule described in RFC 7692.private void
verifyReservedBit2(WebSocketFrame frame)
Verify the RSV2 bit of a frame.private void
verifyReservedBit3(WebSocketFrame frame)
Verify the RSV3 bit of a frame.private void
verifyReservedBits(WebSocketFrame frame)
private void
waitForCloseFrame()
-
Methods inherited from class com.neovisionaries.ws.client.WebSocketThread
callOnThreadCreated, run
-
Methods inherited from class java.lang.Thread
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
-
-
-
-
Field Detail
-
mStopRequested
private boolean mStopRequested
-
mCloseFrame
private WebSocketFrame mCloseFrame
-
mContinuation
private java.util.List<WebSocketFrame> mContinuation
-
mPMCE
private final PerMessageCompressionExtension mPMCE
-
mCloseLock
private java.lang.Object mCloseLock
-
mCloseTimer
private java.util.Timer mCloseTimer
-
mCloseTask
private ReadingThread.CloseTask mCloseTask
-
mCloseDelay
private long mCloseDelay
-
mNotWaitForCloseFrame
private boolean mNotWaitForCloseFrame
-
-
Constructor Detail
-
ReadingThread
public ReadingThread(WebSocket websocket)
-
-
Method Detail
-
runMain
public void runMain()
- Specified by:
runMain
in classWebSocketThread
-
main
private void main()
-
requestStop
void requestStop(long closeDelay)
-
callOnFrame
private void callOnFrame(WebSocketFrame frame)
CallonFrame
method of the listeners.
-
callOnContinuationFrame
private void callOnContinuationFrame(WebSocketFrame frame)
CallonContinuationFrame
method of the listeners.
-
callOnTextFrame
private void callOnTextFrame(WebSocketFrame frame)
CallonTextFrame
method of the listeners.
-
callOnBinaryFrame
private void callOnBinaryFrame(WebSocketFrame frame)
CallonBinaryFrame
method of the listeners.
-
callOnCloseFrame
private void callOnCloseFrame(WebSocketFrame frame)
CallonCloseFrame
method of the listeners.
-
callOnPingFrame
private void callOnPingFrame(WebSocketFrame frame)
CallonPingFrame
method of the listeners.
-
callOnPongFrame
private void callOnPongFrame(WebSocketFrame frame)
CallonPongFrame
method of the listeners.
-
callOnTextMessage
private void callOnTextMessage(byte[] data)
CallonTextMessage
method of the listeners.
-
callOnTextMessage
private void callOnTextMessage(java.lang.String message)
CallonTextMessage
method of the listeners.
-
callOnBinaryMessage
private void callOnBinaryMessage(byte[] message)
CallonBinaryMessage
method of the listeners.
-
callOnError
private void callOnError(WebSocketException cause)
CallonError
method of the listeners.
-
callOnFrameError
private void callOnFrameError(WebSocketException cause, WebSocketFrame frame)
CallonFrameError
method of the listeners.
-
callOnMessageError
private void callOnMessageError(WebSocketException cause, java.util.List<WebSocketFrame> frames)
CallonMessageError
method of the listeners.
-
callOnMessageDecompressionError
private void callOnMessageDecompressionError(WebSocketException cause, byte[] compressed)
CallonMessageDecompressionError
method of the listeners.
-
callOnTextMessageError
private void callOnTextMessageError(WebSocketException cause, byte[] data)
CallonTextMessageError
method of the listeners.
-
readFrame
private WebSocketFrame readFrame()
-
verifyFrame
private void verifyFrame(WebSocketFrame frame) throws WebSocketException
- Throws:
WebSocketException
-
verifyReservedBits
private void verifyReservedBits(WebSocketFrame frame) throws WebSocketException
- Throws:
WebSocketException
-
verifyReservedBit1
private void verifyReservedBit1(WebSocketFrame frame) throws WebSocketException
Verify the RSV1 bit of a frame.- Throws:
WebSocketException
-
verifyReservedBit1ForPMCE
private boolean verifyReservedBit1ForPMCE(WebSocketFrame frame) throws WebSocketException
Verify the RSV1 bit of a frame using the rule described in RFC 7692. See 6. Framing in RFC 7692 for details.- Throws:
WebSocketException
-
verifyReservedBit2
private void verifyReservedBit2(WebSocketFrame frame) throws WebSocketException
Verify the RSV2 bit of a frame.- Throws:
WebSocketException
-
verifyReservedBit3
private void verifyReservedBit3(WebSocketFrame frame) throws WebSocketException
Verify the RSV3 bit of a frame.- Throws:
WebSocketException
-
verifyFrameOpcode
private void verifyFrameOpcode(WebSocketFrame frame) throws WebSocketException
Ensure that the opcode of the give frame is a known one.From RFC 6455, 5.2. Base Framing Protocol
If an unknown opcode is received, the receiving endpoint MUST Fail the WebSocket Connection.
- Throws:
WebSocketException
-
verifyFrameMask
private void verifyFrameMask(WebSocketFrame frame) throws WebSocketException
Ensure that the given frame is not masked.From RFC 6455, 5.1. Overview:
A server MUST NOT mask any frames that it sends to the client. A client MUST close a connection if it detects a masked frame.
- Throws:
WebSocketException
-
verifyFrameFragmentation
private void verifyFrameFragmentation(WebSocketFrame frame) throws WebSocketException
- Throws:
WebSocketException
-
verifyFrameSize
private void verifyFrameSize(WebSocketFrame frame) throws WebSocketException
- Throws:
WebSocketException
-
createCloseFrame
private WebSocketFrame createCloseFrame(WebSocketException wse)
-
handleFrame
private boolean handleFrame(WebSocketFrame frame)
-
handleContinuationFrame
private boolean handleContinuationFrame(WebSocketFrame frame)
-
getMessage
private byte[] getMessage(java.util.List<WebSocketFrame> frames)
-
concatenatePayloads
private byte[] concatenatePayloads(java.util.List<WebSocketFrame> frames)
-
getMessage
private byte[] getMessage(WebSocketFrame frame)
-
decompress
private byte[] decompress(byte[] input)
-
handleTextFrame
private boolean handleTextFrame(WebSocketFrame frame)
-
handleBinaryFrame
private boolean handleBinaryFrame(WebSocketFrame frame)
-
handleCloseFrame
private boolean handleCloseFrame(WebSocketFrame frame)
-
handlePingFrame
private boolean handlePingFrame(WebSocketFrame frame)
-
handlePongFrame
private boolean handlePongFrame(WebSocketFrame frame)
-
waitForCloseFrame
private void waitForCloseFrame()
-
notifyFinished
private void notifyFinished()
-
scheduleClose
private void scheduleClose()
-
scheduleCloseTask
private void scheduleCloseTask()
-
cancelClose
private void cancelClose()
-
cancelCloseTask
private void cancelCloseTask()
-
-