Newer
Older
/**
* @author ETSI / STF462 / Alexandre Berge
* @version $URL: $
* $Id: $
*/
package org.etsi.ttcn.codec.its.uppertester;
import org.etsi.ttcn.codec.CodecBuffer;
import org.etsi.ttcn.codec.IMarkerCallback;
import org.etsi.ttcn.codec.MainCodec;
import org.etsi.ttcn.codec.generic.Record;
import org.etsi.common.ByteHelper;
import org.etsi.ttcn.tci.Value;
public class UtPayload extends Record implements IMarkerCallback {
public UtPayload(MainCodec mainCodec) {
super(mainCodec);
}
@Override
public CodecBuffer preEncode(Value value) {
CodecBuffer buf = new CodecBuffer(new byte[] {(byte)0x00, (byte)0x00});
buf.setMarker("payloadLength", 0, this);
return buf;
}
@Override
public void run(String markerName, CodecBuffer leftBuf, CodecBuffer rightBuf) {
if(markerName.equals("payloadLength")) {
int length = (rightBuf.getNbBits() - 16) / 8;
CodecBuffer preserveRightBuf = rightBuf.getBuffer(16, rightBuf.getNbBits() - 16);
rightBuf.setBytes(ByteHelper.intToByteArray(length, 2));
rightBuf.append(preserveRightBuf);
}
}
}