|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.jgroups.stack.Retransmitter
public class Retransmitter
Maintains a pool of sequence numbers of messages that need to be retransmitted. Messages
are aged and retransmission requests sent according to age (linear backoff used). 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 a range of 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 |
Field Summary | |
---|---|
protected static org.apache.commons.logging.Log |
log
|
Constructor Summary | |
---|---|
Retransmitter(Address sender,
Retransmitter.RetransmitCommand cmd)
Create a new Retransmitter associated with the given sender address |
|
Retransmitter(Address sender,
Retransmitter.RetransmitCommand cmd,
TimeScheduler sched)
Create a new Retransmitter associated with the given sender address |
Method Summary | |
---|---|
void |
add(long first_seqno,
long last_seqno)
Add the given range [first_seqno, last_seqno] in the list of entries eligible for retransmission. |
static void |
main(java.lang.String[] args)
|
void |
remove(long seqno)
Remove the given sequence number from the list of seqnos eligible for retransmission. |
void |
reset()
Reset the retransmitter: clear all msgs and cancel all the respective tasks |
void |
setRetransmitTimeouts(long[] timeouts)
|
int |
size()
|
void |
stop()
Stop the rentransmition and clear all pending msgs. |
java.lang.String |
toString()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected static final org.apache.commons.logging.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 schedulerpublic Retransmitter(Address sender, Retransmitter.RetransmitCommand cmd)
sender
- the address from which retransmissions are expected or to which retransmissions are sentcmd
- the retransmission callback referenceMethod Detail |
---|
public void setRetransmitTimeouts(long[] timeouts)
public void add(long first_seqno, long last_seqno)
If retransmitter thread is suspended, wake it up
public void remove(long seqno)
public void reset()
public void stop()
If this retransmitter has been provided an externally managed scheduler, then just clear all msgs and the associated tasks, else stop the scheduler. In this case the method blocks until the scheduler's thread is dead. Only the owner of the scheduler should stop it.
public java.lang.String toString()
toString
in class java.lang.Object
public int size()
public static void main(java.lang.String[] args)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |