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

# ACE_RMCast_Reordering Class Reference

Pass messages up in sent order. 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.
virtual | ~ACE_RMCast_Reordering (void)
| Destructor.
virtual int | close (void)
| Remove messages still pending.
virtual int | data (ACE_RMCast::Data &)
| Process a Data message. More...
virtual int | ack_join (ACE_RMCast::Ack_Join &)
| During the join process the server informs us of the next expected message.
## Protected Attributes
Messages | messages_
| The reordering buffer.
ACE_UINT32 | next_expected_
  | The smallest value of Parameters:
  next_expected | for all the proxies.
ACE_UINT32 | highest_received_
  | The highest value of Parameters:
  highest_received | for all the proxies.
ACE_SYNCH_MUTEX | mutex_
| Synchronization.
## Private Methods
int | push_queued_messages (void)
| Push any messages that are pending in the queue.

## Detailed Description

Pass messages up in sent order.

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 )`[inline, 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. 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