25 #include "../Version.h" 26 #ifdef OPENDDS_SECURITY 30 #include <ace/config.h> 47 #ifdef OPENDDS_SAFETY_PROFILE 53 #if !defined (__ACE_INLINE__) 59 void set_log_file_name(
const char* fname)
61 #ifdef OPENDDS_SAFETY_PROFILE 64 std::ofstream* output_stream =
new std::ofstream(fname, ios::app);
65 if (output_stream->bad()) {
76 void set_log_verbose(
unsigned long verbose_logging)
85 switch (verbose_logging)
125 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 147 #if defined(OPENDDS_SECURITY) 156 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 160 #ifndef DDS_DEFAULT_DISCOVERY_METHOD 161 # ifdef OPENDDS_SAFETY_PROFILE 162 # define DDS_DEFAULT_DISCOVERY_METHOD Discovery::DEFAULT_RTPS 164 # define DDS_DEFAULT_DISCOVERY_METHOD Discovery::DEFAULT_REPO 178 #ifndef OPENDDS_SAFETY_PROFILE
182 , reactor_task_(false)
184 , n_chunks_(DEFAULT_NUM_CHUNKS)
185 , association_chunk_multiplier_(DEFAULT_CHUNK_MULTIPLIER)
186 , liveliness_factor_(80)
187 , bit_transport_port_(0)
189 #ifdef DDS_HAS_MINIMUM_BIT
195 #ifdef OPENDDS_SECURITY
196 , security_enabled_(false)
198 , bit_lookup_duration_msec_(BIT_LOOKUP_DURATION_MSEC)
199 , global_transport_config_(
ACE_TEXT(
""))
200 , monitor_factory_(0)
201 , federation_recovery_duration_(DEFAULT_FEDERATION_RECOVERY_DURATION)
202 , federation_initial_backoff_seconds_(DEFAULT_FEDERATION_INITIAL_BACKOFF_SECONDS)
203 , federation_backoff_multiplier_(DEFAULT_FEDERATION_BACKOFF_MULTIPLIER)
204 , federation_liveliness_(DEFAULT_FEDERATION_LIVELINESS)
206 , pool_size_(1024 * 1024 * 16)
207 , pool_granularity_(8)
212 , publisher_content_filter_(true)
213 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE
214 , persistent_data_dir_(DEFAULT_PERSISTENT_DATA_DIR)
217 , monitor_enabled_(false)
219 , default_configuration_file_(
ACE_TEXT(
""))
220 , type_object_encoding_(Encoding_Normal)
222 , printer_value_writer_indent_(4)
239 "There are %B remaining domain participant(s). " 240 "It is recommended to delete them before shutdown.\n",
245 if (cleanup_status) {
248 "delete_all_participants returned %C\n",
259 "shutdown returned %C\n",
332 "there are %B domain participant(s) that must be deleted before shutdown can occur\n",
366 domain_ranges_.clear();
372 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 380 #ifdef OPENDDS_SECURITY 393 #ifdef ACE_USES_WCHAR 394 DDS::DomainParticipantFactory_ptr
404 DDS::DomainParticipantFactory_ptr
419 #ifndef OPENDDS_SAFETY_PROFILE 444 #ifndef OPENDDS_SAFETY_PROFILE 449 #ifndef OPENDDS_SAFETY_PROFILE 458 return DDS::DomainParticipantFactory::_nil();
468 ACE_TEXT(
"(%P|%t) NOTICE: not using file configuration - no configuration ")
480 ACE_TEXT(
"(%P|%t) WARNING: not using file configuration - ")
481 ACE_TEXT(
"can not open \"%s\" for reading. %p\n"),
489 ACE_TEXT(
"(%P|%t) NOTICE: Service_Participant::get_domain_participant_factory ")
490 ACE_TEXT(
"Going to load configuration from <%s>\n"),
496 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::get_domain_participant_factory: ")
497 ACE_TEXT(
"load_configuration() failed.\n")));
498 return DDS::DomainParticipantFactory::_nil();
502 #if OPENDDS_POOL_ALLOCATOR 508 ACE_DEBUG((
LM_INFO,
"(%P|%t) Service_Participant::get_domain_participant_factory: " 511 ACE_DEBUG((
LM_INFO,
"(%P|%t) Service_Participant::get_domain_participant_factory: " 516 ACE_DEBUG((
LM_INFO,
"(%P|%t) Service_Participant::get_domain_participant_factory: " 517 "machine: %C, %C platform: %C, %C, %C\n",
518 uname.nodename, uname.machine, uname.sysname, uname.release, uname.version));
521 ACE_DEBUG((
LM_INFO,
"(%P|%t) Service_Participant::get_domain_participant_factory: " 522 "compiler: %C version %d.%d.%d\n",
541 "Service_Participant");
546 #if !defined(ACE_AS_STATIC_LIBS) 547 ACE_TString directive =
ACE_TEXT(
"dynamic OpenDDS_Monitor Service_Object * OpenDDS_monitor:_make_MonitorFactoryImpl()");
553 if (this->monitor_factory_ == 0) {
556 ACE_TEXT(
"ERROR: Service_Participant::get_domain_participant_factory, ")
557 ACE_TEXT(
"Unable to enable monitor factory.\n")));
575 #if defined OPENDDS_LINUX_NETWORK_CONFIG_MONITOR 578 "(%P|%t) Service_Participant::get_domain_participant_factory: Creating LinuxNetworkConfigMonitor\n"));
581 #elif defined(OPENDDS_NETWORK_CONFIG_MODIFIER) 584 "(%P|%t) Service_Participant::get_domain_participant_factory: Creating NetworkConfigModifier\n"));
590 "(%P|%t) Service_Participant::get_domain_participant_factory: Creating DefaultNetworkConfigMonitor\n"));
597 bool open_failed =
false;
598 #ifdef OPENDDS_NETWORK_CONFIG_MODIFIER 601 "(%P|%t) Service_Participant::get_domain_participant_factory: Creating NetworkConfigModifier\n"));
615 "(%P|%t) ERROR: Service_Participant::get_domain_participant_factory: Could not open network config monitor\n"));
638 got_log_fname =
true;
643 got_log_verbose =
true;
657 got_debug_level =
true;
667 ACE_TEXT(
"(%P|%t) WARNING: Service_Participant::parse_args ")
668 ACE_TEXT(
"Argument ignored: DCPSRTISerialization is required to be enabled\n")));
671 got_use_rti_serialization =
true;
680 got_chunk_association_multiplier =
true;
689 got_liveliness_factor =
true;
696 got_bit_transport_port =
true;
703 got_bit_transport_ip =
true;
708 got_bit_lookup_duration_msec =
true;
713 got_global_transport_config =
true;
723 got_transport_debug_level =
true;
725 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 729 got_persistent_data_dir =
true;
735 got_pending_timeout =
true;
740 got_publisher_content_filter =
true;
745 got_default_discovery =
true;
750 got_bidir_giop =
true;
755 got_thread_status_interval =
true;
775 if (addr.
set(u_short(0), currentArg)) {
777 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::parse_args: ")
778 ACE_TEXT(
"failed to parse default address %C\n"),
784 got_default_address =
true;
791 #if defined(OPENDDS_SECURITY) 795 got_security_debug =
true;
800 got_security_debug =
true;
805 got_security_fake_encryption =
true;
811 got_security_flag =
true;
817 got_type_object_encoding =
true;
822 got_log_level =
true;
911 ACE_TEXT(
"(%P|%t) NOTICE: Service_Participant::intializeScheduling() - ")
912 ACE_TEXT(
"no scheduling policy specified, not setting policy.\n")));
936 ACE_TEXT(
"(%P|%t) WARNING: Service_Participant::initializeScheduling() - ")
937 ACE_TEXT(
"unrecognized scheduling policy: %s, set to SCHED_OTHER.\n"),
946 ACE_TEXT(
"(%P|%t) NOTICE: Service_Participant::initializeScheduling() - ")
947 ACE_TEXT(
"scheduling is not implemented on Win32.\n")));
948 ACE_UNUSED_ARG(ace_scheduler);
959 ACE_TEXT(
"(%P|%t) WARNING: Service_Participant::initializeScheduling() - ")
960 ACE_TEXT(
"user is not superuser, requested scheduler not set.\n")));
964 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::initializeScheduling() - ")
965 ACE_TEXT(
"sched_params failed: %m.\n")));
974 ACE_TEXT(
"(%P|%t) Service_Participant::initializeScheduling() - ")
975 ACE_TEXT(
"scheduling policy set to %s(%d).\n"),
992 bool attach_participant)
1001 bool attach_participant)
1005 ACE_TEXT(
"(%P|%t) Service_Participant::set_repo_ior: Repo[%C] == %C\n"),
1042 ACE_TEXT(
"(%P|%t) Service_Participant::set_repo_ior ")
1043 ACE_TEXT(
"ERROR - no discovery type registered for ")
1051 bool attach_participant)
1058 for (DomainRepoMap::const_iterator current = this->
domainRepoMap_.begin();
1061 if (current->second == oldKey) {
1062 domainList.push_back(current->first);
1068 for (
unsigned int index = 0; index < domainList.size(); ++index) {
1071 this->
set_repo_domain(domainList[ index], newKey, attach_participant);
1078 bool attach_participant)
1080 typedef std::pair<Discovery_rch, GUID_t> DiscRepoPair;
1084 DomainRepoMap::const_iterator where = this->
domainRepoMap_.find(domain);
1090 if ((where == this->
domainRepoMap_.end()) || (where->second != key)) {
1097 ACE_TEXT(
"(%P|%t) Service_Participant::set_repo_domain: ")
1098 ACE_TEXT(
"Domain[ %d] = Repo[ %C].\n"),
1099 domain, key.c_str()));
1116 const DomainParticipantFactoryImpl::DPMap& participants
1120 DomainParticipantFactoryImpl::DPMap::const_iterator
1121 which = participants.find(domain);
1123 if (which != participants.end()) {
1125 RepoKeyDiscoveryMap::const_iterator disc_iter = this->
discoveryMap_.find(key);
1128 for (DomainParticipantFactoryImpl::DPSet::const_iterator
1129 current = which->second.begin();
1130 current != which->second.end();
1135 GUID_t id = (*current)->get_id();
1136 repoList.push_back(std::make_pair(disc_iter->second,
id));
1140 ACE_TEXT(
"(%P|%t) Service_Participant::set_repo_domain: ")
1141 ACE_TEXT(
"participant %C attached to Repo[ %C].\n"),
1148 "ERROR: Service_Participant::set_repo_domain: failed to attach repository - ");
1158 for (
unsigned int index = 0; index < repoList.size(); ++index) {
1161 ACE_TEXT(
"(%P|%t) Service_Participant::set_repo_domain: ")
1162 ACE_TEXT(
"(%d of %d) attaching domain %d participant %C to Repo[ %C].\n"),
1163 (1+index), repoList.size(), domain,
1168 if (attach_participant)
1170 repoList[ index].first->attach_participant(domain, repoList[ index].second);
1179 RepoKeyDiscoveryMap::iterator initialLocation = this->
discoveryMap_.find(key);
1180 RepoKeyDiscoveryMap::iterator current = initialLocation;
1184 ACE_TEXT(
"(%P|%t) WARNING: Service_Participant::repository_lost: ")
1185 ACE_TEXT(
"lost repository %C was not present, ")
1186 ACE_TEXT(
"finding another anyway.\n"),
1212 if (current == initialLocation) {
1215 ACE_TEXT(
"(%P|%t) Service_Participant::repository_lost: ")
1216 ACE_TEXT(
"waiting %d seconds to traverse the ")
1217 ACE_TEXT(
"repository list another time ")
1234 if (current->second->active()) {
1238 ACE_TEXT(
"(%P|%t) Service_Participant::repository_lost: ")
1239 ACE_TEXT(
"replacing repository %C with %C.\n"),
1241 current->first.c_str()));
1254 ACE_TEXT(
"(%P|%t) WARNING: Service_Participant::repository_lost: ")
1255 ACE_TEXT(
"repository %C was not available to replace %C, ")
1256 ACE_TEXT(
"looking for another.\n"),
1257 current->first.c_str(),
1290 bool in_range =
false;
1294 RepoKeyDiscoveryMap::const_iterator location;
1298 DomainRepoMap::const_iterator where = this->
domainRepoMap_.find(domain);
1300 repo = where->second;
1312 repo = instance_name;
1329 ACE_TEXT(
"(%P|%t) Service_Participant::get_discovery: ")
1330 ACE_TEXT(
"failed attempt to set RTPS discovery for domain range %d.\n"),
1345 ACE_TEXT(
"(%P|%t) Service_Participant::get_discovery: ")
1346 ACE_TEXT(
"failed attempt to set default IOR for domain %d.\n"),
1354 ACE_TEXT(
"(%P|%t) Service_Participant::get_discovery: ")
1355 ACE_TEXT(
"returning default repository for domain %d.\n"),
1373 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::get_Discovery ")
1374 ACE_TEXT(
"failed attempt to load default RTPS discovery for domain %d.\n"),
1387 ACE_TEXT(
"(%P|%t) Service_Participant::get_discovery: ")
1388 ACE_TEXT(
"failed attempt to set default RTPS discovery for domain %d.\n"),
1398 ACE_TEXT(
"(%P|%t) Service_Participant::get_discovery: ")
1399 ACE_TEXT(
"returning default RTPS discovery for domain %d.\n"),
1403 return location->second;
1410 ACE_TEXT(
"(%P|%t) Service_Participant::get_discovery: ")
1411 ACE_TEXT(
"repository for domain %d was not set.\n"),
1421 ACE_TEXT(
"(%P|%t) Service_Participant::get_discovery: ")
1422 ACE_TEXT(
"returning repository for domain %d, repo %C.\n"),
1423 domain, repo.c_str()));
1426 return location->second;
1446 got_bit_transport_port =
true;
1459 got_bit_lookup_duration_msec =
true;
1485 got_chunk_association_multiplier =
true;
1492 got_liveliness_factor =
true;
1514 if ((status = cf.
open()) != 0)
1516 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_configuration ")
1526 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_configuration ")
1527 ACE_TEXT(
"import_config () returned %d\n"),
1551 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_configuration ")
1552 ACE_TEXT(
"load_common_configuration () returned %d\n"),
1569 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_configuration ")
1570 ACE_TEXT(
"load_domain_range_configuration() returned %d\n"),
1579 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_configuration ")
1580 ACE_TEXT(
"load_discovery_configuration() returned %d\n"),
1589 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_configuration ")
1590 ACE_TEXT(
"load_discovery_configuration() returned %d\n"),
1600 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_configuration ")
1601 ACE_TEXT(
"load_transport_templates() returned %d\n"),
1617 ACE_TEXT(
"(%P|%t) NOTICE: Service_Participant::load_configuration ")
1618 ACE_TEXT(
"DCPSGlobalTransportConfig %C is a transport_template\n"),
1623 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_configuration ")
1624 ACE_TEXT(
"Unable to locate specified global transport config: %C\n"),
1632 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_configuration ")
1633 ACE_TEXT(
"load_transport_configuration () returned %d\n"),
1646 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_configuration ")
1647 ACE_TEXT(
"load_domain_configuration () returned %d\n"),
1654 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_configuration ")
1655 ACE_TEXT(
"load_domain_configuration () returned %d\n"),
1666 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_configuration ")
1667 ACE_TEXT(
"load_discovery_configuration() returned %d\n"),
1671 }
catch (
const CORBA::BAD_PARAM& ex) {
1672 ex._tao_print_exception(
"Exception caught in Service_Participant::load_configuration: " 1673 "trying to load_discovery_configuration()");
1687 if (cf.
open_section(root, COMMON_SECTION_NAME,
false, sect) != 0) {
1692 ACE_TEXT(
"(%P|%t) NOTICE: Service_Participant::load_common_configuration ")
1693 ACE_TEXT(
"failed to open section %s\n"),
1694 COMMON_SECTION_NAME));
1701 ACE_TEXT(
"(%P|%t) NOTICE: using %s value from command option (overrides value if it's in config file)\n");
1703 if (got_debug_level) {
1714 if (!value.
empty()) {
1719 if (got_use_rti_serialization) {
1722 bool should_use =
true;
1726 ACE_TEXT(
"(%P|%t) WARNING: Service_Participant::load_common_configuration ")
1727 ACE_TEXT(
"Argument ignored: DCPSRTISerialization is required to be enabled\n")));
1737 if (got_chunk_association_multiplier) {
1745 if (got_bit_transport_port) {
1751 if (got_bit_transport_ip) {
1757 if (got_liveliness_factor) {
1763 if (got_bit_lookup_duration_msec) {
1769 if (got_global_transport_config) {
1787 #if defined(OPENDDS_SECURITY) 1788 if (got_security_flag) {
1794 if (got_security_debug) {
1799 bool got_value =
false;
1801 if (cf.
get_string_value(sect, debug_level_name, debug_level_value) == -1) {
1809 }
else if (debug_level_value !=
ACE_TEXT(
"")) {
1815 ACE_TEXT(
"(%P|%t) NOTICE: DCPSSecurityDebug and DCPSSecurityDebugLevel ")
1816 ACE_TEXT(
"are not defined in config file or are blank - using code default.\n")));
1820 if (got_security_fake_encryption) {
1827 if (got_transport_debug_level) {
1833 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 1834 if (got_persistent_data_dir) {
1843 if (got_pending_timeout) {
1851 if (got_publisher_content_filter) {
1858 if (got_default_discovery) {
1868 if (got_bidir_giop) {
1877 if (got_thread_status_interval) {
1886 if (got_log_fname) {
1893 if (!log_fname.empty()) {
1894 set_log_file_name(log_fname.c_str());
1898 if (got_log_verbose) {
1903 unsigned long verbose_logging = 0;
1905 set_log_verbose(verbose_logging);
1908 if (got_default_address) {
1914 if (!default_address_str.
empty() &&
1915 addr.
set(u_short(0), default_address_str.
c_str())) {
1917 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::load_common_configuration: ")
1918 ACE_TEXT(
"failed to parse default address %C\n"),
1919 default_address_str.
c_str()),
1931 if (got_type_object_encoding) {
1941 if (got_log_level) {
1957 #if OPENDDS_POOL_ALLOCATOR 1967 suseconds_t usec(0);
1986 if (cf.
open_section(root, DOMAIN_SECTION_NAME,
false, domain_sect) != 0) {
1991 ACE_TEXT(
"(%P|%t) NOTICE: Service_Participant::load_domain_configuration(): ")
1992 ACE_TEXT(
"failed to open [%s] section - using code default.\n"),
1993 DOMAIN_SECTION_NAME));
2004 ACE_TEXT(
"(%P|%t) Service_Participant::load_domain_configuration(): ")
2005 ACE_TEXT(
"domain sections must have a subsection name\n")),
2012 ACE_TEXT(
"(%P|%t) Service_Participant::load_domain_configuration(): ")
2013 ACE_TEXT(
"too many nesting layers in the [domain] section.\n")),
2018 for (KeyList::const_iterator it = keys.begin(); it != keys.end(); ++it) {
2026 for (ValueMap::const_iterator it = values.begin(); it != values.end(); ++it) {
2028 if (name ==
"DomainId") {
2032 ACE_TEXT(
"(%P|%t) Service_Participant::load_domain_configuration(): ")
2033 ACE_TEXT(
"Illegal integer value for DomainId (%C) in [domain/%C] section.\n"),
2034 value.c_str(), domain_name.c_str()),
2039 ACE_TEXT(
"(%P|%t) [domain/%C]: DomainId == %d\n"),
2040 domain_name.c_str(), domainId));
2042 }
else if (name ==
"DomainRepoKey") {
2045 repoKey = it->second;
2046 if (repoKey ==
"-1") {
2052 ACE_TEXT(
"(%P|%t) [domain/%C]: DomainRepoKey == %C\n"),
2053 domain_name.c_str(), repoKey.c_str()));
2055 }
else if (name ==
"DiscoveryConfig") {
2056 repoKey = it->second;
2057 }
else if (name ==
"DefaultTransportConfig") {
2058 if (it->second ==
"$file") {
2063 perDomainDefaultTportConfig = it->second;
2068 ACE_TEXT(
"(%P|%t) Service_Participant::load_domain_configuration(): ")
2069 ACE_TEXT(
"Unexpected entry (%C) in [domain/%C] section.\n"),
2070 name.c_str(), domain_name.c_str()),
2075 if (domainId == -1) {
2079 ACE_TEXT(
"(%P|%t) Service_Participant::load_domain_configuration(): ")
2080 ACE_TEXT(
"Missing DomainId value in [domain/%C] section.\n"),
2081 domain_name.c_str()),
2086 if (!perDomainDefaultTportConfig.empty()) {
2091 ACE_TEXT(
"(%P|%t) Service_Participant::load_domain_configuration(): ")
2092 ACE_TEXT(
"Unknown transport config %C in [domain/%C] section.\n"),
2093 perDomainDefaultTportConfig.c_str(), domain_name.c_str()), -1);
2100 if (!repoKey.empty()) {
2106 ACE_TEXT(
"(%P|%t) Service_Participant::load_domain_configuration(): ")
2107 ACE_TEXT(
"Specified configuration (%C) not found. Referenced in [domain/%C] section.\n"),
2108 repoKey.c_str(), domain_name.c_str()),
2125 if (cf.
open_section(root, DOMAIN_RANGE_SECTION_NAME,
false, domain_range_sect) != 0) {
2130 ACE_TEXT(
"(%P|%t) NOTICE: Service_Participant::load_domain_ranges(): ")
2131 ACE_TEXT(
"config does not have a [%s] section.\n"),
2132 DOMAIN_RANGE_SECTION_NAME));
2140 ACE_TEXT(
"(%P|%t) NOTICE: Service_Participant::load_domain_ranges(): ")
2141 ACE_TEXT(
"config has %s sections.\n"),
2142 DOMAIN_RANGE_SECTION_NAME));
2147 if (
pullValues(cf, domain_range_sect, vm) > 0) {
2150 ACE_TEXT(
"(%P|%t) Service_Participant::load_domain_ranges(): ")
2151 ACE_TEXT(
"[%s] sections must have a subsection range\n"),
2152 DOMAIN_RANGE_SECTION_NAME),
2160 ACE_TEXT(
"(%P|%t) Service_Participant::load_domain_ranges(): ")
2161 ACE_TEXT(
"too many nesting layers in the [%s] section.\n"),
2162 DOMAIN_RANGE_SECTION_NAME),
2167 for (KeyList::const_iterator it = keys.begin(); it != keys.end(); ++it) {
2172 int range_start = -1;
2177 ACE_TEXT(
"(%P|%t) Service_Participant::load_domain_ranges(): ")
2178 ACE_TEXT(
"Error parsing [%s/%C] section.\n"),
2179 DOMAIN_RANGE_SECTION_NAME,
2180 domain_range.c_str()),
2188 if (
pullValues(cf, it->second, values) > 0) {
2191 for (ValueMap::const_iterator it = values.begin(); it != values.end(); ++it) {
2193 if (name ==
"DiscoveryTemplate") {
2194 dt_name = it->second;
2197 ACE_TEXT(
"(%P|%t) [%s/%C]: DiscoveryTemplate name == %C\n"),
2198 DOMAIN_RANGE_SECTION_NAME, domain_range.c_str(), dt_name.c_str()));
2201 }
else if (name ==
"DefaultTransportConfig") {
2203 range_element.
domain_info[it->first] = it->second;
2206 range_element.
domain_info[it->first] = it->second;
2213 domain_ranges_.push_back(range_element);
2239 dcf.
open_section(root, DOMAIN_SECTION_NAME,
true , dsect);
2243 for (ValueMap::const_iterator it = dr_inst.
domain_info.begin();
2249 ACE_TEXT(
"(%P|%t) Service_Participant::")
2250 ACE_TEXT(
"configure_domain_range_instance(): adding %C=%C\n"),
2251 it->first.c_str(), it->second.c_str()));
2265 ACE_TEXT(
"(%P|%t) Service_Participant::")
2266 ACE_TEXT(
"configure_domain_range_instance(): setting DefaultTransportConfig=%C\n"),
2267 config_instance_name.c_str()));
2272 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::")
2273 ACE_TEXT(
"configure_domain_range_instance(): ")
2274 ACE_TEXT(
"transport config not found for domain %d\n"),
2281 dcf.
open_section(root, RTPS_SECTION_NAME,
true , sect);
2285 ValueMap discovery_settings;
2287 for (ValueMap::const_iterator ds_it = discovery_settings.begin(); ds_it != discovery_settings.end(); ++ds_it) {
2297 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::configure_domain_range_instance(): ")
2298 ACE_TEXT(
"load_discovery_configuration() returned %d\n"),
2308 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::configure_domain_range_instance(): ")
2309 ACE_TEXT(
"load_domain_configuration() returned %d\n"),
2316 ACE_TEXT(
"(%P|%t) Service_Participant::configure_domain_range_instance(): ")
2317 ACE_TEXT(
"configure domain %d.\n"),
2326 ACE_TEXT(
"(%P|%t) Service_Participant::configure_domain_range_instance(): ")
2327 ACE_TEXT(
"domain %d already configured.\n"),
2339 if (domainId >= i->range_start && domainId <= i->range_end) {
2351 if ( it != domain_to_transport_name_map_.end()) {
2368 if (cf.
open_section(root, section_name,
false, sect) == 0) {
2371 DiscoveryTypes::iterator iter =
2382 return iter->second->discovery_config(cf);
2386 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::")
2387 ACE_TEXT(
"load_discovery_configuration(): ")
2388 ACE_TEXT(
"Unable to load libraries for %s\n"),
2399 ValueMap discovery_settings;
2410 dcf.
open_section(root, RTPS_SECTION_NAME,
true , sect);
2414 for (ValueMap::const_iterator ds_it = discovery_settings.begin(); ds_it != discovery_settings.end(); ++ds_it) {
2418 ACE_TEXT(
"(%P|%t) Service_Participant::configure_discovery_template(): ")
2420 ds_it->first.c_str(), ds_it->second.c_str()));
2429 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::configure_discovery_template(): ")
2430 ACE_TEXT(
"load_discovery_configuration() returned %d\n"),
2438 ACE_TEXT(
"(%P|%t) Discovery config %C already exists\n"),
2445 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::configure_discovery_template(): ")
2446 ACE_TEXT(
"process_customizations() returned false\n")),
2462 if (cf.
open_section(root, RTPS_SECTION_NAME,
false, rtps_sect) == 0) {
2467 ACE_TEXT(
"(%P|%t) Service_Participant::load_discovery_templates(): ")
2468 ACE_TEXT(
"rtps_discovery sections must have a subsection name\n")),
2476 ACE_TEXT(
"(%P|%t) Service_Participant::load_discovery_templates(): ")
2477 ACE_TEXT(
"too many nesting layers in the [rtps_discovery] section.\n")),
2482 for (KeyList::const_iterator disc_it = keys.begin(); disc_it != keys.end(); ++disc_it) {
2487 if (
pullValues(cf, disc_it->second, values) > 0) {
2488 for (ValueMap::const_iterator it = values.begin(); it != values.end(); ++it) {
2494 ACE_TEXT(
"(%P|%t) Service_Participant::load_discovery_templates(): ")
2495 ACE_TEXT(
"loading customizations [%s/%C]\n"),
2497 customization.c_str()));
2505 ACE_TEXT(
"(%P|%t) Service_Participant::load_discovery_templates(): ")
2506 ACE_TEXT(
"%s sections must have a subsection name\n"),
2515 ACE_TEXT(
"(%P|%t) Service_Participant::load_discovery_templates(): ")
2516 ACE_TEXT(
"too many nesting layers in the [%s] section.\n"),
2522 for (KeyList::const_iterator iter = keys.begin(); iter != keys.end(); ++iter) {
2523 if (customization == iter->first) {
2526 for (ValueMap::const_iterator it = values.begin(); it != values.end(); ++it) {
2533 dinfo.
disc_info[it->first] = it->second;
2538 discovery_infos_.push_back(dinfo);
2547 const std::size_t dash_pos = range.find(
"-", 0);
2549 if (dash_pos == std::string::npos || dash_pos == range.length() - 1) {
2552 ACE_TEXT(
"(%P|%t) Service_Participant::parse_domain_range(): ")
2553 ACE_TEXT(
"%s missing '-' in [%s/%C] section.\n"),
2554 DOMAIN_RANGE_SECTION_NAME, DOMAIN_RANGE_SECTION_NAME, range.c_str()),
2561 ACE_TEXT(
"(%P|%t) Service_Participant::parse_domain_range(): ")
2562 ACE_TEXT(
"Illegal integer value for start %s (%C) in [%s/%C] section.\n"),
2563 DOMAIN_RANGE_SECTION_NAME, range.substr(0, dash_pos).c_str(),
2569 ACE_TEXT(
"(%P|%t) Service_Participant::parse_domain_range(): ")
2570 ACE_TEXT(
"(%P|%t) [%s/%C]: range_start == %d\n"),
2571 DOMAIN_RANGE_SECTION_NAME,
2572 range.c_str(), start));
2577 ACE_TEXT(
"(%P|%t) Service_Participant::parse_domain_range(): ")
2578 ACE_TEXT(
"Illegal integer value for end %s (%C) in [%s/%C] section.\n"),
2579 DOMAIN_RANGE_SECTION_NAME, range.substr(0, dash_pos).c_str(),
2586 ACE_TEXT(
"(%P|%t) Service_Participant::parse_domain_range(): ")
2587 ACE_TEXT(
"(%P|%t) [%s/%C]: range_end == %d\n"),
2588 DOMAIN_RANGE_SECTION_NAME, range.c_str(), end));
2593 ACE_TEXT(
"(%P|%t) Service_Participant::parse_domain_range(): ")
2594 ACE_TEXT(
"Range End %d is less than range start %d in [%s/%C] section.\n"),
2595 end, start, DOMAIN_RANGE_SECTION_NAME, range.c_str()),
2605 return !domain_ranges_.empty();
2613 it != domain_ranges_.end(); ++it) {
2614 if (
id >= it->range_start && id <= it->range_end) {
2623 ACE_TEXT(
"(%P|%t) Service_Participant::get_domain_range_info(): ")
2624 ACE_TEXT(
"Domain %d is in [%s/%d-%d]\n"),
2625 id, DOMAIN_RANGE_SECTION_NAME, it->range_start, it->range_end));
2640 for (dit = discovery_infos_.begin(); dit != discovery_infos_.end(); ++dit) {
2641 if (discovery_name == dit->discovery_name) {
2646 if (dit != discovery_infos_.end()) {
2648 for (ValueMap::const_iterator i = dit->disc_info.begin(); i != dit->disc_info.end(); ++i) {
2649 customs[i->first] = i->second;
2652 ACE_TEXT(
"(%P|%t) Service_Participant::")
2653 ACE_TEXT(
"process_customizations(): adding config %C=%C\n"),
2654 i->first.c_str(), i->second.c_str()));
2659 for (ValueMap::const_iterator i = dit->customizations.begin(); i != dit->customizations.end(); ++i) {
2660 if (i->first ==
"InteropMulticastOverride" && i->second ==
"AddDomainId") {
2662 size_t pos = addr.find_last_of(
".");
2663 if (pos != OPENDDS_STRING::npos) {
2668 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::")
2669 ACE_TEXT(
"process_customizations(): ")
2670 ACE_TEXT(
"could not convert %C to integer\n"),
2675 addr = addr.substr(0, pos);
2679 ACE_TEXT(
"(%P|%t) ERROR: Service_Participant::")
2680 ACE_TEXT(
"process_customizations(): ")
2681 ACE_TEXT(
"could not AddDomainId for %s\n"),
2682 customs[
"InteropMulticastOverride"].c_str()),
2686 customs[
"InteropMulticastOverride"] = addr;
2699 return configured_name;
2706 for (i = discovery_infos_.begin(); i != discovery_infos_.end(); ++i) {
2707 if (i->discovery_name == name && !i->customizations.empty()) {
2715 #if OPENDDS_POOL_ALLOCATOR 2717 Service_Participant::configure_pool()
2726 #ifndef OPENDDS_NO_PERSISTENCE_PROFILE 2757 }
catch (
const std::exception& ex) {
2760 ACE_TEXT(
"(%P|%t) WARNING: Service_Participant::get_data_durability_cache ")
2761 ACE_TEXT(
"failed to create PERSISTENT cache, falling back on ")
2762 ACE_TEXT(
"TRANSIENT behavior: %C\n"), ex.what()));
2791 const Service_Participant::RepoKeyDiscoveryMap&
2797 const Service_Participant::DomainRepoMap&
2805 DDS::Topic_ptr a_topic,
2811 if (participant_servant)
2812 return participant_servant->
create_recorder(a_topic, subscriber_qos, datareader_qos, a_listener, 0);
2830 DDS::Topic_ptr a_topic,
2836 if (participant_servant)
2837 return participant_servant->
create_replayer(a_topic, publisher_qos, datawriter_qos, a_listener, 0);
2854 DDS::DomainParticipant_ptr participant,
2855 const char* topic_name,
2856 const char* type_name,
2859 DDS::TopicListener_ptr a_listener,
2863 if (!participant_servant) {
2866 return participant_servant->
create_typeless_topic(topic_name, type_name, type_has_keys, qos, a_listener, mask);
2884 #ifdef OPENDDS_NETWORK_CONFIG_MODIFIER 2885 NetworkConfigModifier* Service_Participant::network_config_modifier()
2920 if (participant_servant) {
2923 return tls->get_type_info(key);
2930 #ifndef OPENDDS_SAFETY_PROFILE 2943 if (participant_servant) {
2946 return tls->get_type_object(ti);
2960 static const NameValue entries[] = {
2965 for (
size_t i = 0; i <
sizeof entries /
sizeof entries[0]; ++i) {
2966 if (0 == std::strcmp(entries[i].
name, encoding)) {
2971 ACE_ERROR((
LM_ERROR,
"(%P|%t) ERROR: Service_Participant::type_object_encoding: " 2972 "invalid encoding %C\n", encoding));
static const char * DEFAULT_RTPS
DDS::GroupDataQosPolicy initial_GroupDataQosPolicy_
UserDataQosPolicy user_data
DDS::ResourceLimitsQosPolicy initial_ResourceLimitsQosPolicy_
#define TheTransportRegistry
PartitionQosPolicy partition
static const ACE_TCHAR DEFAULT_REPO_IOR[]
Implements the OpenDDS::DCPS::DomainParticipant interfaces.
int create_transport_template_instance(DDS::DomainId_t domain, const ACE_TString &config_name)
int bit_transport_port_
The builtin topic transport port number.
static int priority_min(const Policy, const int scope=ACE_SCOPE_THREAD)
RcHandle< InternalTopic< NetworkInterfaceAddress > > network_interface_address_topic_
void thread_status_interval(const TimeDuration &thread_status_interval)
ReactorInterceptor_rch interceptor() const
void set_from_string(const char *name)
Send raw data samples in the system.
#define ACE_GUARD(MUTEX, OBJ, LOCK)
int bit_transport_port() const
virtual int set_string_value(const ACE_Configuration_Section_Key &key, const ACE_TCHAR *name, const ACE_TString &value)
ACE_thread_t get_reactor_owner() const
const char * c_str(void) const
void delete_replayer(Replayer_ptr replayer)
DDS::DataRepresentationQosPolicy initial_DataRepresentationQosPolicy_
static const char * DEFAULT_REPO
Key value for the default repository IOR.
#define OPENDDS_POOL_ALLOCATOR
const LogLevel::Value value
int load_discovery_templates(ACE_Configuration_Heap &cf)
TypeObjectEncoding type_object_encoding() const
const ReturnCode_t RETCODE_PRECONDITION_NOT_MET
long scheduler_
Scheduling policy value used for setting thread priorities.
bool has_domain_range() const
DDS::LatencyBudgetQosPolicy initial_LatencyBudgetQosPolicy_
const TimeSource & time_source() const
int & federation_recovery_duration()
Accessors for FederationRecoveryDuration in seconds.
static bool got_global_transport_config
static bool got_liveliness_factor
EntityFactoryQosPolicy entity_factory
void initializeScheduling()
Initialize the thread scheduling and initial priority.
static int priority_max(const Policy, const int scope=ACE_SCOPE_THREAD)
DDS::Duration_t bit_autopurge_disposed_samples_delay_
RcHandle< DomainParticipantFactoryImpl > dp_factory_servant_
GroupDataQosPolicy group_data
OpenDDS::DCPS::Discovery::RepoKey get_discovery_template_instance_name(DDS::DomainId_t id)
DomainRepoMap domainRepoMap_
The DomainId to RepoKey mapping.
virtual int get_string_value(const ACE_Configuration_Section_Key &key, const ACE_TCHAR *name, ACE_TString &value)
DDS::ReturnCode_t delete_recorder(Recorder_ptr recorder)
int priority_min_
Minimum priority value for the current scheduling policy.
const long DURATION_INFINITE_SEC
void set_repo_domain(const DDS::DomainId_t domain, Discovery::RepoKey repo, bool attach_participant=true)
Bind DCPSInfoRepo IORs to domains.
RcHandle< Discovery > Discovery_rch
const int DEFAULT_FEDERATION_INITIAL_BACKOFF_SECONDS
bool monitor_enabled_
Enable Monitor functionality.
DDS::TypeConsistencyEnforcementQosPolicy initial_TypeConsistencyEnforcementQosPolicy_
MonitorFactory * monitor_factory_
ACE_TCHAR ** get_TCHAR_argv(void)
static const ACE_TCHAR CUSTOMIZATION_SECTION_NAME[]
DDS::OwnershipQosPolicy initial_OwnershipQosPolicy_
DDS::Duration_t bit_autopurge_nowriter_samples_delay_
DDS::LifespanQosPolicy initial_LifespanQosPolicy_
DDS::DataWriterQos initial_DataWriterQos_
static int process_directive(const ACE_TCHAR directive[])
String to_dds_string(unsigned short to_convert)
const ReturnCode_t RETCODE_ALREADY_DELETED
static bool got_publisher_content_filter
#define GET_CONFIG_STRING_VALUE(CF, SECT, KEY, VALUE)
DDS::PublisherQos initial_PublisherQos_
static const ACE_TCHAR REPO_SECTION_NAME[]
int & federation_initial_backoff_seconds()
Accessors for FederationInitialBackoffSeconds.
DDS::WriterDataLifecycleQosPolicy initial_WriterDataLifecycleQosPolicy_
PresentationQosPolicyAccessScopeKind access_scope
NetworkConfigMonitor_rch network_config_monitor_
#define ACE_TEXT_ALWAYS_CHAR(STRING)
OPENDDS_STRING transport_config_name
const char * c_str() const
#define DDS_DEFAULT_DISCOVERY_METHOD
Underlying data cache for both OpenDDS TRANSIENT and PERSISTENT DURABILITY implementations..
Implementation of Recorder functionality.
virtual int import_config(const ACE_TCHAR *filename)
static TYPE * instance(const ACE_TCHAR *name)
#define OPENDDS_ASSERT(C)
DDS::ReaderDataLifecycleQosPolicy initial_ReaderDataLifecycleQosPolicy_
const size_t DEFAULT_CHUNK_MULTIPLIER
virtual const ACE_Configuration_Section_Key & root_section(void) const
void connect(RcHandle< InternalTopic< NetworkInterfaceAddress > > topic)
static bool got_log_verbose
OPENDDS_STRING discovery_template_name
const ACE_Time_Value & value() const
void domain_default_config(DDS::DomainId_t domain, const TransportConfig_rch &cfg)
static bool got_security_flag
int liveliness_factor_
The propagation delay factor.
int consume_arg(int number=1)
EntityFactoryQosPolicy entity_factory
static bool got_default_discovery
int priority_max_
Maximum priority value for the current scheduling policy.
bool get_domain_range_info(DDS::DomainId_t id, DomainRange &inst)
DomainParticipantImpl * participant()
virtual int find_value(const ACE_Configuration_Section_Key &key, const ACE_TCHAR *name, VALUETYPE &type)
FILE * fopen(const char *filename, const char *mode)
ACE_Recursive_Thread_Mutex maps_lock_
Guard access to the internal maps.
virtual void deinitialize()
EntityFactoryQosPolicy entity_factory
OPENDDS_STRING get_config_instance_name(DDS::DomainId_t id)
int load_domain_ranges(ACE_Configuration_Heap &cf)
static bool got_persistent_data_dir
const TimeSource time_source_
Implementation of Replayer functionality.
Replayer_ptr create_replayer(DDS::DomainParticipant_ptr participant, DDS::Topic_ptr a_topic, const DDS::PublisherQos &publisher_qos, const DDS::DataWriterQos &datawriter_qos, const ReplayerListener_rch &a_listener)
DDS::TransportPriorityQosPolicy initial_TransportPriorityQosPolicy_
static const ACE_TCHAR DOMAIN_SECTION_NAME[]
EntityFactoryQosPolicy entity_factory
const int BIT_LOOKUP_DURATION_MSEC
virtual Monitor * create_sp_monitor(Service_Participant *sp)
Factory function to create a service participant monitor object.
ACE_Thread_Mutex factory_lock_
DDS::SubscriberQos initial_SubscriberQos_
TransportConfig_rch global_config() const
bool process_customizations(DDS::DomainId_t id, const OPENDDS_STRING &discovery_name, ValueMap &customs)
DDS::DurabilityQosPolicy initial_DurabilityQosPolicy_
DDS::LivelinessQosPolicy initial_LivelinessQosPolicy_
static const char DEFAULT_PERSISTENT_DATA_DIR[]
DomainParticipantImpl * participant()
static TimePoint_T< MonotonicClock > now()
static bool got_chunk_association_multiplier
DDS::DestinationOrderQosPolicy initial_DestinationOrderQosPolicy_
struct utsname ACE_utsname
const int DEFAULT_FEDERATION_LIVELINESS
static bool got_type_object_encoding
bool bidir_giop_
Enable TAO's Bidirectional GIOP?
static bool got_debug_level
TimeDuration pending_timeout_
OpenDDS_Dcps_Export unsigned int Transport_debug_level
Transport Logging verbosity level.
int is_parameter_next(void) const
NetworkAddress default_address_
The default network address to use.
OpenDDS_Dcps_Export void set_DCPS_debug_level(unsigned int lvl)
DOMAINID_TYPE_NATIVE DomainId_t
int is_anything_left(void) const
PresentationQosPolicy presentation
int liveliness_factor() const
static bool got_log_fname
JobQueue_rch job_queue() const
bool get_transport_base_config_name(DDS::DomainId_t domainId, ACE_TString &name) const
const CHAR_TYPE * get_the_parameter(const CHAR_TYPE *flag)
typedef OPENDDS_MAP(Discovery::RepoKey, Discovery_rch) RepoKeyDiscoveryMap
For internal OpenDDS Use (needed for monitor code)
static const char * DEFAULT_STATIC
TimeDuration schedulerQuantum_
Scheduler time slice from configuration file.
OPENDDS_STRING discovery_name
DurabilityQosPolicyKind kind
int federation_recovery_duration_
The FederationRecoveryDuration value in seconds.
DDS::DomainParticipantFactory_ptr get_domain_participant_factory(int &argc=zero_argc, ACE_TCHAR *argv[]=0)
size_t association_chunk_multiplier() const
unique_ptr< DataDurabilityCache > transient_data_cache_
The TRANSIENT data durability cache.
ACE_TString schedulerString_
Scheduling policy value from configuration file.
bool is_empty(void) const
void remap_domains(Discovery::RepoKey oldKey, Discovery::RepoKey newKey, bool attach_participant=true)
Rebind a domain from one repository to another.
size_t association_chunk_multiplier_
const size_t DEFAULT_NUM_CHUNKS
int parse_domain_range(const OPENDDS_STRING &range, int &start, int &end)
TransportConfig_rch get_config(const OPENDDS_STRING &name) const
DDS::ReturnCode_t cleanup()
DDS::ReturnCode_t delete_replayer(Replayer_ptr replayer)
DDS::Duration_t bit_autopurge_disposed_samples_delay() const
#define ACE_GUARD_RETURN(MUTEX, OBJ, LOCK, RETURN)
DDS::TopicQos initial_TopicQos_
int federation_liveliness_
This FederationLivelinessDuration.
DDS::DataReaderQos initial_DataReaderQos_
OPENDDS_VECTOR(DomainRange) domain_ranges_
#define GET_CONFIG_VALUE(CF, SECT, KEY, VALUE, TYPE)
XTypes::TypeInformation get_type_information(DDS::DomainParticipant_ptr participant, const DDS::BuiltinTopicKey_t &key) const
ACE_TString default_configuration_file_
static bool got_security_debug
static ACE_Allocator * instance(void)
#define GET_CONFIG_TSTRING_VALUE(CF, SECT, KEY, VALUE)
int bit_lookup_duration_msec_
ACE_CString persistent_data_dir_
The PERSISTENT data durability directory.
virtual void initialize()
Initialize the monitor (required to report data)
DDS::DomainParticipantFactoryQos initial_DomainParticipantFactoryQos_
static bool got_thread_status_interval
DDS::ReliabilityQosPolicy initial_ReliabilityQosPolicy_
void parse_flags(const ACE_TCHAR *flags)
Replayer_ptr create_replayer(DDS::Topic_ptr a_topic, const DDS::PublisherQos &publisher_qos, const DDS::DataWriterQos &datawriter_qos, const ReplayerListener_rch &a_listener, DDS::StatusMask mask)
const ACE_TCHAR * compiler_name(void)
bool set_repo_ior(const char *ior, Discovery::RepoKey key=Discovery::DEFAULT_REPO, bool attach_participant=true)
int load_transport_configuration(const OPENDDS_STRING &file_name, ACE_Configuration_Heap &cf)
static bool got_transport_debug_level
int configure_domain_range_instance(DDS::DomainId_t domainId)
DDS::Topic_ptr create_typeless_topic(const char *topic_name, const char *type_name, bool type_has_keys, const DDS::TopicQos &qos, DDS::TopicListener_ptr a_listener, DDS::StatusMask mask)
const ReturnCode_t RETCODE_OUT_OF_RESOURCES
ThreadStatusManager & get_thread_status_manager()
Get the service participant's thread status manager.
void disconnect(RcHandle< InternalTopic< NetworkInterfaceAddress > > topic)
const int DEFAULT_FEDERATION_BACKOFF_MULTIPLIER
static void close()
Close the singleton instance of this class.
#define ACE_TEXT_CHAR_TO_TCHAR(STRING)
static bool got_bit_transport_ip
DDS::PartitionQosPolicy initial_PartitionQosPolicy_
DDS::DomainId_t range_start
static int service_initialize()
static const ACE_TCHAR RTPS_SECTION_NAME[]
DDS::DomainId_t range_end
static const ACE_TCHAR DOMAIN_RANGE_SECTION_NAME[]
DDS::HistoryQosPolicy initial_HistoryQosPolicy_
DDS::ReturnCode_t shutdown()
DDS::ReturnCode_t get_dynamic_type(DDS::DynamicType_var &type, DDS::DomainParticipant_ptr participant, const DDS::BuiltinTopicKey_t &key) const
DiscoveryTypes discovery_types_
u_int compiler_minor_version(void)
int set(const ACE_INET_Addr &)
ThreadStatusManager thread_status_manager_
ACE_Thread_Mutex & get_static_xtypes_lock()
getter for lock that protects the static initialization of XTypes related data structures ...
void repository_lost(Discovery::RepoKey key)
Failover to a new repository.
DDS::TimeBasedFilterQosPolicy initial_TimeBasedFilterQosPolicy_
DDS::Topic_ptr create_typeless_topic(DDS::DomainParticipant_ptr participant, const char *topic_name, const char *type_name, bool type_has_keys, const DDS::TopicQos &qos, DDS::TopicListener_ptr a_listener=0, DDS::StatusMask mask=0)
unique_ptr< Monitor > monitor_
Pointer to the monitor object for this object.
const unsigned long DURATION_INFINITE_NSEC
int load_transport_templates(ACE_Configuration_Heap &cf)
ACE_TString bit_transport_ip_
The builtin topic transport address.
Recorder_ptr create_recorder(DDS::DomainParticipant_ptr participant, DDS::Topic_ptr a_topic, const DDS::SubscriberQos &subscriber_qos, const DDS::DataReaderQos &datareader_qos, const RecorderListener_rch &a_listener)
static TYPE * instance(void)
u_int compiler_major_version(void)
static bool got_log_level
void set_shutdown_listener(RcHandle< ShutdownListener > listener)
void add_discovery(Discovery_rch discovery)
OpenDDS_Dcps_Export unsigned int DCPS_debug_level
DDS::DomainParticipantQos initial_DomainParticipantQos_
XTypes::TypeLookupService_rch get_type_lookup_service()
OpenDDS_Dcps_Export LogLevel log_level
int load_common_configuration(ACE_Configuration_Heap &cf, const ACE_TCHAR *filename)
ACE_Thread_Mutex network_config_monitor_lock_
bool belongs_to_domain_range(DDS::DomainId_t domainId) const
void delete_recorder(Recorder_ptr recorder)
DDS::ReturnCode_t cleanup()
Discovery::RepoKey defaultDiscovery_
DDS::DeadlineQosPolicy initial_DeadlineQosPolicy_
static bool got_default_address
DDS::EntityFactoryQosPolicy initial_EntityFactoryQosPolicy_
OPENDDS_STRING bit_transport_ip() const
boolean autoenable_created_entities
static bool got_bit_lookup_duration_msec
virtual int open_section(const ACE_Configuration_Section_Key &base, const ACE_TCHAR *sub_section, bool create, ACE_Configuration_Section_Key &result)
ReactorInterceptor_rch interceptor() const
ACE_Reactor_Timer_Interface * timer()
const char * retcode_to_string(DDS::ReturnCode_t value)
int federation_initial_backoff_seconds_
The FederationInitialBackoffSeconds value.
XTypes::TypeObject get_type_object(DDS::DomainParticipant_ptr participant, const XTypes::TypeIdentifier &ti) const
void default_configuration_file(const ACE_TCHAR *path)
void set_debug_level(unsigned level)
Discovery_rch get_discovery(const DDS::DomainId_t domain)
Accessor of the Discovery object for a given domain.
static bool got_use_rti_serialization
const ReturnCode_t RETCODE_ERROR
AtomicBool shut_down_
Used to track state of service participant.
int load_domain_configuration(ACE_Configuration_Heap &cf, const ACE_TCHAR *filename)
int configure_discovery_template(DDS::DomainId_t domainId, const OPENDDS_STRING &discovery_name)
Discovery::RepoKey get_default_discovery()
static bool got_bit_transport_port
int federation_backoff_multiplier_
This FederationBackoffMultiplier.
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
int bit_lookup_duration_msec() const
static TransportRegistry * instance()
Return a singleton instance of this class.
int processSections(ACE_Configuration_Heap &cf, const ACE_Configuration_Section_Key &key, KeyList &subsections)
ACE_Reactor * get_reactor()
DDS::DurabilityServiceQosPolicy initial_DurabilityServiceQosPolicy_
const ReturnCode_t RETCODE_OK
bool is_discovery_template(const OPENDDS_STRING &name)
int cur_arg_strncasecmp(const CHAR_TYPE *flag)
const int DEFAULT_FEDERATION_RECOVERY_DURATION
static bool got_bidir_giop
DDS::Duration_t bit_autopurge_nowriter_samples_delay() const
int open(const ACE_TCHAR *file_name, void *base_address=ACE_DEFAULT_BASE_ADDR, size_t default_map_size=ACE_DEFAULT_CONFIG_SECTION_SIZE)
Recorder_ptr create_recorder(DDS::Topic_ptr a_topic, const DDS::SubscriberQos &subscriber_qos, const DDS::DataReaderQos &datareader_qos, const RecorderListener_rch &a_listener, DDS::StatusMask mask)
const CHAR_TYPE * get_current(void) const
const DomainRepoMap & domainRepoMap() const
#define ACE_ERROR_RETURN(X, Y)
unique_ptr< DataDurabilityCache > persistent_data_cache_
The PERSISTENT data durability cache.
size_type length(void) const
static ACE_TString config_fname(ACE_TEXT(""))
DataRepresentationIdSeq value
int pullValues(ACE_Configuration_Heap &cf, const ACE_Configuration_Section_Key &key, ValueMap &values)
DDS::UserDataQosPolicy initial_UserDataQosPolicy_
The initial values of qos policies.
DDS::OwnershipStrengthQosPolicy initial_OwnershipStrengthQosPolicy_
void initialize()
Initialize default qos.
GroupDataQosPolicy group_data
const DCPS::Encoding encoding(DCPS::Encoding::KIND_UNALIGNED_CDR, DCPS::ENDIAN_BIG)
DDS::PresentationQosPolicy initial_PresentationQosPolicy_
ACE_Thread_Mutex xtypes_lock_
Thread mutex used to protect the static initialization of XTypes data structures. ...
int load_discovery_configuration(ACE_Configuration_Heap &cf, const ACE_TCHAR *section_name)
int open_reactor_task(void *, ThreadStatusManager *thread_status_manager=0, const String &name="")
ACE_TString global_transport_config_
const char * get_as_string() const
PartitionQosPolicy partition
The Internal API and Implementation of OpenDDS.
const RepoKeyDiscoveryMap & discoveryMap() const
DataDurabilityCache * get_data_durability_cache(DDS::DurabilityQosPolicy const &durability)
static void close()
Close the singleton instance of this class.
static bool got_pending_timeout
void _tao_print_exception(const char *info, FILE *f=stdout) const
int ignore_arg(int number=1)
bool publisher_content_filter_
Allow the publishing side to do content filtering?
void register_discovery_type(const char *section_name, Discovery::Config *cfg)
PresentationQosPolicy presentation
static Service_Participant * instance()
Return a singleton instance of this class.
ACE_thread_t reactor_owner() const
bool fake_encryption
Disable all encryption for security, even the required builtin encryption.
int uname(ACE_utsname *name)
int & federation_backoff_multiplier()
Accessors for FederationBackoffMultiplier.
RcHandle< ShutdownListener > shutdown_listener_
void set_default_discovery(const Discovery::RepoKey &defaultDiscovery)
OpenDDS_Dcps_Export SecurityDebug security_debug
static const ACE_TCHAR COMMON_SECTION_NAME[]
static bool got_security_fake_encryption
int add(const CHAR_TYPE *next_arg, bool quote_arg=false)
int parse_args(int &argc, ACE_TCHAR *argv[])
ReactorTask reactor_task_
RepoKeyDiscoveryMap discoveryMap_
The RepoKey to Discovery object mapping.
bool convertToInteger(const String &s, T &value)
u_int compiler_beta_version(void)
int sched_params(const ACE_Sched_Params &, ACE_id_t id=ACE_SELF)
static StaticDiscovery_rch instance()