public static Header fromByteBuffer()

in src/main/java/software/amazon/awssdk/crt/eventstream/Header.java [153:210]


    public static Header fromByteBuffer(final ByteBuffer buffer) {
        Header header = new Header();

        int nameLen = buffer.get();
        byte[] nameBuffer = new byte[nameLen];
        buffer.get(nameBuffer);
        header.headerName = new String(nameBuffer, StandardCharsets.UTF_8);

        int type = buffer.get();
        HeaderType headerType = HeaderType.getValueFromInt(type);
        header.headerType = headerType;

        switch (headerType) {
            case BooleanFalse:
            case BooleanTrue:
                break;
            case Byte:
                header.headerValue = new byte[1];
                buffer.get(header.headerValue);
                break;
            case Int16:
                header.headerValue = new byte[2];
                buffer.get(header.headerValue);
                break;
            case Int32:
                header.headerValue = new byte[4];
                buffer.get(header.headerValue);
                break;
            case Int64:
                header.headerValue = new byte[8];
                buffer.get(header.headerValue);
                break;
            case ByteBuf:
                short bufLen = buffer.getShort();
                byte[] bufValue = new byte[bufLen];
                buffer.get(bufValue);
                header.setValue(bufValue);
                break;
            case String:
                short strLen = buffer.getShort();
                byte[] strValue = new byte[strLen];
                buffer.get(strValue);
                header.setValue(new String(strValue, StandardCharsets.UTF_8));
                break;
            case TimeStamp:
                header.headerValue = new byte[8];
                buffer.get(header.headerValue);
                break;
            case UUID:
                header.headerValue = new byte[16];
                buffer.get(header.headerValue);
                break;
            default:
                throw new CrtRuntimeException("Invalid event-stream header buffer.");
        }

        return header;
    }