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 classWebSocket08FrameDecoder.State-
Nested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler
ChannelHandler.Sharable
-
-
Field Summary
Fields Modifier and Type Field Description private booleanallowExtensionsprivate intfragmentedFramesCountprivate booleanframeFinalFlagprivate intframeOpcodeprivate ChannelBufferframePayloadprivate intframePayloadBytesReadprivate longframePayloadLengthprivate intframeRsvprivate static InternalLoggerloggerprivate booleanmaskedPayloadprivate ChannelBuffermaskingKeyprivate longmaxFramePayloadLengthprivate static byteOPCODE_BINARYprivate static byteOPCODE_CLOSEprivate static byteOPCODE_CONTprivate static byteOPCODE_PINGprivate static byteOPCODE_PONGprivate static byteOPCODE_TEXTprivate booleanreceivedClosingHandshakeprivate Utf8Validatorutf8Validator-
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 voidcheckCloseFrameBody(Channel channel, ChannelBuffer buffer)private voidcheckUTF8String(Channel channel, byte[] bytes)protected java.lang.Objectdecode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer, WebSocket08FrameDecoder.State state)Decodes the received packets so far into a frame.private voidprotocolViolation(Channel channel, java.lang.String reason)private voidprotocolViolation(Channel channel, CorruptedFrameException ex)private static inttoFrameLength(long l)private voidunmask(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:ReplayingDecoderDecodes the received packets so far into a frame.- Specified by:
decodein 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 (nullif 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
-
-