Class Retransmitter

java.lang.Object
org.jgroups.stack.Retransmitter
Direct Known Subclasses:
DefaultRetransmitter, RangeBasedRetransmitter

public abstract class Retransmitter extends Object
Abstract class of a retransmitter. Maintains a pool of sequence numbers of messages that need to be retransmitted. Messages are aged and retransmission requests sent according to age (configurable backoff). If a TimeScheduler instance is given to the constructor, it will be used, otherwise Reransmitter will create its own. The retransmit timeouts have to be set first thing after creating an instance. The add() method adds the sequence numbers of messages to be retransmitted. The remove() method removes a sequence number again, cancelling retransmission requests for it. Whenever a message needs to be retransmitted, the RetransmitCommand.retransmit() method is called. It can be used e.g. by an ack-based scheme (e.g. AckSenderWindow) to retransmit a message to the receiver, or by a nak-based scheme to send a retransmission request to the sender of the missing message.
Version:
$Revision: 1.33 $
Author:
Bela Ban
  • Field Details

  • Constructor Details

    • Retransmitter

      public Retransmitter(Address sender, Retransmitter.RetransmitCommand cmd, TimeScheduler sched)
      Create a new Retransmitter associated with the given sender address
      Parameters:
      sender - the address from which retransmissions are expected or to which retransmissions are sent
      cmd - the retransmission callback reference
      sched - retransmissions scheduler
  • Method Details

    • setRetransmitTimeouts

      public void setRetransmitTimeouts(Interval interval)
    • add

      public abstract void add(long first_seqno, long last_seqno)
      Add messages from first_seqno to last_seqnoinvalid input: '<'/code/> for retransmission
    • remove

      public abstract int remove(long seqno)
      Remove the given sequence number from retransmission
    • reset

      public abstract void reset()
      Reset the retransmitter: clear all msgs and cancel all the respective tasks
    • size

      public abstract int size()