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
Decodes a web socket frame from wire protocol version 8 format. This code was forked from webbit and modified.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler
ChannelHandler.Sharable
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final boolean
private int
private boolean
private int
private ChannelBuffer
private int
private long
private int
private static final InternalLogger
private final boolean
private ChannelBuffer
private final long
private static final byte
private static final byte
private static final byte
private static final byte
private static final byte
private static final byte
private boolean
private Utf8Validator
Fields inherited from class org.jboss.netty.handler.codec.frame.FrameDecoder
cumulation, DEFAULT_MAX_COMPOSITEBUFFER_COMPONENTS
-
Constructor Summary
ConstructorsConstructorDescriptionWebSocket08FrameDecoder
(boolean maskedPayload, boolean allowExtensions) Constructor with default valuesWebSocket08FrameDecoder
(boolean maskedPayload, boolean allowExtensions, long maxFramePayloadLength) Constructor -
Method Summary
Modifier and TypeMethodDescriptionprotected void
checkCloseFrameBody
(Channel channel, ChannelBuffer buffer) private void
checkUTF8String
(Channel channel, byte[] bytes) protected 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, 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 Details
-
logger
-
OPCODE_CONT
private static final byte OPCODE_CONT- See Also:
-
OPCODE_TEXT
private static final byte OPCODE_TEXT- See Also:
-
OPCODE_BINARY
private static final byte OPCODE_BINARY- See Also:
-
OPCODE_CLOSE
private static final byte OPCODE_CLOSE- See Also:
-
OPCODE_PING
private static final byte OPCODE_PING- See Also:
-
OPCODE_PONG
private static final byte OPCODE_PONG- See Also:
-
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
-
framePayloadBytesRead
private int framePayloadBytesRead -
maskingKey
-
allowExtensions
private final boolean allowExtensions -
maskedPayload
private final boolean maskedPayload -
receivedClosingHandshake
private boolean receivedClosingHandshake
-
-
Constructor Details
-
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 Details
-
decode
protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer, WebSocket08FrameDecoder.State state) throws 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:
Exception
-
unmask
-
protocolViolation
- Throws:
CorruptedFrameException
-
protocolViolation
private void protocolViolation(Channel channel, CorruptedFrameException ex) throws CorruptedFrameException - Throws:
CorruptedFrameException
-
toFrameLength
- Throws:
TooLongFrameException
-
checkUTF8String
- Throws:
CorruptedFrameException
-
checkCloseFrameBody
protected void checkCloseFrameBody(Channel channel, ChannelBuffer buffer) throws CorruptedFrameException - Throws:
CorruptedFrameException
-