Implements the OpenDDS::DCPS::Entity interfaces. More...
#include <EntityImpl.h>
Public Member Functions | |
EntityImpl () | |
virtual | ~EntityImpl () |
bool | is_enabled () const |
virtual DDS::StatusCondition_ptr | get_statuscondition () |
virtual DDS::StatusMask | get_status_changes () |
virtual DDS::InstanceHandle_t | get_instance_handle ()=0 |
void | set_status_changed_flag (DDS::StatusKind status, bool status_changed_flag) |
void | notify_status_condition () |
virtual void | transport_config (const TransportConfig_rch &cfg) |
TransportConfig_rch | transport_config () const |
virtual RcHandle< EntityImpl > | parent () const |
Protected Member Functions | |
DDS::ReturnCode_t | set_enabled () |
void | set_deleted (bool state) |
bool | get_deleted () |
Protected Attributes | |
ACE_Atomic_Op< TAO_SYNCH_MUTEX, bool > | enabled_ |
The flag indicates the entity is enabled. | |
ACE_Atomic_Op< TAO_SYNCH_MUTEX, bool > | entity_deleted_ |
The flag indicates the entity is being deleted. | |
Private Attributes | |
DDS::StatusMask | status_changes_ |
DDS::StatusCondition_var | status_condition_ |
TransportConfig_rch | transport_config_ |
ACE_Thread_Mutex | lock_ |
Implements the OpenDDS::DCPS::Entity interfaces.
This class is the base class of other servant classes. e.g. DomainParticipantImpl, PublisherImpl ...
Definition at line 35 of file EntityImpl.h.
OpenDDS::DCPS::EntityImpl::EntityImpl | ( | ) |
Definition at line 17 of file EntityImpl.cpp.
00018 : enabled_(false), 00019 entity_deleted_(false), 00020 status_changes_(0), 00021 status_condition_(new StatusConditionImpl(this)) 00022 { 00023 }
OpenDDS::DCPS::EntityImpl::~EntityImpl | ( | ) | [virtual] |
Definition at line 25 of file EntityImpl.cpp.
bool OpenDDS::DCPS::EntityImpl::get_deleted | ( | ) | [protected] |
Definition at line 78 of file EntityImpl.cpp.
References entity_deleted_, and ACE_Atomic_Op< ACE_LOCK, TYPE >::value().
Referenced by OpenDDS::DCPS::DataReaderImpl::data_received(), and OpenDDS::DCPS::DomainParticipantImpl::update_ownership_strength().
00079 { 00080 return this->entity_deleted_.value(); 00081 }
virtual DDS::InstanceHandle_t OpenDDS::DCPS::EntityImpl::get_instance_handle | ( | ) | [pure virtual] |
DDS::StatusMask OpenDDS::DCPS::EntityImpl::get_status_changes | ( | ) | [virtual] |
Implements DDS::Entity.
Definition at line 50 of file EntityImpl.cpp.
References lock_, and status_changes_.
Referenced by OpenDDS::DCPS::StatusConditionImpl::get_trigger_value().
00051 { 00052 ACE_GUARD_RETURN(ACE_Thread_Mutex, g, lock_, 0); 00053 return status_changes_; 00054 }
DDS::StatusCondition_ptr OpenDDS::DCPS::EntityImpl::get_statuscondition | ( | ) | [virtual] |
Implements DDS::Entity.
Definition at line 44 of file EntityImpl.cpp.
References CORBA::LocalObject::_duplicate(), and status_condition_.
00045 { 00046 return DDS::StatusCondition::_duplicate(status_condition_); 00047 }
bool OpenDDS::DCPS::EntityImpl::is_enabled | ( | ) | const |
Definition at line 38 of file EntityImpl.cpp.
References enabled_, and ACE_Atomic_Op< ACE_LOCK, TYPE >::value().
Referenced by OpenDDS::DCPS::DomainParticipantImpl::create_topic_i(), OpenDDS::DCPS::TopicImpl::enable(), OpenDDS::DCPS::SubscriberImpl::enable(), OpenDDS::DCPS::ReplayerImpl::enable(), OpenDDS::DCPS::RecorderImpl::enable(), OpenDDS::DCPS::PublisherImpl::enable(), OpenDDS::DCPS::DomainParticipantImpl::enable(), OpenDDS::DCPS::DataWriterImpl::enable(), OpenDDS::DCPS::DataReaderImpl::enable(), and OpenDDS::DCPS::RecorderImpl::set_qos().
void OpenDDS::DCPS::EntityImpl::notify_status_condition | ( | ) |
Call this *after* dispatching to listeners when the "changed status flag" is enabled so that any waiting waitsets can be unblocked.
Definition at line 84 of file EntityImpl.cpp.
References ACE_TEXT(), LM_ERROR, OpenDDS::DCPS::ConditionImpl::signal_all(), and status_condition_.
Referenced by OpenDDS::DCPS::DataWriterImpl::association_complete_i(), OpenDDS::DCPS::DataReaderImpl::coherent_changes_completed(), OpenDDS::DCPS::OfferedDeadlineWatchdog::execute(), OpenDDS::DCPS::TopicImpl::inconsistent_topic(), OpenDDS::DCPS::DataReaderImpl::notify_liveliness_change(), OpenDDS::DCPS::DataReaderImpl::remove_associations_i(), OpenDDS::DCPS::DataReaderImpl::transport_assoc_done(), OpenDDS::DCPS::DataWriterImpl::update_incompatible_qos(), and OpenDDS::DCPS::DataReaderImpl::update_incompatible_qos().
00085 { 00086 StatusConditionImpl* sci = 00087 dynamic_cast<StatusConditionImpl*>(status_condition_.in()); 00088 if (sci) { 00089 sci->signal_all(); 00090 } else { 00091 ACE_ERROR((LM_ERROR, ACE_TEXT("(%P|%t) ERROR: ") 00092 ACE_TEXT("EntityImpl::notify_status_condition: ") 00093 ACE_TEXT("failed to obtain the StatusConditionImpl.\n"))); 00094 } 00095 }
virtual RcHandle<EntityImpl> OpenDDS::DCPS::EntityImpl::parent | ( | void | ) | const [inline, virtual] |
Reimplemented in OpenDDS::DCPS::DataReaderImpl, OpenDDS::DCPS::DataWriterImpl, OpenDDS::DCPS::PublisherImpl, and OpenDDS::DCPS::SubscriberImpl.
Definition at line 60 of file EntityImpl.h.
void OpenDDS::DCPS::EntityImpl::set_deleted | ( | bool | state | ) | [protected] |
Definition at line 72 of file EntityImpl.cpp.
References entity_deleted_.
Referenced by OpenDDS::DCPS::SubscriberImpl::delete_contained_entities(), OpenDDS::DCPS::PublisherImpl::delete_contained_entities(), OpenDDS::DCPS::DomainParticipantImpl::delete_contained_entities(), OpenDDS::DCPS::DataWriterImpl::prepare_to_delete(), and OpenDDS::DCPS::DataReaderImpl::prepare_to_delete().
00073 { 00074 entity_deleted_ = state; 00075 }
DDS::ReturnCode_t OpenDDS::DCPS::EntityImpl::set_enabled | ( | ) | [protected] |
Definition at line 30 of file EntityImpl.cpp.
References enabled_, and DDS::RETCODE_OK.
Referenced by OpenDDS::DCPS::TopicImpl::enable(), OpenDDS::DCPS::SubscriberImpl::enable(), OpenDDS::DCPS::ReplayerImpl::enable(), OpenDDS::DCPS::RecorderImpl::enable(), OpenDDS::DCPS::PublisherImpl::enable(), OpenDDS::DCPS::DomainParticipantImpl::enable(), OpenDDS::DCPS::DataWriterImpl::enable(), and OpenDDS::DCPS::DataReaderImpl::enable().
00031 { 00032 enabled_ = true; 00033 00034 return DDS::RETCODE_OK; 00035 }
void OpenDDS::DCPS::EntityImpl::set_status_changed_flag | ( | DDS::StatusKind | status, | |
bool | status_changed_flag | |||
) |
Definition at line 57 of file EntityImpl.cpp.
References lock_, and status_changes_.
Referenced by OpenDDS::DCPS::DataWriterImpl::association_complete_i(), OpenDDS::DCPS::DataReaderImpl::coherent_changes_completed(), OpenDDS::DCPS::OfferedDeadlineWatchdog::execute(), OpenDDS::DCPS::TopicImpl::get_inconsistent_topic_status(), OpenDDS::DCPS::DataReaderImpl::get_liveliness_changed_status(), OpenDDS::DCPS::DataWriterImpl::get_liveliness_lost_status(), OpenDDS::DCPS::DataWriterImpl::get_offered_deadline_missed_status(), OpenDDS::DCPS::DataWriterImpl::get_offered_incompatible_qos_status(), OpenDDS::DCPS::DataWriterImpl::get_publication_matched_status(), OpenDDS::DCPS::DataReaderImpl::get_requested_deadline_missed_status(), OpenDDS::DCPS::DataReaderImpl::get_requested_incompatible_qos_status(), OpenDDS::DCPS::DataReaderImpl::get_sample_lost_status(), OpenDDS::DCPS::DataReaderImpl::get_sample_rejected_status(), OpenDDS::DCPS::DataReaderImpl::get_subscription_matched_status(), OpenDDS::DCPS::TopicImpl::inconsistent_topic(), OpenDDS::DCPS::DataReaderImpl::post_read_or_take(), OpenDDS::DCPS::DataReaderImpl::remove_associations_i(), OpenDDS::DCPS::MultiTopicDataReaderBase::set_status_changed_flag(), OpenDDS::DCPS::DataReaderImpl::transport_assoc_done(), OpenDDS::DCPS::DataWriterImpl::update_incompatible_qos(), OpenDDS::DCPS::DataReaderImpl::update_incompatible_qos(), OpenDDS::DCPS::DataReaderImpl::writer_became_alive(), OpenDDS::DCPS::DataReaderImpl::writer_became_dead(), and OpenDDS::DCPS::DataReaderImpl::writer_removed().
00060 { 00061 ACE_GUARD(ACE_Thread_Mutex, g, lock_); 00062 00063 if (status_changed_flag) { 00064 status_changes_ |= status; 00065 00066 } else { 00067 status_changes_ &= ~status; 00068 } 00069 }
TransportConfig_rch OpenDDS::DCPS::EntityImpl::transport_config | ( | ) | const |
Definition at line 105 of file EntityImpl.cpp.
References lock_, and transport_config_.
00106 { 00107 ACE_GUARD_RETURN(ACE_Thread_Mutex, g, lock_, TransportConfig_rch()); 00108 return transport_config_; 00109 }
void OpenDDS::DCPS::EntityImpl::transport_config | ( | const TransportConfig_rch & | cfg | ) | [virtual] |
Reimplemented in OpenDDS::DCPS::TopicImpl.
Definition at line 98 of file EntityImpl.cpp.
References lock_, and transport_config_.
Referenced by OpenDDS::DCPS::TransportRegistry::bind_config().
00099 { 00100 ACE_GUARD(ACE_Thread_Mutex, g, lock_); 00101 transport_config_ = cfg; 00102 }
ACE_Atomic_Op<TAO_SYNCH_MUTEX, bool> OpenDDS::DCPS::EntityImpl::enabled_ [protected] |
The flag indicates the entity is enabled.
Definition at line 70 of file EntityImpl.h.
Referenced by OpenDDS::DCPS::SubscriberImpl::begin_access(), OpenDDS::DCPS::PublisherImpl::begin_coherent_changes(), OpenDDS::DCPS::SubscriberImpl::create_datareader(), OpenDDS::DCPS::PublisherImpl::create_datawriter(), OpenDDS::DCPS::DomainParticipantImpl::create_new_topic(), OpenDDS::DCPS::DomainParticipantImpl::create_publisher(), OpenDDS::DCPS::DomainParticipantImpl::create_recorder(), OpenDDS::DCPS::DomainParticipantImpl::create_replayer(), OpenDDS::DCPS::DomainParticipantImpl::create_subscriber(), OpenDDS::DCPS::DataWriterImpl::dispose(), OpenDDS::DCPS::SubscriberImpl::end_access(), OpenDDS::DCPS::PublisherImpl::end_coherent_changes(), OpenDDS::DCPS::DataReaderImpl::get_matched_publication_data(), OpenDDS::DCPS::DataReaderImpl::get_matched_publications(), OpenDDS::DCPS::DataWriterImpl::get_matched_subscription_data(), OpenDDS::DCPS::DataWriterImpl::get_matched_subscriptions(), OpenDDS::DCPS::DomainParticipantImpl::ignore_participant(), OpenDDS::DCPS::DomainParticipantImpl::ignore_publication(), OpenDDS::DCPS::DomainParticipantImpl::ignore_subscription(), OpenDDS::DCPS::DomainParticipantImpl::ignore_topic(), is_enabled(), OpenDDS::DCPS::DataWriterImpl::register_instance_i(), OpenDDS::DCPS::PublisherImpl::resume_publications(), set_enabled(), OpenDDS::DCPS::TopicImpl::set_qos(), OpenDDS::DCPS::SubscriberImpl::set_qos(), OpenDDS::DCPS::ReplayerImpl::set_qos(), OpenDDS::DCPS::RecorderImpl::set_qos(), OpenDDS::DCPS::PublisherImpl::set_qos(), OpenDDS::DCPS::DomainParticipantImpl::set_qos(), OpenDDS::DCPS::DataWriterImpl::set_qos(), OpenDDS::DCPS::DataReaderImpl::set_qos(), OpenDDS::DCPS::PublisherImpl::suspend_publications(), OpenDDS::DCPS::DataWriterImpl::unregister_instance_i(), OpenDDS::DCPS::PublisherImpl::wait_for_acknowledgments(), and OpenDDS::DCPS::DataWriterImpl::write().
ACE_Atomic_Op<TAO_SYNCH_MUTEX, bool> OpenDDS::DCPS::EntityImpl::entity_deleted_ [protected] |
The flag indicates the entity is being deleted.
Definition at line 73 of file EntityImpl.h.
Referenced by OpenDDS::DCPS::DataWriterImpl::add_association(), OpenDDS::DCPS::DataReaderImpl::add_association(), get_deleted(), OpenDDS::DCPS::DataReaderImpl::remove_associations(), and set_deleted().
ACE_Thread_Mutex OpenDDS::DCPS::EntityImpl::lock_ [mutable, private] |
Reimplemented in OpenDDS::DCPS::DataWriterImpl, and OpenDDS::DCPS::ReplayerImpl.
Definition at line 86 of file EntityImpl.h.
Referenced by get_status_changes(), set_status_changed_flag(), and transport_config().
The status_changes_ variable lists all status changed flag. The StatusChangedFlag becomes TRUE whenever the plain communication status changes and it is reset to FALSE each time the application accesses the plain communication status via the proper get_<plain communication status> operation on the Entity.
Definition at line 81 of file EntityImpl.h.
Referenced by get_status_changes(), and set_status_changed_flag().
DDS::StatusCondition_var OpenDDS::DCPS::EntityImpl::status_condition_ [private] |
Definition at line 82 of file EntityImpl.h.
Referenced by get_statuscondition(), and notify_status_condition().
Definition at line 84 of file EntityImpl.h.
Referenced by transport_config().