Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members

# ACE_RMCast_Retransmission Class Reference

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

`#include <RMCast_Retransmission.h>`

Inheritance diagram for ACE_RMCast_Retransmission:

[legend]
Collaboration diagram for ACE_RMCast_Retransmission:

[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 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.

## 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:

- RMCast_Retransmission.h
- RMCast_Retransmission.cpp
- RMCast_Retransmission.i