#include <RMCast_Retransmission.h>
Inheritance diagram for ACE_RMCast_Retransmission:
Public Types | |
typedef ACE_RB_Tree< ACE_UINT32, ACE_RMCast::Data, ACE_Less_Than< ACE_UINT32 >, ACE_Null_Mutex > | Collection |
Use a Red-Black Tree to keep the queue of messages. | |
typedef ACE_RB_Tree_Iterator< ACE_UINT32, ACE_RMCast::Data, ACE_Less_Than< ACE_UINT32 >, ACE_Null_Mutex > | Collection_Iterator |
typedef ACE_RMCast_Copy_On_Write< ACE_UINT32, ACE_RMCast::Data, Collection, Collection_Iterator > | Messages |
Public Methods | |
ACE_RMCast_Retransmission (void) | |
Constructor. | |
virtual | ~ACE_RMCast_Retransmission (void) |
Destructor. | |
int | resend (ACE_UINT32 max_sequence_number) |
Resend messages. | |
int | resend_all (void) |
Resend all messages. | |
int | has_data (void) |
Return 0 if there is no pending data to send. | |
virtual int | close (void) |
Cleanup all the stored messages. | |
virtual int | data (ACE_RMCast::Data &data) |
virtual int | ack (ACE_RMCast::Ack &) |
Process an Ack message from the remote receivers. | |
virtual int | join (ACE_RMCast::Join &) |
Detect when new members join the group and Ack_Join them. | |
virtual int | leave (ACE_RMCast::Leave &) |
A receiver is leaving. | |
Protected Attributes | |
Messages | messages_ |
The retransmission buffer. |
Reliable configurations of the RMCast framework need to store messages on the sender side to resend them if one or more clients do not receive them successfully.
|
Use a Red-Black Tree to keep the queue of messages.
|
|
|
|
The messages are stored in the Copy_On_Write wrapper to provide an efficient, but thread safe interface. |
|
Constructor.
|
|
Destructor.
|
|
Process an Ack message from the remote receivers. Normally this Ack message will be a summary of all the Ack messages received by the ACE_RMCast_Membership class Reimplemented from ACE_RMCast_Module. |
|
Cleanup all the stored messages.
Reimplemented from ACE_RMCast_Module. |
|
Sequence number are assigned by the ACE_RMCast_Fragmentation class, consequently this class first passes the message downstream, to obtain the sequence number and then stores the message for later retransmission. Reimplemented from ACE_RMCast_Module. |
|
Return 0 if there is no pending data to send.
|
|
Detect when new members join the group and Ack_Join them. When a new receiver joins the group this module sends an Ack_Join message with the next sequence number that the receiver should expect. The sequence number is obtained from the current list of cached messages. Reimplemented from ACE_RMCast_Module. |
|
A receiver is leaving. Normally the ACE_RMCast_Membership module could do this, but, because this module processes the Join messages, it seems more natural to process the Leave messages too. Reimplemented from ACE_RMCast_Module. |
|
Resend messages. Resends all the messages up to
|
|
Resend all messages. Resends all the messages currently in the queue. |
|
The retransmission buffer.
|