package lsr.paxos.messages; import java.io.DataInputStream; import java.io.IOException; import java.nio.ByteBuffer; /** * Represents the <code>Accept</code> message. This message is sent as a * response to <code>Propose</code> message from the leader. */ public class Accept extends Message { private static final long serialVersionUID = 1L; private final int instanceId; /** * Creates new <code>Accept</code> message as a response to * <code>Propose</code> message. * * @param message - the propose message */ public Accept(Propose message) { super(message.getView()); instanceId = message.getInstanceId(); } /** * Creates new <code>Accept</code> message with specified view and instance * id. * * @param view - the view number * @param instanceId - the instance id */ public Accept(int view, int instanceId) { super(view); this.instanceId = instanceId; } /** * Creates new <code>Accept</code> message from input stream with serialized * message. * * @param input - input stream with serialized <code>Accept</code> message * inside. * @throws IOException if I/O error occurs when deserializing */ public Accept(DataInputStream input) throws IOException { super(input); instanceId = input.readInt(); } /** * Returns the instance id. * * @return the instance id */ public int getInstanceId() { return instanceId; } public MessageType getType() { return MessageType.Accept; } public int byteSize() { return super.byteSize() + 4; } public String toString() { return "Accept(" + super.toString() + ", i:" + getInstanceId() + ")"; } protected void write(ByteBuffer bb) { bb.putInt(instanceId); } }