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 classReadingThread.CloseTask
-
Field Summary
Fields Modifier and Type Field Description private longmCloseDelayprivate WebSocketFramemCloseFrameprivate java.lang.ObjectmCloseLockprivate ReadingThread.CloseTaskmCloseTaskprivate java.util.TimermCloseTimerprivate java.util.List<WebSocketFrame>mContinuationprivate booleanmNotWaitForCloseFrameprivate PerMessageCompressionExtensionmPMCEprivate booleanmStopRequested-
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 voidcallOnBinaryFrame(WebSocketFrame frame)CallonBinaryFramemethod of the listeners.private voidcallOnBinaryMessage(byte[] message)CallonBinaryMessagemethod of the listeners.private voidcallOnCloseFrame(WebSocketFrame frame)CallonCloseFramemethod of the listeners.private voidcallOnContinuationFrame(WebSocketFrame frame)CallonContinuationFramemethod of the listeners.private voidcallOnError(WebSocketException cause)CallonErrormethod of the listeners.private voidcallOnFrame(WebSocketFrame frame)CallonFramemethod of the listeners.private voidcallOnFrameError(WebSocketException cause, WebSocketFrame frame)CallonFrameErrormethod of the listeners.private voidcallOnMessageDecompressionError(WebSocketException cause, byte[] compressed)CallonMessageDecompressionErrormethod of the listeners.private voidcallOnMessageError(WebSocketException cause, java.util.List<WebSocketFrame> frames)CallonMessageErrormethod of the listeners.private voidcallOnPingFrame(WebSocketFrame frame)CallonPingFramemethod of the listeners.private voidcallOnPongFrame(WebSocketFrame frame)CallonPongFramemethod of the listeners.private voidcallOnTextFrame(WebSocketFrame frame)CallonTextFramemethod of the listeners.private voidcallOnTextMessage(byte[] data)CallonTextMessagemethod of the listeners.private voidcallOnTextMessage(java.lang.String message)CallonTextMessagemethod of the listeners.private voidcallOnTextMessageError(WebSocketException cause, byte[] data)CallonTextMessageErrormethod of the listeners.private voidcancelClose()private voidcancelCloseTask()private byte[]concatenatePayloads(java.util.List<WebSocketFrame> frames)private WebSocketFramecreateCloseFrame(WebSocketException wse)private byte[]decompress(byte[] input)private byte[]getMessage(WebSocketFrame frame)private byte[]getMessage(java.util.List<WebSocketFrame> frames)private booleanhandleBinaryFrame(WebSocketFrame frame)private booleanhandleCloseFrame(WebSocketFrame frame)private booleanhandleContinuationFrame(WebSocketFrame frame)private booleanhandleFrame(WebSocketFrame frame)private booleanhandlePingFrame(WebSocketFrame frame)private booleanhandlePongFrame(WebSocketFrame frame)private booleanhandleTextFrame(WebSocketFrame frame)private voidmain()private voidnotifyFinished()private WebSocketFramereadFrame()(package private) voidrequestStop(long closeDelay)voidrunMain()private voidscheduleClose()private voidscheduleCloseTask()private voidverifyFrame(WebSocketFrame frame)private voidverifyFrameFragmentation(WebSocketFrame frame)private voidverifyFrameMask(WebSocketFrame frame)Ensure that the given frame is not masked.private voidverifyFrameOpcode(WebSocketFrame frame)Ensure that the opcode of the give frame is a known one.private voidverifyFrameSize(WebSocketFrame frame)private voidverifyReservedBit1(WebSocketFrame frame)Verify the RSV1 bit of a frame.private booleanverifyReservedBit1ForPMCE(WebSocketFrame frame)Verify the RSV1 bit of a frame using the rule described in RFC 7692.private voidverifyReservedBit2(WebSocketFrame frame)Verify the RSV2 bit of a frame.private voidverifyReservedBit3(WebSocketFrame frame)Verify the RSV3 bit of a frame.private voidverifyReservedBits(WebSocketFrame frame)private voidwaitForCloseFrame()-
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:
runMainin classWebSocketThread
-
main
private void main()
-
requestStop
void requestStop(long closeDelay)
-
callOnFrame
private void callOnFrame(WebSocketFrame frame)
CallonFramemethod of the listeners.
-
callOnContinuationFrame
private void callOnContinuationFrame(WebSocketFrame frame)
CallonContinuationFramemethod of the listeners.
-
callOnTextFrame
private void callOnTextFrame(WebSocketFrame frame)
CallonTextFramemethod of the listeners.
-
callOnBinaryFrame
private void callOnBinaryFrame(WebSocketFrame frame)
CallonBinaryFramemethod of the listeners.
-
callOnCloseFrame
private void callOnCloseFrame(WebSocketFrame frame)
CallonCloseFramemethod of the listeners.
-
callOnPingFrame
private void callOnPingFrame(WebSocketFrame frame)
CallonPingFramemethod of the listeners.
-
callOnPongFrame
private void callOnPongFrame(WebSocketFrame frame)
CallonPongFramemethod of the listeners.
-
callOnTextMessage
private void callOnTextMessage(byte[] data)
CallonTextMessagemethod of the listeners.
-
callOnTextMessage
private void callOnTextMessage(java.lang.String message)
CallonTextMessagemethod of the listeners.
-
callOnBinaryMessage
private void callOnBinaryMessage(byte[] message)
CallonBinaryMessagemethod of the listeners.
-
callOnError
private void callOnError(WebSocketException cause)
CallonErrormethod of the listeners.
-
callOnFrameError
private void callOnFrameError(WebSocketException cause, WebSocketFrame frame)
CallonFrameErrormethod of the listeners.
-
callOnMessageError
private void callOnMessageError(WebSocketException cause, java.util.List<WebSocketFrame> frames)
CallonMessageErrormethod of the listeners.
-
callOnMessageDecompressionError
private void callOnMessageDecompressionError(WebSocketException cause, byte[] compressed)
CallonMessageDecompressionErrormethod of the listeners.
-
callOnTextMessageError
private void callOnTextMessageError(WebSocketException cause, byte[] data)
CallonTextMessageErrormethod 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()
-
-