#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 Member Functions | |
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 next_expected for all the proxies. | |
ACE_UINT32 | highest_received_ |
The highest value of highest_received for all the proxies. | |
ACE_SYNCH_MUTEX | mutex_ |
Synchronization. | |
Private Member Functions | |
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:
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.
|
|
|
|
|
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 highest_received for all the proxies.
|
|
The reordering buffer.
|
|
Synchronization.
|
|
The smallest value of next_expected for all the proxies.
|