OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <MessageTracker.h>
Public Member Functions | |
MessageTracker (const OPENDDS_STRING &msg_src) | |
void | message_sent () |
void | message_delivered () |
void | message_dropped () |
bool | pending_messages () const |
void | wait_messages_pending (const char *caller) |
void | wait_messages_pending (const char *caller, const MonotonicTimePoint &deadline) |
int | dropped_count () const |
Private Types | |
typedef ConditionVariable< ACE_Thread_Mutex > | ConditionVariableType |
All messages have been transported condition variable. More... | |
Private Member Functions | |
bool | pending_messages_i () const |
Private Attributes | |
const OPENDDS_STRING | msg_src_ |
int | dropped_count_ |
int | delivered_count_ |
int | sent_count_ |
ACE_Thread_Mutex | lock_ |
ConditionVariableType | done_condition_ |
A simple message tracker to use to wait until all messages have been accounted for being continuing processing.
Definition at line 27 of file MessageTracker.h.
|
private |
All messages have been transported condition variable.
Definition at line 79 of file MessageTracker.h.
OpenDDS::DCPS::MessageTracker::MessageTracker | ( | const OPENDDS_STRING & | msg_src | ) |
Definition at line 21 of file MessageTracker.cpp.
int OpenDDS::DCPS::MessageTracker::dropped_count | ( | ) | const |
For testing.
Definition at line 129 of file MessageTracker.cpp.
References ACE_GUARD_RETURN, dropped_count_, lock_, and OPENDDS_END_VERSIONED_NAMESPACE_DECL.
void OpenDDS::DCPS::MessageTracker::message_delivered | ( | ) |
Indicate that a message has been delivered by the transport layer.
Definition at line 51 of file MessageTracker.cpp.
References ACE_GUARD, delivered_count_, done_condition_, lock_, OpenDDS::DCPS::ConditionVariable< Mutex >::notify_all(), and pending_messages_i().
Referenced by OpenDDS::DCPS::SendResponseListener::control_delivered(), OpenDDS::DCPS::DataWriterImpl::control_delivered(), OpenDDS::DCPS::SendResponseListener::data_delivered(), and OpenDDS::DCPS::WriteDataContainer::data_delivered().
void OpenDDS::DCPS::MessageTracker::message_dropped | ( | ) |
Indicate that a message has been dropped by the transport layer.
Definition at line 62 of file MessageTracker.cpp.
References ACE_GUARD, done_condition_, dropped_count_, lock_, OpenDDS::DCPS::ConditionVariable< Mutex >::notify_all(), and pending_messages_i().
Referenced by OpenDDS::DCPS::DataWriterImpl::association_complete_i(), OpenDDS::DCPS::SendResponseListener::control_dropped(), OpenDDS::DCPS::DataWriterImpl::control_dropped(), OpenDDS::DCPS::SendResponseListener::data_dropped(), OpenDDS::DCPS::WriteDataContainer::data_dropped(), OpenDDS::DCPS::DataWriterImpl::replay_durable_data_for(), and OpenDDS::DCPS::DataWriterImpl::send_control().
void OpenDDS::DCPS::MessageTracker::message_sent | ( | ) |
Indicate that a message has been to the transport layer.
Definition at line 44 of file MessageTracker.cpp.
References ACE_GUARD, lock_, and sent_count_.
Referenced by OpenDDS::DCPS::DataWriterImpl::association_complete_i(), OpenDDS::DCPS::DataWriterImpl::replay_durable_data_for(), OpenDDS::DCPS::DataWriterImpl::send_all_to_flush_control(), OpenDDS::DCPS::DataWriterImpl::send_control(), and OpenDDS::DCPS::SendResponseListener::track_message().
bool OpenDDS::DCPS::MessageTracker::pending_messages | ( | ) | const |
Answer if there are any messages that have not been accounted for.
Definition at line 31 of file MessageTracker.cpp.
References ACE_GUARD_RETURN, lock_, and pending_messages_i().
|
private |
Definition at line 38 of file MessageTracker.cpp.
References delivered_count_, dropped_count_, and sent_count_.
Referenced by message_delivered(), message_dropped(), pending_messages(), and wait_messages_pending().
void OpenDDS::DCPS::MessageTracker::wait_messages_pending | ( | const char * | caller | ) |
Block until all messages have been accounted for or timeouts out based on PendingTimeout.
Definition at line 72 of file MessageTracker.cpp.
References OpenDDS::DCPS::TimePoint_T< MonotonicClock >::now(), and TheServiceParticipant.
Referenced by OpenDDS::DCPS::DataWriterImpl::wait_pending(), and OpenDDS::DCPS::SendResponseListener::~SendResponseListener().
void OpenDDS::DCPS::MessageTracker::wait_messages_pending | ( | const char * | caller, |
const MonotonicTimePoint & | deadline | ||
) |
Block until all messages have been accounted for or the deadline supplied has passed. Blocks indefinitely if deadline is zero.
Definition at line 79 of file MessageTracker.cpp.
References ACE_DEBUG, ACE_ERROR, ACE_GUARD, ACE_TEXT(), OpenDDS::DCPS::CvStatus_Error, OpenDDS::DCPS::CvStatus_NoTimeout, OpenDDS::DCPS::CvStatus_Timeout, OpenDDS::DCPS::DCPS_debug_level, done_condition_, OpenDDS::DCPS::TimePoint_T< AceClock >::is_zero(), LM_DEBUG, LM_ERROR, lock_, msg_src_, pending_messages_i(), TheServiceParticipant, OpenDDS::DCPS::TimePoint_T< AceClock >::value(), and OpenDDS::DCPS::ConditionVariable< Mutex >::wait_until().
|
private |
Definition at line 73 of file MessageTracker.h.
Referenced by message_delivered(), and pending_messages_i().
|
private |
Definition at line 80 of file MessageTracker.h.
Referenced by message_delivered(), message_dropped(), and wait_messages_pending().
|
private |
Definition at line 72 of file MessageTracker.h.
Referenced by dropped_count(), message_dropped(), and pending_messages_i().
|
mutableprivate |
Definition at line 76 of file MessageTracker.h.
Referenced by dropped_count(), message_delivered(), message_dropped(), message_sent(), pending_messages(), and wait_messages_pending().
|
private |
Definition at line 71 of file MessageTracker.h.
Referenced by wait_messages_pending().
|
private |
Definition at line 74 of file MessageTracker.h.
Referenced by message_sent(), and pending_messages_i().