Package org.jgroups.stack
Class RangeBasedRetransmitter
java.lang.Object
org.jgroups.stack.Retransmitter
org.jgroups.stack.RangeBasedRetransmitter
This retransmitter is specialized in maintaining ranges of seqnos, e.g. [3-20, [89-89], [100-120].
The ranges are stored in a sorted hashmap and the
Comparable.compareTo(Object) method compares both ranges
again ranges, and ranges against seqnos. The latter helps to find a range given a seqno, e.g. seqno 105 will find
range [100-120].
Each range is implemented by SeqnoRange, which has a bitset of all missing seqnos. When
a seqno is received, that bit set is updated; the bit corresponding to the seqno is set to 1. A task linked to
the range periodically retransmits missing messages.
When all bits are 1 (= all messages have been received), the range is removed from the hashmap and the retransmission
task is cancelled.- Author:
- Bela Ban
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class org.jgroups.stack.Retransmitter
Retransmitter.RetransmitCommand, Retransmitter.Task -
Field Summary
Fields inherited from class org.jgroups.stack.Retransmitter
cmd, log, RETRANSMIT_TIMEOUTS, sender, timer -
Constructor Summary
ConstructorsConstructorDescriptionRangeBasedRetransmitter(Address sender, Retransmitter.RetransmitCommand cmd, TimeScheduler sched) Create a new Retransmitter associated with the given sender address -
Method Summary
Modifier and TypeMethodDescriptionvoidadd(long first_seqno, long last_seqno) Add the given range [first_seqno, last_seqno] in the list of entries eligible for retransmission.intremove(long seqno) Remove the given sequence number from the list of seqnos eligible for retransmission.voidreset()Reset the retransmitter: clear all msgs and cancel all the respective tasksintsize()toString()Methods inherited from class org.jgroups.stack.Retransmitter
setRetransmitTimeouts
-
Constructor Details
-
RangeBasedRetransmitter
public RangeBasedRetransmitter(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 sentcmd- the retransmission callback referencesched- retransmissions scheduler
-
-
Method Details
-
add
public void add(long first_seqno, long last_seqno) Add the given range [first_seqno, last_seqno] in the list of entries eligible for retransmission. If first_seqno > last_seqno, then the range [last_seqno, first_seqno] is added instead- Specified by:
addin classRetransmitter
-
remove
public int remove(long seqno) Remove the given sequence number from the list of seqnos eligible for retransmission. If there are no more seqno intervals in the respective entry, cancel the entry from the retransmission scheduler and remove it from the pending entries- Specified by:
removein classRetransmitter
-
reset
public void reset()Reset the retransmitter: clear all msgs and cancel all the respective tasks- Specified by:
resetin classRetransmitter
-
toString
-
size
public int size()- Specified by:
sizein classRetransmitter
-
printStats
-