@Override
public StorableMessageMetaData entryToObject(DatabaseEntry entry)
{
try(DataInputStream stream = new DataInputStream(new ByteArrayInputStream(entry.getData(),
entry.getOffset(),
entry.getSize())))
{
final int bodySize = stream.readInt() ^ 0x80000000;
final int metaDataType = stream.readByte() & 0xff;
MessageMetaDataType type = MessageMetaDataTypeRegistry.fromOrdinal(metaDataType);
try (QpidByteBuffer buf = QpidByteBuffer.asQpidByteBuffer(stream))
{
return type.createMetaData(buf);
}
}
catch (IOException | RuntimeException e)
{
throw new StoreException(String.format("Unable to convert entry %s to metadata", entry));
}
}