src/main/java/org/java_websocket/drafts/Draft_6455.java
private TranslatedPayloadMetaData translateSingleFramePayloadLength(ByteBuffer buffer, Opcode optcode, int oldPayloadlength, int maxpacketsize, int oldRealpacketsize) throws InvalidFrameException, IncompleteException, LimitExceededException {
        int payloadlength = oldPayloadlength,
				realpacketsize = oldRealpacketsize;
    	if( optcode == Opcode.PING || optcode == Opcode.PONG || optcode == Opcode.CLOSING ) {
            log.trace( "Invalid frame: more than 125 octets" );
            throw new InvalidFrameException( "more than 125 octets" );
        }
        if( payloadlength == 126 ) {
            realpacketsize += 2; // additional length bytes
            translateSingleFrameCheckPacketSize(maxpacketsize, realpacketsize);
            byte[] sizebytes = new byte[3];
            sizebytes[1] = buffer.get( /*1 + 1*/ );
            sizebytes[2] = buffer.get( /*1 + 2*/ );
            payloadlength = new BigInteger( sizebytes ).intValue();
        } else {
            realpacketsize += 8; // additional length bytes
            translateSingleFrameCheckPacketSize(maxpacketsize, realpacketsize);
            byte[] bytes = new byte[8];
            for( int i = 0; i < 8; i++ ) {
                bytes[i] = buffer.get( /*1 + i*/ );
            }
            long length = new BigInteger( bytes ).longValue();
            translateSingleFrameCheckLengthLimit(length);
            payloadlength = ( int ) length;
        }
        return new TranslatedPayloadMetaData(payloadlength, realpacketsize);
    }
private TranslatedPayloadMetaData translateSingleFramePayloadLength(ByteBuffer buffer, Opcode optcode, int oldPayloadlength, int maxpacketsize, int oldRealpacketsize) throws InvalidFrameException, IncompleteException, LimitExceededException {
        int payloadlength = oldPayloadlength,
				realpacketsize = oldRealpacketsize;
    	if( optcode == Opcode.PING || optcode == Opcode.PONG || optcode == Opcode.CLOSING ) {
            log.trace( "Invalid frame: more than 125 octets" );
            throw new InvalidFrameException( "more than 125 octets" );
        }
        if( payloadlength == 126 ) {
            realpacketsize += 2; // additional length bytes
            translateSingleFrameCheckPacketSize(maxpacketsize, realpacketsize);
            byte[] sizebytes = new byte[3];
            sizebytes[1] = buffer.get( /*1 + 1*/ );
            sizebytes[2] = buffer.get( /*1 + 2*/ );
            payloadlength = new BigInteger( sizebytes ).intValue();
        } else {
            realpacketsize += 8; // additional length bytes
            translateSingleFrameCheckPacketSize(maxpacketsize, realpacketsize);
            byte[] bytes = new byte[8];
            for( int i = 0; i < 8; i++ ) {
                bytes[i] = buffer.get( /*1 + i*/ );
            }
            long length = new BigInteger( bytes ).longValue();
            translateSingleFrameCheckLengthLimit(length);
            payloadlength = ( int ) length;
        }
        return new TranslatedPayloadMetaData(payloadlength, realpacketsize);
    }
private TranslatedPayloadMetaData translateSingleFramePayloadLength ( ByteBuffer buffer , Opcode optcode , int oldPayloadlength , int maxpacketsize , int oldRealpacketsize ) throws InvalidFrameException , IncompleteException , LimitExceededException { int payloadlength = oldPayloadlength , realpacketsize = oldRealpacketsize ; if ( optcode == Opcode . PING || optcode == Opcode . PONG || optcode == Opcode . CLOSING ) { log . trace ( "Invalid frame: more than 125 octets" ) ; throw new InvalidFrameException ( "more than 125 octets" ) ; } if ( payloadlength == 126 ) { realpacketsize += 2 ; // additional length bytes translateSingleFrameCheckPacketSize ( maxpacketsize , realpacketsize ) ; byte [ ] sizebytes = new byte [ 3 ] ; sizebytes [ 1 ] = buffer . get ( /*1 + 1*/ ) ; sizebytes [ 2 ] = buffer . get ( /*1 + 2*/ ) ; payloadlength = new BigInteger ( sizebytes ) . intValue ( ) ; } else { realpacketsize += 8 ; // additional length bytes translateSingleFrameCheckPacketSize ( maxpacketsize , realpacketsize ) ; byte [ ] bytes = new byte [ 8 ] ; for ( int i = 0 ; i < 8 ; i ++ ) { bytes [ i ] = buffer . get ( /*1 + i*/ ) ; } long length = new BigInteger ( bytes ) . longValue ( ) ; translateSingleFrameCheckLengthLimit ( length ) ; payloadlength = ( int ) length ; } return new TranslatedPayloadMetaData ( payloadlength , realpacketsize ) ; }
Translate the buffer depending when it has an extended payload length (126 or 127)
@param buffer the buffer to read from
@param optcode the decoded optcode
@param oldPayloadlength the old payload length
@param maxpacketsize the max packet size allowed
@param oldRealpacketsize the real packet size
@return the new payload data containing new payload length and new packet size
@throws InvalidFrameException thrown if a control frame has an invalid length
@throws IncompleteException if the maxpacketsize is smaller than the realpackagesize
@throws LimitExceededException if the payload length is to big
Translate the buffer depending when it has an extended payload length ( 126 or 127 )