blob: 5bec1a94e9150de27a29cba34324e7b0cef8452b [file] [log] [blame]
package com.android.server.backup.encryption.chunk;
import android.util.proto.ProtoInputStream;
import java.io.IOException;
/**
* Information about a chunk entry in a protobuf. Only used for reading from a {@link
* ProtoInputStream}.
*/
public class Chunk {
/**
* Reads a Chunk from a {@link ProtoInputStream}. Expects the message to be of format {@link
* ChunksMetadataProto.Chunk}.
*
* @param inputStream currently at a {@link ChunksMetadataProto.Chunk} message.
* @throws IOException when the message is not structured as expected or a field can not be
* read.
*/
static Chunk readFromProto(ProtoInputStream inputStream) throws IOException {
Chunk result = new Chunk();
while (inputStream.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
switch (inputStream.getFieldNumber()) {
case (int) ChunksMetadataProto.Chunk.HASH:
result.mHash = inputStream.readBytes(ChunksMetadataProto.Chunk.HASH);
break;
case (int) ChunksMetadataProto.Chunk.LENGTH:
result.mLength = inputStream.readInt(ChunksMetadataProto.Chunk.LENGTH);
break;
}
}
return result;
}
private int mLength;
private byte[] mHash;
/** Private constructor. This class should only be instantiated by calling readFromProto. */
private Chunk() {
// Set default values for fields in case they are not available in the proto.
mHash = new byte[]{};
mLength = 0;
}
public int getLength() {
return mLength;
}
public byte[] getHash() {
return mHash;
}
}