private WebSocketFrame decodeBinaryFrame(byte type, ChannelBuffer buffer) throws TooLongFrameException { long frameSize = 0; int lengthFieldSize = 0; byte b; do { b = buffer.readByte(); frameSize <<= 7; frameSize |= b & 0x7f; if (frameSize > maxFrameSize) { throw new TooLongFrameException(); } lengthFieldSize++; if (lengthFieldSize > 8) { // Perhaps a malicious peer? throw new TooLongFrameException(); } } while ((b & 0x80) == 0x80); if (type == (byte) 0xFF && frameSize == 0) { receivedClosingHandshake = true; return new CloseWebSocketFrame(); } return new BinaryWebSocketFrame(buffer.readBytes((int) frameSize)); }
@Override public void close() { if (channel.isOpen()) { onClose(); listeners.clear(); channel.write(new CloseWebSocketFrame()).addListener(ChannelFutureListener.CLOSE); } }
checkCloseFrameBody(channel, framePayload); receivedClosingHandshake = true; return new CloseWebSocketFrame(frameFinalFlag, frameRsv, framePayload);
@Override public void close() { if (channel.isOpen()) { onClose(); listeners.clear(); channel.write(new CloseWebSocketFrame()).addListener(ChannelFutureListener.CLOSE); } }
@Override public void close() { if (channel.isOpen()) { onClose(1000, "Normal closure; the connection successfully completed whatever purpose for which it was created."); listeners.clear(); channel.write(new CloseWebSocketFrame()).addListener(ChannelFutureListener.CLOSE); } }
@Override public void close() { if (channel.isOpen()) { onClose(); listeners.clear(); channel.write(new CloseWebSocketFrame()).addListener(ChannelFutureListener.CLOSE); } }