6 #ifndef OPENDDS_DCPS_DOMAIN_PARTICIPANT_IMPL_H 7 #define OPENDDS_DCPS_DOMAIN_PARTICIPANT_IMPL_H 27 #include <dds/DdsDcpsPublicationC.h> 28 #include <dds/DdsDcpsSubscriptionExtC.h> 29 #include <dds/DdsDcpsTopicC.h> 30 #include <dds/DdsDcpsDomainC.h> 31 #include <dds/DdsDcpsInfoUtilsC.h> 32 #include <dds/DdsDcpsInfrastructureC.h> 33 #include <dds/DdsDynamicDataC.h> 34 #ifndef DDS_HAS_MINIMUM_BIT 35 # include <dds/DdsDcpsCoreTypeSupportC.h> 42 #ifndef ACE_LACKS_PRAGMA_ONCE 54 class DomainParticipantFactoryImpl;
61 #ifndef OPENDDS_NO_CONTENT_SUBSCRIPTION_PROFILE 62 class FilterEvaluator;
132 DDS::DomainParticipantListener_ptr a_listener,
139 virtual DDS::Publisher_ptr create_publisher(
141 DDS::PublisherListener_ptr a_listener,
145 DDS::Publisher_ptr p);
147 virtual DDS::Subscriber_ptr create_subscriber(
149 DDS::SubscriberListener_ptr a_listener,
153 DDS::Subscriber_ptr s);
155 virtual DDS::Subscriber_ptr get_builtin_subscriber();
159 virtual DDS::Topic_ptr create_topic(
160 const char * topic_name,
161 const char * type_name,
163 DDS::TopicListener_ptr a_listener,
167 DDS::Topic_ptr a_topic);
169 virtual DDS::Topic_ptr find_topic(
170 const char * topic_name,
173 virtual DDS::TopicDescription_ptr lookup_topicdescription(
176 #ifndef OPENDDS_NO_CONTENT_FILTERED_TOPIC 178 virtual DDS::ContentFilteredTopic_ptr create_contentfilteredtopic(
180 DDS::Topic_ptr related_topic,
181 const char * filter_expression,
185 DDS::ContentFilteredTopic_ptr a_contentfilteredtopic);
189 #ifndef OPENDDS_NO_MULTI_TOPIC 191 virtual DDS::MultiTopic_ptr create_multitopic(
193 const char * type_name,
194 const char * subscription_expression,
201 #ifndef OPENDDS_NO_CONTENT_SUBSCRIPTION_PROFILE 204 void deref_filter_eval(
const char* filter);
219 DDS::DomainParticipantListener_ptr a_listener,
222 virtual DDS::DomainParticipantListener_ptr get_listener();
263 #if !defined (DDS_HAS_MINIMUM_BIT) 338 bool is_clean(
String* leftover_entities = 0)
const;
353 void get_topic_ids(TopicIdVec& topics);
355 #ifndef OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE 366 void update_ownership_strength(
const GUID_t& pub_id,
372 return this->federated_;
388 DDS::Topic_ptr create_typeless_topic(
389 const char * topic_name,
390 const char * type_name,
393 DDS::TopicListener_ptr a_listener,
400 void remove_adjust_liveliness_timers();
404 #if defined(OPENDDS_SECURITY) 407 return security_config_;
415 return part_crypto_handle_;
419 bool prepare_to_delete_datawriters();
422 #ifndef OPENDDS_SAFETY_PROFILE 436 static const int TOPIC_TYPE_HAS_KEYS = 1;
437 static const int TOPIC_TYPELESS = 2;
440 DDS::Topic_ptr create_topic_i(
441 const char * topic_name,
442 const char * type_name,
444 DDS::TopicListener_ptr a_listener,
448 DDS::Topic_ptr create_new_topic(
449 const char * topic_name,
450 const char * type_name,
452 DDS::TopicListener_ptr a_listener,
454 OpenDDS::DCPS::TypeSupport_ptr type_support);
460 DDS::Topic_ptr a_topic,
480 #if defined(OPENDDS_SECURITY) 504 #if !defined(OPENDDS_NO_CONTENT_FILTERED_TOPIC) || !defined(OPENDDS_NO_MULTI_TOPIC) 552 #ifndef OPENDDS_NO_OWNERSHIP_KIND_EXCLUSIVE 559 #ifndef OPENDDS_NO_CONTENT_SUBSCRIPTION_PROFILE 570 #if defined(OPENDDS_SECURITY) 584 void remove_adjust();
587 virtual void cancel() = 0;
595 virtual void schedule(
const TimeDuration& interval) = 0;
612 impl_.automatic_liveliness_task_->cancel();
618 impl_.automatic_liveliness_task_->schedule(interval);
632 impl_.participant_liveliness_task_->cancel();
638 impl_.participant_liveliness_task_->schedule(interval);
651 virtual int handle_exception(ACE_HANDLE fd);
PublisherSet publishers_
Collection of publishers.
Implements the OpenDDS::DCPS::DomainParticipant interfaces.
RcHandle< ParticipantLivelinessTimer > participant_liveliness_timer_
Implements the OpenDDS::DCPS::Entity interfaces.
sequence< InstanceHandle_t > InstanceHandleSeq
DDS::SubscriberQos default_subscriber_qos_
The default subscriber qos.
DDS::Security::ParticipantCryptoHandle part_crypto_handle_
This participant crypto handle given by crypto.
DDS::Security::PermissionsHandle permissions_handle() const
Send raw data samples in the system.
ACE_Recursive_Thread_Mutex publishers_protector_
Protect the publisher collection.
RcHandle< ParticipantLivelinessTask > participant_liveliness_task_
DDS::TopicQos default_topic_qos_
The default topic qos.
const DDS::DomainId_t domain_id_
The id of the domain that creates this participant.
const GUID_t GUID_UNKNOWN
Nil value for GUID.
SubscriberSet subscribers_
Collection of subscribers.
DDS::PublisherQos default_publisher_qos_
The default publisher qos.
#define OpenDDS_Dcps_Export
DDS::Security::IdentityHandle id_handle_
This participant id handle given by authentication.
ACE_Recursive_Thread_Mutex recorders_protector_
Protect the recorders collection.
HandleMap ignored_participants_
Collection of ignored participants.
DDS::StatusMask listener_mask_
Objref_Servant_Pair< TopicImpl, DDS::Topic, DDS::Topic_ptr, DDS::Topic_var > Topic_Pair
#define OPENDDS_MULTIMAP(K, T)
CORBA::ULong client_refs_
The reference count on the obj_.
Security::SecurityConfig_rch security_config_
DisjointSequence::OrderedRanges< DDS::InstanceHandle_t > reusable_handles_
Keep track of handles that can be reused (use handle_protector_)
ACE_Recursive_Thread_Mutex topics_protector_
Protect the topic collection.
ACE_Recursive_Thread_Mutex subscribers_protector_
Protect the subscriber collection.
DomainParticipantImpl & impl_
Implements the OpenDDS::DCPS::Publisher interfaces.
void schedule(const TimeDuration &interval)
Implements the DDS::Topic interface.
TimeDuration interval() const
DOMAINID_TYPE_NATIVE DomainId_t
CountedHandleMap handles_
Instance handles assigned which are mapped to GUIDs (use handle_protector_)
Implements the OpenDDS::DCPS::DataWriterRemote interfaces and DDS::DataWriter interfaces.
ACE_Recursive_Thread_Mutex replayers_protector_
Protect the replayers collection.
RcHandle< AutomaticLivelinessTimer > automatic_liveliness_timer_
OwnershipManager owner_man_
RepoIdSequence pub_id_gen_
Publisher ID generator.
ACE_Thread_Mutex handle_protector_
Protect the handle collection.
ConditionVariable< ACE_Thread_Mutex > shutdown_condition_
TopicMap topics_
Collection of topics.
long ParticipantCryptoHandle
ACE_Thread_Mutex listener_mutex_
Mutex to protect listener info.
DDS::ReturnCode_t shutdown_result_
RefCounted_Topic(const Topic_Pair &pair)
RcHandle< AutomaticLivelinessTask > automatic_liveliness_task_
typedef OPENDDS_MAP_CMP(GUID_t, WriterCoherentSample, GUID_tKeyLessThan) GroupCoherentSamples
Objref_Servant_Pair< SubscriberImpl, DDS::Subscriber, DDS::Subscriber_ptr, DDS::Subscriber_var > Subscriber_Pair
typedef OPENDDS_SET_CMP(GUID_t, GUID_tKeyLessThan) GuidSet
GUID_t dp_id_
This participant id given by discovery.
std::pair< DDS::InstanceHandle_t, unsigned int > HandleWithCounter
ACE_Thread_Mutex shutdown_mutex_
Protect the shutdown.
ACE_Thread_Mutex filter_cache_lock_
InstanceHandleGenerator & participant_handles_
Get instances handles from DomainParticipantFactory (use handle_protector_)
ConditionVariable< ACE_Thread_Mutex > handle_waiters_
DDS::DomainParticipantQos qos_
The qos of this DomainParticipant.
TopicMap::iterator TopicMapIterator
TopicDescriptionMap topic_descrs_
Collection of TopicDescriptions which are not also Topics.
PmfSporadicTask< AutomaticLivelinessTimer > AutomaticLivelinessTask
MonotonicTimePoint last_liveliness_check_
HANDLE_TYPE_NATIVE InstanceHandle_t
XTypes::TypeLookupService_rch type_lookup_service_
static const TimeDuration zero_value
void schedule(const TimeDuration &interval)
PmfSporadicTask< ParticipantLivelinessTimer > ParticipantLivelinessTask
XTypes::TypeLookupService_rch get_type_lookup_service()
Topic_Pair pair_
The topic object reference.
HandleMap ignored_topics_
Collection of ignored topics.
RepoIdMap repoIds_
By-handle lookup of instance handles assigned to GUIDs (use handle_protector_)
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
DDS::Security::ParticipantCryptoHandle crypto_handle() const
This struct holds both object reference and the corresponding servant.
Security::SecurityConfig_rch get_security_config() const
RcHandle< BitSubscriber > bit_subscriber_
The built in topic subscriber.
bool recalculate_interval_
typedef OPENDDS_VECTOR(ActionConnectionRecord) ConnectionRecords
DDS::Security::PermissionsHandle perm_handle_
This participant permissions handle given by access constrol.
std::pair< TopicMapIterator, TopicMapIterator > TopicMapIteratorPair
Objref_Servant_Pair< PublisherImpl, DDS::Publisher, DDS::Publisher_ptr, DDS::Publisher_var > Publisher_Pair
MonotonicTimePoint last_liveliness_activity_
unique_ptr< Monitor > monitor_
The Internal API and Implementation of OpenDDS.
typedef OPENDDS_MAP(OPENDDS_STRING, OPENDDS_STRING) ValueMap
Helper types and functions for config file parsing.
const DDS::LivelinessQosPolicyKind kind_
DDS::DomainParticipantListener_var listener_
Used to notify the entity for relevant events.
sequence< string > StringSeq
typedef OPENDDS_SET(NetworkAddress) AddrSet