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 class
WebSocket08FrameDecoder.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 WebSocketDecoderConfig
config
private int
fragmentedFramesCount
private boolean
frameFinalFlag
private boolean
frameMasked
private int
frameOpcode
private int
framePayloadLen1
private long
framePayloadLength
private int
frameRsv
private static InternalLogger
logger
private int
mask
private static byte
OPCODE_BINARY
private static byte
OPCODE_CLOSE
private static byte
OPCODE_CONT
private static byte
OPCODE_PING
private static byte
OPCODE_PONG
private static byte
OPCODE_TEXT
private boolean
receivedClosingHandshake
private WebSocket08FrameDecoder.State
state
-
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 void
checkCloseFrameBody(ChannelHandlerContext ctx, ByteBuf buffer)
protected void
decode(ChannelHandlerContext ctx, ByteBuf in, java.util.List<java.lang.Object> out)
Decode the from oneByteBuf
to an other.private void
protocolViolation(ChannelHandlerContext ctx, ByteBuf in, CorruptedWebSocketFrameException ex)
private void
protocolViolation(ChannelHandlerContext ctx, ByteBuf in, WebSocketCloseStatus status, java.lang.String reason)
private void
protocolViolation(ChannelHandlerContext ctx, ByteBuf in, java.lang.String reason)
private static int
toFrameLength(long l)
private void
unmask(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
-
mask
private int mask
-
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:ByteToMessageDecoder
Decode the from oneByteBuf
to an other. This method will be called till either the inputByteBuf
has nothing to read when return from this method or till nothing was read from the inputByteBuf
.- Specified by:
decode
in classByteToMessageDecoder
- Parameters:
ctx
- theChannelHandlerContext
which thisByteToMessageDecoder
belongs toin
- theByteBuf
from which to read dataout
- theList
to 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)
-
-