public Header readValue()

in proton-j/src/main/java/org/apache/qpid/proton/codec/messaging/FastPathHeaderType.java [59:108]


    public Header readValue() {
        DecoderImpl decoder = getDecoder();
        ReadableBuffer buffer = decoder.getBuffer();
        byte typeCode = decoder.getBuffer().get();

        @SuppressWarnings("unused")
        int size = 0;
        int count = 0;

        switch (typeCode) {
            case EncodingCodes.LIST0:
                break;
            case EncodingCodes.LIST8:
                size = buffer.get() & 0xff;
                count = buffer.get() & 0xff;
                break;
            case EncodingCodes.LIST32:
                size = buffer.getInt();
                count = buffer.getInt();
                break;
            default:
                throw new DecodeException("Incorrect type found in Header encoding: " + typeCode);
        }

        Header header = new Header();

        for (int index = 0; index < count; ++index) {
            switch (index) {
                case 0:
                    header.setDurable(decoder.readBoolean(null));
                    break;
                case 1:
                    header.setPriority(decoder.readUnsignedByte(null));
                    break;
                case 2:
                    header.setTtl(decoder.readUnsignedInteger(null));
                    break;
                case 3:
                    header.setFirstAcquirer(decoder.readBoolean(null));
                    break;
                case 4:
                    header.setDeliveryCount(decoder.readUnsignedInteger(null));
                    break;
                default:
                    throw new IllegalStateException("To many entries in Header encoding");
            }
        }

        return header;
    }