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;
}