ACE_RMCast_Retransmission Class Reference

Store messages for retransmission in reliable configurations. More...

#include <RMCast_Retransmission.h>

Inheritance diagram for ACE_RMCast_Retransmission:

Inheritance graph
[legend]
Collaboration diagram for ACE_RMCast_Retransmission:

Collaboration graph
[legend]
List of all members.

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 Member Functions

 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.

Detailed Description

Store messages for retransmission in reliable configurations.

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.


Member Typedef Documentation

typedef ACE_RB_Tree<ACE_UINT32,ACE_RMCast::Data,ACE_Less_Than<ACE_UINT32>,ACE_Null_Mutex> ACE_RMCast_Retransmission::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> ACE_RMCast_Retransmission::Collection_Iterator
 

typedef ACE_RMCast_Copy_On_Write<ACE_UINT32,ACE_RMCast::Data,Collection,Collection_Iterator> ACE_RMCast_Retransmission::Messages
 

The messages are stored in the Copy_On_Write wrapper to provide an efficient, but thread safe interface.


Constructor & Destructor Documentation

ACE_INLINE ACE_RMCast_Retransmission::ACE_RMCast_Retransmission void   ) 
 

Constructor.

ACE_RMCast_Retransmission::~ACE_RMCast_Retransmission void   )  [virtual]
 

Destructor.


Member Function Documentation

int ACE_RMCast_Retransmission::ack ACE_RMCast::Ack  )  [virtual]
 

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.

int ACE_RMCast_Retransmission::close void   )  [virtual]
 

Cleanup all the stored messages.

Reimplemented from ACE_RMCast_Module.

int ACE_RMCast_Retransmission::data ACE_RMCast::Data data  )  [virtual]
 

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.

int ACE_RMCast_Retransmission::has_data void   ) 
 

Return 0 if there is no pending data to send.

int ACE_RMCast_Retransmission::join ACE_RMCast::Join  )  [virtual]
 

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.

int ACE_RMCast_Retransmission::leave ACE_RMCast::Leave  )  [virtual]
 

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.

int ACE_RMCast_Retransmission::resend ACE_UINT32  max_sequence_number  ) 
 

Resend messages.

Resends all the messages up to

Parameters:
max_sequence_number Returns the number of messages sent, or -1 if there where any errors.

int ACE_RMCast_Retransmission::resend_all void   ) 
 

Resend all messages.

Resends all the messages currently in the queue.


Member Data Documentation

Messages ACE_RMCast_Retransmission::messages_ [protected]
 

The retransmission buffer.


The documentation for this class was generated from the following files:
Generated on Wed Nov 23 15:54:25 2005 for ACE_RMCast by  doxygen 1.4.5