package org.yamcs.parameterarchive;
import java.nio.ByteBuffer;
import org.yamcs.utils.DecodingException;
public class SegmentEncoderDecoder {
public byte[] encode(BaseSegment valueSegment) {
ByteBuffer bb = ByteBuffer.allocate(2+valueSegment.getMaxSerializedSize());
bb.put(valueSegment.getFormatId());
valueSegment.writeTo(bb);
if(bb.position()<bb.capacity()) {
int length = bb.position();
byte[] v = new byte[length];
bb.rewind();
bb.get(v, 0, length);
return v;
} else {
return bb.array();
}
}
public BaseSegment decode(byte[] buf, long segmentStart) throws DecodingException {
ByteBuffer bb = ByteBuffer.wrap(buf);
byte formatId = bb.get();
BaseSegment vs = BaseSegment.parseSegment(formatId, segmentStart, bb);
return vs;
}
}