Class WebSocket08FrameDecoder
- java.lang.Object
-
- org.jboss.netty.channel.SimpleChannelUpstreamHandler
-
- org.jboss.netty.handler.codec.frame.FrameDecoder
-
- org.jboss.netty.handler.codec.replay.ReplayingDecoder<WebSocket08FrameDecoder.State>
-
- org.jboss.netty.handler.codec.http.websocketx.WebSocket08FrameDecoder
-
- All Implemented Interfaces:
ChannelHandler
,ChannelUpstreamHandler
,LifeCycleAwareChannelHandler
- Direct Known Subclasses:
WebSocket07FrameDecoder
,WebSocket13FrameDecoder
public class WebSocket08FrameDecoder extends ReplayingDecoder<WebSocket08FrameDecoder.State>
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 static class
WebSocket08FrameDecoder.State
-
Nested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler
ChannelHandler.Sharable
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
allowExtensions
private int
fragmentedFramesCount
private boolean
frameFinalFlag
private int
frameOpcode
private ChannelBuffer
framePayload
private int
framePayloadBytesRead
private long
framePayloadLength
private int
frameRsv
private static InternalLogger
logger
private boolean
maskedPayload
private ChannelBuffer
maskingKey
private long
maxFramePayloadLength
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 Utf8Validator
utf8Validator
-
Fields inherited from class org.jboss.netty.handler.codec.frame.FrameDecoder
cumulation, DEFAULT_MAX_COMPOSITEBUFFER_COMPONENTS
-
-
Constructor Summary
Constructors Constructor Description WebSocket08FrameDecoder(boolean maskedPayload, boolean allowExtensions)
Constructor with default valuesWebSocket08FrameDecoder(boolean maskedPayload, boolean allowExtensions, long maxFramePayloadLength)
Constructor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
checkCloseFrameBody(Channel channel, ChannelBuffer buffer)
private void
checkUTF8String(Channel channel, byte[] bytes)
protected java.lang.Object
decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer, WebSocket08FrameDecoder.State state)
Decodes the received packets so far into a frame.private void
protocolViolation(Channel channel, java.lang.String reason)
private void
protocolViolation(Channel channel, CorruptedFrameException ex)
private static int
toFrameLength(long l)
private void
unmask(ChannelBuffer frame)
-
Methods inherited from class org.jboss.netty.handler.codec.replay.ReplayingDecoder
checkpoint, checkpoint, cleanup, decode, decodeLast, decodeLast, getState, internalBuffer, messageReceived, setState
-
Methods inherited from class org.jboss.netty.handler.codec.frame.FrameDecoder
actualReadableBytes, afterAdd, afterRemove, appendToCumulation, beforeAdd, beforeRemove, channelClosed, channelDisconnected, exceptionCaught, extractFrame, getMaxCumulationBufferCapacity, getMaxCumulationBufferComponents, isUnfold, newCumulationBuffer, replace, setMaxCumulationBufferCapacity, setMaxCumulationBufferComponents, setUnfold, unfoldAndFireMessageReceived, updateCumulation
-
Methods inherited from class org.jboss.netty.channel.SimpleChannelUpstreamHandler
channelBound, channelConnected, channelInterestChanged, channelOpen, channelUnbound, childChannelClosed, childChannelOpen, handleUpstream, writeComplete
-
-
-
-
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
-
utf8Validator
private Utf8Validator utf8Validator
-
fragmentedFramesCount
private int fragmentedFramesCount
-
maxFramePayloadLength
private final long maxFramePayloadLength
-
frameFinalFlag
private boolean frameFinalFlag
-
frameRsv
private int frameRsv
-
frameOpcode
private int frameOpcode
-
framePayloadLength
private long framePayloadLength
-
framePayload
private ChannelBuffer framePayload
-
framePayloadBytesRead
private int framePayloadBytesRead
-
maskingKey
private ChannelBuffer maskingKey
-
allowExtensions
private final boolean allowExtensions
-
maskedPayload
private final boolean maskedPayload
-
receivedClosingHandshake
private boolean receivedClosingHandshake
-
-
Constructor Detail
-
WebSocket08FrameDecoder
public WebSocket08FrameDecoder(boolean maskedPayload, boolean allowExtensions)
Constructor with default values- Parameters:
maskedPayload
- 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 not
-
WebSocket08FrameDecoder
public WebSocket08FrameDecoder(boolean maskedPayload, boolean allowExtensions, long maxFramePayloadLength)
Constructor- Parameters:
maskedPayload
- 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.
-
-
Method Detail
-
decode
protected java.lang.Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer, WebSocket08FrameDecoder.State state) throws java.lang.Exception
Description copied from class:ReplayingDecoder
Decodes the received packets so far into a frame.- Specified by:
decode
in classReplayingDecoder<WebSocket08FrameDecoder.State>
- Parameters:
ctx
- the context of this handlerchannel
- the current channelbuffer
- the cumulative buffer of received packets so far. Note that the buffer might be empty, which means you should not make an assumption that the buffer contains at least one byte in your decoder implementation.state
- the current decoder state (null
if unused)- Returns:
- the decoded frame
- Throws:
java.lang.Exception
-
unmask
private void unmask(ChannelBuffer frame)
-
protocolViolation
private void protocolViolation(Channel channel, java.lang.String reason) throws CorruptedFrameException
- Throws:
CorruptedFrameException
-
protocolViolation
private void protocolViolation(Channel channel, CorruptedFrameException ex) throws CorruptedFrameException
- Throws:
CorruptedFrameException
-
toFrameLength
private static int toFrameLength(long l) throws TooLongFrameException
- Throws:
TooLongFrameException
-
checkUTF8String
private void checkUTF8String(Channel channel, byte[] bytes) throws CorruptedFrameException
- Throws:
CorruptedFrameException
-
checkCloseFrameBody
protected void checkCloseFrameBody(Channel channel, ChannelBuffer buffer) throws CorruptedFrameException
- Throws:
CorruptedFrameException
-
-