package lsr.paxos;
/**
* Intended to be a class for controlling retransmitted messages.
*
* Single object controls one message.
*
* Lets stopping message retransmission to one destination, or to all.
*
* The beginning of message re-sending should begin before (or as) the object is
* created.
*/
public interface RetransmittedMessage {
/**
* Starts retransmitting to specified destination. If the retransmitter has
* been stopped (by calling <code>stop()</code> method or by stopping all
* destinations), the retransmitting will not be started again.
*
* @param destination - the id of processes to transmit message again
*/
void start(int destination);
/**
* Stops retransmitting message to specified process. After this method is
* called, retransmitted message will not be send to
* <code>destination</code>.
*
* @param destination - id of replica
*/
void stop(int destination);
/**
* Stops retransmitting a message. No more message will be sent.
*/
void stop();
}