OpenDDS::DCPS::EntityImpl Class Reference

Implements the OpenDDS::DCPS::Entity interfaces. More...

#include <EntityImpl.h>

Inheritance diagram for OpenDDS::DCPS::EntityImpl:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::EntityImpl:
Collaboration graph
[legend]

List of all members.

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< EntityImplparent () 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_

Detailed Description

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.


Constructor & Destructor Documentation

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.

00026 {
00027 }


Member Function Documentation

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 }

Here is the call graph for this function:

Here is the caller graph for this function:

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 }

Here is the caller graph for this function:

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 }

Here is the call graph for this function:

bool OpenDDS::DCPS::EntityImpl::is_enabled (  )  const
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 }

Here is the call graph for this function:

Here is the caller graph for this function:

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.

00060 { return RcHandle<EntityImpl>(); }

void OpenDDS::DCPS::EntityImpl::set_deleted ( bool  state  )  [protected]
DDS::ReturnCode_t OpenDDS::DCPS::EntityImpl::set_enabled (  )  [protected]
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 }

Here is the caller graph for this function:

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 }

Here is the caller graph for this function:


Member Data Documentation

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 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().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 10 Aug 2018 for OpenDDS by  doxygen 1.6.1