public abstract class Retransmitter extends Object
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.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 |
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 |
protected long |
xmit_stagger_timeout |
Constructor and Description |
---|
Retransmitter(Address sender,
Retransmitter.RetransmitCommand cmd,
TimeScheduler sched)
Create a new Retransmitter associated with the given sender address
|
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 |
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() |
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
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 schedulerpublic 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 retransmissionpublic abstract void remove(long seqno)
public abstract void reset()
public abstract int size()
Copyright © 2012 JBoss by Red Hat. All Rights Reserved.