|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.jgroups.stack.Retransmitter
public abstract class Retransmitter
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.
Nested Class Summary | |
---|---|
static interface |
Retransmitter.RetransmitCommand
Retransmit command (see Gamma et al.) used to retrieve missing messages |
protected class |
Retransmitter.Task
|
Field Summary | |
---|---|
protected Retransmitter.RetransmitCommand |
cmd
|
protected static Log |
log
|
protected Interval |
retransmit_timeouts
Default retransmit intervals (ms) - exponential approx. |
protected Address |
sender
|
protected TimeScheduler |
timer
|
protected long |
xmit_stagger_timeout
|
Constructor Summary | |
---|---|
Retransmitter(Address sender,
Retransmitter.RetransmitCommand cmd,
TimeScheduler sched)
Create a new Retransmitter associated with the given sender address |
Method Summary | |
---|---|
abstract void |
add(long first_seqno,
long last_seqno)
Add messages from first_seqno to last_seqno for retransmission |
long |
getXmitStaggerTimeout()
|
abstract void |
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)
|
void |
setXmitStaggerTimeout(long xmit_stagger_timeout)
|
abstract int |
size()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected Interval retransmit_timeouts
protected final Address sender
protected final Retransmitter.RetransmitCommand cmd
protected final TimeScheduler timer
protected long xmit_stagger_timeout
protected static final Log log
Constructor Detail |
---|
public Retransmitter(Address sender, Retransmitter.RetransmitCommand cmd, TimeScheduler sched)
sender
- the address from which retransmissions are expected or to which retransmissions are sentcmd
- the retransmission callback referencesched
- retransmissions schedulerMethod Detail |
---|
public void setRetransmitTimeouts(Interval interval)
public long getXmitStaggerTimeout()
public void setXmitStaggerTimeout(long xmit_stagger_timeout)
public abstract void add(long first_seqno, long last_seqno)
first_seqno
to last_seqno
for retransmission
public abstract void remove(long seqno)
public abstract void reset()
public abstract int size()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |