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

# ACE_RMCast_Reordering Class Reference

Some applications require receivers to process messages in the same order that messages are sent. More...

`#include <RMCast_Reordering.h>`

Inheritance diagram for ACE_RMCast_Reordering:

[legend]
Collaboration diagram for ACE_RMCast_Reordering:

[legend]
List of all members.

## Public Types
typedef ACE_RB_Tree< ACE_UINT32, ACE_RMCast::Data, ACE_Less_Than< ACE_UINT32 >, ACE_Null_Mutex > | Messages
typedef ACE_RB_Tree_Iterator< ACE_UINT32, ACE_RMCast::Data, ACE_Less_Than< ACE_UINT32 >, ACE_Null_Mutex > | Messages_Iterator
## Public Methods
| ACE_RMCast_Reordering (void)
| Constructor. More...
virtual | ~ACE_RMCast_Reordering (void)
| Destructor. More...
virtual int | close (void)
| Remove messages still pending. More...
virtual int | data (ACE_RMCast::Data &)
| Process a Data message, sending the right Ack message back. More...
virtual int | ack_join (ACE_RMCast::Ack_Join &)
| During the join process the server informs us of the next expected message. More...
## Protected Attributes
Messages | messages_
| The reordering buffer. More...
ACE_UINT32 | next_expected_
  | The smallest value of Parameters:
  next_expected | for all the proxies.
More...
ACE_UINT32 | highest_received_
  | The highest value of Parameters:
  highest_received | for all the proxies.
More...
ACE_SYNCH_MUTEX | mutex_
| Synchronization. More...
## Private Methods
int | push_queued_messages (void)
| Push any messages that are pending in the queue. More...

## Detailed Description

Some applications require receivers to process messages in the same order that messages are sent.

This module buffers out of order messages and only delivers a message if:

- All the previous messages have been delivered.
- The sender sends a notification that previous messages will not be resent.

The module also sends the Ack feedback to the sender.

NOTE: This is not the same as causal or total ordering, that could be implemented someday, but requires a lot more than what we have right now.

## Member Typedef Documentation

typedef ACE_RB_Tree<ACE_UINT32,ACE_RMCast::Data,ACE_Less_Than<ACE_UINT32>,ACE_Null_Mutex> ACE_RMCast_Reordering::Messages

typedef ACE_RB_Tree_Iterator<ACE_UINT32,ACE_RMCast::Data,ACE_Less_Than<ACE_UINT32>,ACE_Null_Mutex> ACE_RMCast_Reordering::Messages_Iterator

## Constructor & Destructor Documentation

ACE_INLINE ACE_RMCast_Reordering::ACE_RMCast_Reordering | ( | void |  | ) |

| Constructor.

ACE_RMCast_Reordering::~ACE_RMCast_Reordering | ( | void |  | ) | `[virtual]`

| Destructor.

## Member Function Documentation

int ACE_RMCast_Reordering::ack_join | ( | ACE_RMCast::Ack_Join & | ack_join | ) | `[virtual]`

| During the join process the server informs us of the next expected message. Reimplemented from ACE_RMCast_Module.

int ACE_RMCast_Reordering::close | ( | void |  | ) | `[virtual]`

| Remove messages still pending. Reimplemented from ACE_RMCast_Module.

int ACE_RMCast_Reordering::data | ( | ACE_RMCast::Data & | data | ) | `[virtual]`

| Process a Data message, sending the right Ack message back. The message is passed up only if it is in order. Reimplemented from ACE_RMCast_Module.

int ACE_RMCast_Reordering::push_queued_messages | ( | void |  | ) | `[private]`

| Push any messages that are pending in the queue.

## Member Data Documentation

ACE_UINT32 ACE_RMCast_Reordering::highest_received_`[protected]`

  | The highest value of Parameters:
  highest_received | for all the proxies.

Messages ACE_RMCast_Reordering::messages_`[protected]`

| The reordering buffer.

ACE_SYNCH_MUTEX ACE_RMCast_Reordering::mutex_`[protected]`

| Synchronization.

ACE_UINT32 ACE_RMCast_Reordering::next_expected_`[protected]`

  | The smallest value of Parameters:
  next_expected | for all the proxies.

The documentation for this class was generated from the following files:

- RMCast_Reordering.h
- RMCast_Reordering.cpp
- RMCast_Reordering.i