package com.ripple.core.binary;
import com.ripple.core.coretypes.hash.Hash256;
import com.ripple.core.serialized.BinarySerializer;
import com.ripple.core.serialized.BytesSink;
import com.ripple.core.serialized.SerializedType;
import com.ripple.core.types.known.sle.LedgerEntry;
import com.ripple.core.types.known.tx.result.TransactionResult;
public class STWriter implements BytesSink {
BytesSink sink;
BinarySerializer serializer;
public STWriter(BytesSink bytesSink) {
serializer = new BinarySerializer(bytesSink);
sink = bytesSink;
}
public void write(SerializedType obj) {
obj.toBytesSink(sink);
}
public void writeVl(SerializedType obj) {
serializer.addLengthEncoded(obj);
}
@Override
public void add(byte aByte) {
sink.add(aByte);
}
@Override
public void add(byte[] bytes) {
sink.add(bytes);
}
public void write(TransactionResult result) {
write(result.hash);
writeVl(result.txn);
writeVl(result.meta);
}
public void write(Hash256 hash256, LedgerEntry le) {
write(hash256);
writeVl(le);
}
}