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 ChannelHandler
ChannelHandler.Sharable -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final booleanprivate intprivate booleanprivate intprivate ChannelBufferprivate intprivate longprivate intprivate static final InternalLoggerprivate final booleanprivate ChannelBufferprivate final longprivate static final byteprivate static final byteprivate static final byteprivate static final byteprivate static final byteprivate static final byteprivate booleanprivate Utf8ValidatorFields inherited from class 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 voidcheckCloseFrameBody(Channel channel, ChannelBuffer buffer) private voidcheckUTF8String(Channel channel, byte[] bytes) protected Objectdecode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer, WebSocket08FrameDecoder.State state) Decodes the received packets so far into a frame.private voidprotocolViolation(Channel channel, String reason) private voidprotocolViolation(Channel channel, CorruptedFrameException ex) private static inttoFrameLength(long l) private voidunmask(ChannelBuffer frame) Methods inherited from class ReplayingDecoder
checkpoint, checkpoint, cleanup, decode, decodeLast, decodeLast, getState, internalBuffer, messageReceived, setStateMethods inherited from class FrameDecoder
actualReadableBytes, afterAdd, afterRemove, appendToCumulation, beforeAdd, beforeRemove, channelClosed, channelDisconnected, exceptionCaught, extractFrame, getMaxCumulationBufferCapacity, getMaxCumulationBufferComponents, isUnfold, newCumulationBuffer, replace, setMaxCumulationBufferCapacity, setMaxCumulationBufferComponents, setUnfold, unfoldAndFireMessageReceived, updateCumulationMethods inherited from class 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: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:
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
-