package lsr.paxos.messages; import java.io.DataInputStream; import java.io.IOException; import java.nio.ByteBuffer; import lsr.paxos.Snapshot; public class CatchUpSnapshot extends Message { private static final long serialVersionUID = 1L; /** Forwards the time of request, allowing dynamic timeouts for catch-up */ private long requestTime; private Snapshot snapshot; public CatchUpSnapshot(int view, long requestTime, Snapshot snapshot) { super(view); this.requestTime = requestTime; this.snapshot = snapshot; } public CatchUpSnapshot(DataInputStream input) throws IOException { super(input); requestTime = input.readLong(); snapshot = new Snapshot(input); } public long getRequestTime() { return requestTime; } public Snapshot getSnapshot() { return snapshot; } public MessageType getType() { return MessageType.CatchUpSnapshot; } public int byteSize() { return super.byteSize() + 8 + snapshot.byteSize(); } public String toString() { return "CatchUpSnapshot (" + super.toString() + ") nextInstaceID: " + snapshot.getNextInstanceId(); } protected void write(ByteBuffer bb) { bb.putLong(requestTime); snapshot.writeTo(bb); } }