Package org.jgroups.stack
Class Retransmitter
java.lang.Object
org.jgroups.stack.Retransmitter
- Direct Known Subclasses:
DefaultRetransmitter,RangeBasedRetransmitter
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 ClassesModifier and TypeClassDescriptionstatic interfaceRetransmit command (see Gamma et al.) used to retrieve missing messagesprotected class -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Retransmitter.RetransmitCommandprotected static final Logprotected IntervalDefault retransmit intervals (ms) - exponential approx.protected final Addressprotected final TimeScheduler -
Constructor Summary
ConstructorsConstructorDescriptionRetransmitter(Address sender, Retransmitter.RetransmitCommand cmd, TimeScheduler sched) Create a new Retransmitter associated with the given sender address -
Method Summary
Modifier and TypeMethodDescriptionabstract voidadd(long first_seqno, long last_seqno) Add messages fromfirst_seqnotolast_seqnoinvalid input: '<'/code/> for retransmissionabstract intremove(long seqno) Remove the given sequence number from retransmissionabstract voidreset()Reset the retransmitter: clear all msgs and cancel all the respective tasksvoidsetRetransmitTimeouts(Interval interval) abstract intsize()
-
Field Details
-
RETRANSMIT_TIMEOUTS
Default retransmit intervals (ms) - exponential approx. -
sender
-
cmd
-
timer
-
log
-
-
Constructor Details
-
Retransmitter
Create a new Retransmitter associated with the given sender address- Parameters:
sender- the address from which retransmissions are expected or to which retransmissions are sentcmd- the retransmission callback referencesched- retransmissions scheduler
-
-
Method Details
-
setRetransmitTimeouts
-
add
public abstract void add(long first_seqno, long last_seqno) Add messages fromfirst_seqnotolast_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()
-