org.jgroups.stack

## Class Retransmitter

- java.lang.Object
- - org.jgroups.stack.Retransmitter

- Direct Known Subclasses:
    DefaultRetransmitter, RangeBasedRetransmitter

      public abstract class Retransmitter
      extends java.lang.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

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `Retransmitter.RetransmitCommand` Retransmit command (see Gamma et al.) used to retrieve missing messages
    `protected class` | `Retransmitter.Task`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Retransmitter.RetransmitCommand` | `cmd`
    `protected static Log` | `log`
    `protected Interval` | `RETRANSMIT_TIMEOUTS` Default retransmit intervals (ms) - exponential approx.
    `protected Address` | `sender`
    `protected TimeScheduler` | `timer`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Retransmitter(Address sender, Retransmitter.RetransmitCommand cmd, TimeScheduler sched)` Create a new Retransmitter associated with the given sender address

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract void` | `add(long first_seqno, long last_seqno)` Add messages from `first_seqno` to `last_seqno` for retransmission
    `abstract int` | `remove(long seqno)` Remove the given sequence number from retransmission
    `abstract void` | `reset()` Reset the retransmitter: clear all msgs and cancel all the respective tasks
    `void` | `setRetransmitTimeouts(Interval interval)`
    `abstract int` | `size()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### RETRANSMIT_TIMEOUTS

          protected Interval RETRANSMIT_TIMEOUTS

      Default retransmit intervals (ms) - exponential approx.

    - #### sender

          protected final Address sender

    - #### cmd

          protected final Retransmitter.RetransmitCommand cmd

    - #### timer

          protected final TimeScheduler timer

    - #### log

          protected static final Log log

  - ### Constructor Detail

    - #### 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 Detail

    - #### setRetransmitTimeouts

          public void setRetransmitTimeouts(Interval interval)

    - #### add

          public abstract void add(long first_seqno,
                 long last_seqno)

      Add messages from `first_seqno` to `last_seqno` 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()

Copyright © 1998-2009 Bela Ban / Red Hat. All Rights Reserved.