public static void serializeBlobProperties(ByteBuf outputBuf, BlobProperties properties) {
    if (!outputBuf.isWritable(getBlobPropertiesSerDeSize(properties))) {
      throw new IllegalArgumentException("Output buffer does not have sufficient space to serialize blob properties");
    }
    outputBuf.writeShort(CURRENT_VERSION);
    outputBuf.writeLong(properties.getTimeToLiveInSeconds());
    outputBuf.writeByte(properties.isPrivate() ? (byte) 1 : (byte) 0);
    outputBuf.writeLong(properties.getCreationTimeInMs());
    outputBuf.writeLong(properties.getBlobSize());
    Utils.serializeNullableString(outputBuf, properties.getContentType());
    Utils.serializeNullableString(outputBuf, properties.getOwnerId());
    Utils.serializeNullableString(outputBuf, properties.getServiceId());
    outputBuf.writeShort(properties.getAccountId());
    outputBuf.writeShort(properties.getContainerId());
    outputBuf.writeByte(properties.isEncrypted() ? (byte) 1 : (byte) 0);
    Utils.serializeNullableString(outputBuf, properties.getContentEncoding());
    Utils.serializeNullableString(outputBuf, properties.getFilename());
    if (CURRENT_VERSION == VERSION_5) {
      Utils.serializeNullableString(outputBuf, properties.getReservedMetadataBlobId());
    }
  }
Serialize {@link BlobProperties} to {@link ByteBuf} in the {@link #CURRENT_VERSION}
@param outputBuf the {@link ByteBuf} to which {@link BlobProperties} needs to be serialized
@param properties the {@link BlobProperties} that needs to be serialized
ambry-messageformat/src/main/java/com/github/ambry/messageformat/BlobPropertiesSerDe.java