code: protected long getUnadjustedFrameLength(ByteBuf buf, int offset, int length, ByteOrder order) {
          buf = buf.order(order);
          long frameLength;
          switch (length) {
          case 1:
              frameLength = buf.getUnsignedByte(offset);
              break;
          case 2:
              frameLength = buf.getUnsignedShort(offset);
              break;
          case 3:
              frameLength = buf.getUnsignedMedium(offset);
              break;
          case 4:
              frameLength = buf.getUnsignedInt(offset);
              break;
          case 8:
              frameLength = buf.getLong(offset);
              break;
          default:
              throw new DecoderException(
                      "unsupported lengthFieldLength: " + lengthFieldLength + " (expected: 1, 2, 3, 4, or 8)");
          }
          return frameLength;
      }
docs: Decodes the specified region of the buffer into an unadjusted frame length.  The default implementation is
  capable of decoding the specified region into an unsigned 8/16/24/32/64 bit integer.  Override this method to
  decode the length field encoded differently.  Note that this method must not modify the state of the specified
  buffer (e.g. {@code readerIndex}, {@code writerIndex}, and the content of the buffer.)
  
  @throws DecoderException if failed to decode the specified region