#include <RMCast_Reordering.h>
Inheritance diagram for ACE_RMCast_Reordering:
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. | |||
virtual int | ack_join (ACE_RMCast::Ack_Join &) | ||
Protected Attributes | |||
Messages | messages_ | ||
The reordering buffer. | |||
ACE_UINT32 | next_expected_ | ||
The smallest value of
| |||
ACE_UINT32 | highest_received_ | ||
The highest value of
| |||
ACE_SYNCH_MUTEX | mutex_ | ||
Synchronization. | |||
Private Methods | |||
int | push_queued_messages (void) | ||
Push any messages that are pending in the queue. |
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:
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.
|
|
|
|
|
Constructor.
|
|
Destructor.
|
|
During the join process the server informs us of the next expected message Reimplemented from ACE_RMCast_Module. |
|
Remove messages still pending.
Reimplemented from ACE_RMCast_Module. |
|
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. |
|
Push any messages that are pending in the queue.
|
|
The highest value of
|
|
The reordering buffer.
|
|
Synchronization.
|
|
The smallest value of
|