package org.yamcs.parameterarchive;
import java.nio.ByteBuffer;
import java.util.List;
import org.yamcs.parameter.Value;
import org.yamcs.utils.DecodingException;
import org.yamcs.utils.ValueUtility;
public class BinaryValueSegment extends ObjectSegment<byte[]> implements ValueSegment {
static BinarySerializer serializer = new BinarySerializer();
BinaryValueSegment(boolean buildForSerialisation) {
super(serializer, buildForSerialisation);
}
public static final int MAX_UTF8_CHAR_LENGTH = 3; //I've seen this in protobuf somwhere
protected List<String> values;
@Override
public Value getValue(int index) {
return ValueUtility.getBinaryValue(get(index));
}
public BinaryValueSegment consolidate() {
return (BinaryValueSegment) super.consolidate();
}
@Override
public void add(int pos, Value v) {
add(pos, v.getBinaryValue());
}
public static BinaryValueSegment consolidate(List<Value> values) {
BinaryValueSegment bvs = new BinaryValueSegment(true);
for(Value v: values) {
bvs.add(v.getBinaryValue());
}
return bvs.consolidate();
}
public static BinaryValueSegment parseFrom(ByteBuffer bb) throws DecodingException {
BinaryValueSegment r = new BinaryValueSegment(false);
r.parse(bb);
return r;
}
static class BinarySerializer implements ObjectSerializer<byte[]> {
@Override
public byte getFormatId() {
return BaseSegment.FORMAT_ID_BinaryValueSegment;
}
@Override
public byte[] deserialize(byte[] b) throws DecodingException {
return b;
}
@Override
public byte[] serialize(byte[] b) {
return b;
}
}
}