package org.prevayler.implementation;
import org.prevayler.foundation.Chunking;
import org.prevayler.foundation.Guided;
import org.prevayler.foundation.Turn;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
public class TransactionGuide extends Guided {
private final TransactionTimestamp _transactionTimestamp;
public TransactionGuide(TransactionTimestamp transactionTimestamp, Turn pipelineTurn) {
super(pipelineTurn);
_transactionTimestamp = transactionTimestamp;
}
public TransactionTimestamp timestamp() {
return _transactionTimestamp;
}
public void checkSystemVersion(long expectedSystemVersion) {
if (_transactionTimestamp.systemVersion() != expectedSystemVersion) {
throw new IllegalStateException("Attempted to process " + _transactionTimestamp.systemVersion() + " when ready for " + expectedSystemVersion);
}
}
public Date executionTime() {
return _transactionTimestamp.executionTime();
}
public void writeTo(OutputStream stream) throws IOException {
Chunking.writeChunk(stream, _transactionTimestamp.toChunk());
}
}