Class WebSocket08FrameDecoder
- java.lang.Object
-
- io.netty.channel.ChannelHandlerAdapter
-
- io.netty.channel.ChannelInboundHandlerAdapter
-
- io.netty.handler.codec.ByteToMessageDecoder
-
- io.netty.handler.codec.http.websocketx.WebSocket08FrameDecoder
-
- All Implemented Interfaces:
ChannelHandler,ChannelInboundHandler,WebSocketFrameDecoder
- Direct Known Subclasses:
WebSocket07FrameDecoder,WebSocket13FrameDecoder
public class WebSocket08FrameDecoder extends ByteToMessageDecoder implements WebSocketFrameDecoder
Decodes a web socket frame from wire protocol version 8 format. This code was forked from webbit and modified.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static classWebSocket08FrameDecoder.State-
Nested classes/interfaces inherited from class io.netty.handler.codec.ByteToMessageDecoder
ByteToMessageDecoder.Cumulator
-
Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
ChannelHandler.Sharable
-
-
Field Summary
Fields Modifier and Type Field Description private WebSocketDecoderConfigconfigprivate intfragmentedFramesCountprivate booleanframeFinalFlagprivate booleanframeMaskedprivate intframeOpcodeprivate intframePayloadLen1private longframePayloadLengthprivate intframeRsvprivate static InternalLoggerloggerprivate byte[]maskingKeyprivate static byteOPCODE_BINARYprivate static byteOPCODE_CLOSEprivate static byteOPCODE_CONTprivate static byteOPCODE_PINGprivate static byteOPCODE_PONGprivate static byteOPCODE_TEXTprivate booleanreceivedClosingHandshakeprivate WebSocket08FrameDecoder.Statestate-
Fields inherited from class io.netty.handler.codec.ByteToMessageDecoder
COMPOSITE_CUMULATOR, MERGE_CUMULATOR
-
-
Constructor Summary
Constructors Constructor Description WebSocket08FrameDecoder(boolean expectMaskedFrames, boolean allowExtensions, int maxFramePayloadLength)ConstructorWebSocket08FrameDecoder(boolean expectMaskedFrames, boolean allowExtensions, int maxFramePayloadLength, boolean allowMaskMismatch)ConstructorWebSocket08FrameDecoder(WebSocketDecoderConfig decoderConfig)Constructor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcheckCloseFrameBody(ChannelHandlerContext ctx, ByteBuf buffer)protected voiddecode(ChannelHandlerContext ctx, ByteBuf in, java.util.List<java.lang.Object> out)Decode the from oneByteBufto an other.private voidprotocolViolation(ChannelHandlerContext ctx, ByteBuf in, CorruptedWebSocketFrameException ex)private voidprotocolViolation(ChannelHandlerContext ctx, ByteBuf in, WebSocketCloseStatus status, java.lang.String reason)private voidprotocolViolation(ChannelHandlerContext ctx, ByteBuf in, java.lang.String reason)private static inttoFrameLength(long l)private voidunmask(ByteBuf frame)-
Methods inherited from class io.netty.handler.codec.ByteToMessageDecoder
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, decodeLast, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode, userEventTriggered
-
Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught
-
Methods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerAdded, isSharable
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.netty.channel.ChannelHandler
handlerAdded, handlerRemoved
-
Methods inherited from interface io.netty.channel.ChannelInboundHandler
channelActive, channelInactive, channelRead, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggered
-
-
-
-
Field Detail
-
logger
private static final InternalLogger logger
-
OPCODE_CONT
private static final byte OPCODE_CONT
- See Also:
- Constant Field Values
-
OPCODE_TEXT
private static final byte OPCODE_TEXT
- See Also:
- Constant Field Values
-
OPCODE_BINARY
private static final byte OPCODE_BINARY
- See Also:
- Constant Field Values
-
OPCODE_CLOSE
private static final byte OPCODE_CLOSE
- See Also:
- Constant Field Values
-
OPCODE_PING
private static final byte OPCODE_PING
- See Also:
- Constant Field Values
-
OPCODE_PONG
private static final byte OPCODE_PONG
- See Also:
- Constant Field Values
-
config
private final WebSocketDecoderConfig config
-
fragmentedFramesCount
private int fragmentedFramesCount
-
frameFinalFlag
private boolean frameFinalFlag
-
frameMasked
private boolean frameMasked
-
frameRsv
private int frameRsv
-
frameOpcode
private int frameOpcode
-
framePayloadLength
private long framePayloadLength
-
maskingKey
private byte[] maskingKey
-
framePayloadLen1
private int framePayloadLen1
-
receivedClosingHandshake
private boolean receivedClosingHandshake
-
state
private WebSocket08FrameDecoder.State state
-
-
Constructor Detail
-
WebSocket08FrameDecoder
public WebSocket08FrameDecoder(boolean expectMaskedFrames, boolean allowExtensions, int maxFramePayloadLength)Constructor- Parameters:
expectMaskedFrames- Web socket servers must set this to true processed incoming masked payload. Client implementations must set this to false.allowExtensions- Flag to allow reserved extension bits to be used or notmaxFramePayloadLength- Maximum length of a frame's payload. Setting this to an appropriate value for you application helps check for denial of services attacks.
-
WebSocket08FrameDecoder
public WebSocket08FrameDecoder(boolean expectMaskedFrames, boolean allowExtensions, int maxFramePayloadLength, boolean allowMaskMismatch)Constructor- Parameters:
expectMaskedFrames- Web socket servers must set this to true processed incoming masked payload. Client implementations must set this to false.allowExtensions- Flag to allow reserved extension bits to be used or notmaxFramePayloadLength- Maximum length of a frame's payload. Setting this to an appropriate value for you application helps check for denial of services attacks.allowMaskMismatch- When set to true, frames which are not masked properly according to the standard will still be accepted.
-
WebSocket08FrameDecoder
public WebSocket08FrameDecoder(WebSocketDecoderConfig decoderConfig)
Constructor- Parameters:
decoderConfig- Frames decoder configuration.
-
-
Method Detail
-
decode
protected void decode(ChannelHandlerContext ctx, ByteBuf in, java.util.List<java.lang.Object> out) throws java.lang.Exception
Description copied from class:ByteToMessageDecoderDecode the from oneByteBufto an other. This method will be called till either the inputByteBufhas nothing to read when return from this method or till nothing was read from the inputByteBuf.- Specified by:
decodein classByteToMessageDecoder- Parameters:
ctx- theChannelHandlerContextwhich thisByteToMessageDecoderbelongs toin- theByteBuffrom which to read dataout- theListto which decoded messages should be added- Throws:
java.lang.Exception- is thrown if an error occurs
-
unmask
private void unmask(ByteBuf frame)
-
protocolViolation
private void protocolViolation(ChannelHandlerContext ctx, ByteBuf in, java.lang.String reason)
-
protocolViolation
private void protocolViolation(ChannelHandlerContext ctx, ByteBuf in, WebSocketCloseStatus status, java.lang.String reason)
-
protocolViolation
private void protocolViolation(ChannelHandlerContext ctx, ByteBuf in, CorruptedWebSocketFrameException ex)
-
toFrameLength
private static int toFrameLength(long l)
-
checkCloseFrameBody
protected void checkCloseFrameBody(ChannelHandlerContext ctx, ByteBuf buffer)
-
-