00001 /* 00002 * 00003 * 00004 * Distributed under the OpenDDS License. 00005 * See: http://www.opendds.org/license.html 00006 */ 00007 00008 #ifndef OPENDDS_DCPS_STATUSCONDITIONIMPL_H 00009 #define OPENDDS_DCPS_STATUSCONDITIONIMPL_H 00010 00011 #include "dds/DdsDcpsInfrastructureC.h" 00012 #include "dds/DCPS/ConditionImpl.h" 00013 00014 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00015 #pragma once 00016 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00017 00018 namespace OpenDDS { 00019 namespace DCPS { 00020 00021 class EntityImpl; 00022 00023 class StatusConditionImpl 00024 : public virtual OpenDDS::DCPS::LocalObject<DDS::StatusCondition> 00025 , public virtual ConditionImpl { 00026 public: 00027 explicit StatusConditionImpl(EntityImpl* e) 00028 : parent_(e) 00029 , mask_(::OpenDDS::DCPS::DEFAULT_STATUS_MASK) 00030 {} 00031 00032 virtual ~StatusConditionImpl() {} 00033 00034 CORBA::Boolean get_trigger_value(); 00035 00036 virtual DDS::StatusMask get_enabled_statuses(); 00037 00038 virtual DDS::ReturnCode_t set_enabled_statuses(DDS::StatusMask mask); 00039 00040 virtual DDS::Entity_ptr get_entity(); 00041 00042 private: 00043 //deliberately not a _var, don't hold a reference to the parent since 00044 //it is guaranteed to outlive us and we don't want a cyclical reference 00045 EntityImpl* parent_; 00046 DDS::StatusMask mask_; 00047 }; 00048 00049 } // namespace DCPS 00050 } // namespace OpenDDS 00051 00052 #endif