package lsr.paxos.messages;
import java.io.DataInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Arrays;
public class RecoveryAnswer extends Message {
private static final long serialVersionUID = 1L;
private final long[] epoch;
private final long nextId;
public RecoveryAnswer(int view, long[] epoch, long nextId) {
super(view);
this.epoch = epoch;
this.nextId = nextId;
}
public RecoveryAnswer(int view, long nextId) {
super(view);
this.epoch = new long[0];
this.nextId = nextId;
}
public RecoveryAnswer(DataInputStream input) throws IOException {
super(input);
int epochSize = input.readInt();
epoch = new long[epochSize];
for (int i = 0; i < epoch.length; ++i) {
epoch[i] = input.readLong();
}
nextId = input.readLong();
}
protected void write(ByteBuffer bb) {
bb.putInt(epoch.length);
for (int i = 0; i < epoch.length; ++i) {
bb.putLong(epoch[i]);
}
bb.putLong(nextId);
}
public int byteSize() {
int size = super.byteSize();
size += 4 + epoch.length * 8; // epoch
size += 8; // nextId
return size;
}
public long[] getEpoch() {
return epoch;
}
public MessageType getType() {
return MessageType.RecoveryAnswer;
}
public long getNextId() {
return nextId;
}
public String toString() {
return "RecoveryAnswer(" + super.toString() + ",e=" + Arrays.toString(epoch) + ",next=" +
nextId + ")";
}
}