.. _program_listing_file__tmp_ws_src_rmw_connextdds_rmw_connextdds_common_include_rmw_connextdds_static_config.hpp: Program Listing for File static_config.hpp ========================================== |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/rmw_connextdds/rmw_connextdds_common/include/rmw_connextdds/static_config.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // Copyright 2020 Real-Time Innovations, Inc. (RTI) // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef RMW_CONNEXTDDS__STATIC_CONFIG_HPP_ #define RMW_CONNEXTDDS__STATIC_CONFIG_HPP_ /****************************************************************************** * Debug flags ******************************************************************************/ #ifndef RMW_CONNEXT_DEBUG #define RMW_CONNEXT_DEBUG 0 #endif // RMW_CONNEXT_DEBUG /****************************************************************************** * Default User Configuration ******************************************************************************/ #ifndef RMW_CONNEXT_DEFAULT_DOMAIN #define RMW_CONNEXT_DEFAULT_DOMAIN 0u #endif /* RMW_CONNEXT_DEFAULT_DOMAIN */ #ifndef RMW_CONNEXT_DEFAULT_UDP_INTERFACE #define RMW_CONNEXT_DEFAULT_UDP_INTERFACE "lo" #endif /* RMW_CONNEXT_DEFAULT_UDP_INTERFACE */ #ifndef RMW_CONNEXT_DEFAULT_QOS_LIBRARY #define RMW_CONNEXT_DEFAULT_QOS_LIBRARY "ros2" #endif /* RMW_CONNEXT_DEFAULT_QOS_LIBRARY */ /****************************************************************************** * Environment Variables ******************************************************************************/ #ifndef RMW_CONNEXT_ENV_UDP_INTERFACE #define RMW_CONNEXT_ENV_UDP_INTERFACE \ "RMW_CONNEXT_UDP_INTERFACE" #endif /* RMW_CONNEXT_ENV_UDP_INTERFACE */ #ifndef RMW_CONNEXT_ENV_INITIAL_PEERS #define RMW_CONNEXT_ENV_INITIAL_PEERS \ "RMW_CONNEXT_INITIAL_PEERS" #endif /* RMW_CONNEXT_ENV_INITIAL_PEERS */ #ifndef RMW_CONNEXT_ENV_QOS_LIBRARY #define RMW_CONNEXT_ENV_QOS_LIBRARY \ "RMW_CONNEXT_QOS_LIBRARY" #endif /* RMW_CONNEXT_ENV_QOS_LIBRARY */ #ifndef RMW_CONNEXT_ENV_USE_DEFAULT_PUBLISH_MODE #define RMW_CONNEXT_ENV_USE_DEFAULT_PUBLISH_MODE \ "RMW_CONNEXT_USE_DEFAULT_PUBLISH_MODE" #endif /* RMW_CONNEXT_ENV_USE_DEFAULT_PUBLISH_MODE */ #ifndef RMW_CONNEXT_ENV_REQUEST_REPLY_MAPPING #define RMW_CONNEXT_ENV_REQUEST_REPLY_MAPPING \ "RMW_CONNEXT_REQUEST_REPLY_MAPPING" #endif /* RMW_CONNEXT_ENV_REQUEST_REPLY_MAPPING */ #ifndef RMW_CONNEXT_ENV_CYCLONE_COMPATIBILITY_MODE #define RMW_CONNEXT_ENV_CYCLONE_COMPATIBILITY_MODE \ "RMW_CONNEXT_CYCLONE_COMPATIBILITY_MODE" #endif /* RMW_CONNEXT_ENV_REQUEST_REPLY_MAPPING */ #ifndef RMW_CONNEXT_ENV_OLD_RMW_COMPATIBILITY_MODE #define RMW_CONNEXT_ENV_OLD_RMW_COMPATIBILITY_MODE \ "RMW_CONNEXT_LEGACY_RMW_COMPATIBILITY_MODE" #endif /* RMW_CONNEXT_ENV_OLD_RMW_COMPATIBILITY_MODE */ #ifndef RMW_CONNEXT_ENV_DISABLE_FAST_ENDPOINT_DISCOVERY #define RMW_CONNEXT_ENV_DISABLE_FAST_ENDPOINT_DISCOVERY \ "RMW_CONNEXT_DISABLE_FAST_ENDPOINT_DISCOVERY" #endif /* RMW_CONNEXT_ENV_OLD_RMW_COMPATIBILITY_MODE */ #ifndef RMW_CONNEXT_ENV_DISABLE_LARGE_DATA_OPTIMIZATIONS #define RMW_CONNEXT_ENV_DISABLE_LARGE_DATA_OPTIMIZATIONS \ "RMW_CONNEXT_DISABLE_LARGE_DATA_OPTIMIZATIONS" #endif /* RMW_CONNEXT_ENV_DISABLE_LARGE_DATA_OPTIMIZATIONS */ // TODO(security-wg): These are intended to be temporary, and need to be // refactored into a proper abstraction. #ifndef RMW_CONNEXT_ENV_SECURITY_LOG_FILE #define RMW_CONNEXT_ENV_SECURITY_LOG_FILE "ROS_SECURITY_LOG_FILE" #endif /* RMW_CONNEXT_ENV_SECURITY_LOG_FILE */ #ifndef RMW_CONNEXT_ENV_SECURITY_LOG_PUBLISH #define RMW_CONNEXT_ENV_SECURITY_LOG_PUBLISH "ROS_SECURITY_LOG_PUBLISH" #endif /* RMW_CONNEXT_ENV_SECURITY_LOG_PUBLISH */ #ifndef RMW_CONNEXT_ENV_SECURITY_LOG_VERBOSITY #define RMW_CONNEXT_ENV_SECURITY_LOG_VERBOSITY "ROS_SECURITY_LOG_VERBOSITY" #endif /* RMW_CONNEXT_ENV_SECURITY_LOG_VERBOSITY */ #ifndef RMW_CONNEXT_ENV_ENDPOINT_QOS_OVERRIDE_POLICY #define RMW_CONNEXT_ENV_ENDPOINT_QOS_OVERRIDE_POLICY "RMW_CONNEXT_ENDPOINT_QOS_OVERRIDE_POLICY" #endif /* RMW_CONNEXT_ENV_ENDPOINT_QOS_OVERRIDE_POLICY */ #ifndef RMW_CONNEXT_ENV_PARTICIPANT_QOS_OVERRIDE_POLICY #define RMW_CONNEXT_ENV_PARTICIPANT_QOS_OVERRIDE_POLICY \ "RMW_CONNEXT_PARTICIPANT_QOS_OVERRIDE_POLICY" #endif /* RMW_CONNEXT_ENV_PARTICIPANT_QOS_OVERRIDE_POLICY */ /****************************************************************************** * DDS Implementation * Select the DDS implementation used to build the RMW library. ******************************************************************************/ #define RMW_CONNEXT_DDS_API_PRO 0 #define RMW_CONNEXT_DDS_API_MICRO 1 #ifndef RMW_CONNEXT_DDS_API #define RMW_CONNEXT_DDS_API RMW_CONNEXT_DDS_API_PRO #endif /* RMW_CONNEXT_DDS_API */ #ifndef RMW_CONNEXT_DDS_API_PRO_LEGACY #define RMW_CONNEXT_DDS_API_PRO_LEGACY 0 #endif /* RMW_CONNEXT_DDS_API_PRO_LEGACY */ #ifndef RMW_CONNEXT_ENABLE_SECURITY #define RMW_CONNEXT_ENABLE_SECURITY \ (RMW_CONNEXT_DDS_API == RMW_CONNEXT_DDS_API_PRO) #endif /* RMW_CONNEXT_ENABLE_SECURITY */ /****************************************************************************** * Log configuration. * This option controls the logging output of the RMW and which logging * calls will actually be compiled into the library: * - NONE: disable all logging output * - DEFAULT: include only INFO to ERROR log calls, log through rcutils * - ALL: include all log calls, log through rcutils * - PRINTF: include all log calls, log through printf() * Keep in mind that compiling all logging statements, including those at * verbosity debug and higher,will likely cause some performance degradation. ******************************************************************************/ #define RMW_CONNEXT_LOG_MODE_NONE 0 #define RMW_CONNEXT_LOG_MODE_DEFAULT 1 #define RMW_CONNEXT_LOG_MODE_ALL 2 #define RMW_CONNEXT_LOG_MODE_PRINTF 3 #ifndef RMW_CONNEXT_LOG_MODE #define RMW_CONNEXT_LOG_MODE RMW_CONNEXT_LOG_MODE_DEFAULT #endif /* RMW_CONNEXT_LOG_MODE */ /****************************************************************************** * Code assertion. * Enable various precondition assertions in the code. ******************************************************************************/ #ifndef RMW_CONNEXT_ASSERT_ENABLE #define RMW_CONNEXT_ASSERT_ENABLE 0 #endif /* RMW_CONNEXT_ASSERT_ENABLE */ /****************************************************************************** * If this option is enabled, the RMW will always implement RPC requests between * Clients and Servers using the "basic" mapping from DDS-RPC, which serializes * a "request header" (containing GUID and SN) before the message payload, * This allows the RMW to interoperate with DDS implementations which don't * support the "extended" mapping via propagation and correlation of * "sample identities". * This option is enabled by default only for RTI Connext DDS Micro. ******************************************************************************/ #ifndef RMW_CONNEXT_FORCE_REQUEST_REPLY_MAPPING_BASIC #define RMW_CONNEXT_FORCE_REQUEST_REPLY_MAPPING_BASIC \ (RMW_CONNEXT_DDS_API == RMW_CONNEXT_DDS_API_MICRO) #endif /* RMW_CONNEXT_FORCE_REQUEST_REPLY_MAPPING_BASIC */ /****************************************************************************** * Shmem Transport. * If disabled, the shared memory transport will not be used by the * DomainParticipant (Micro version only). ******************************************************************************/ #ifndef RMW_CONNEXT_TRANSPORT_SHMEM #define RMW_CONNEXT_TRANSPORT_SHMEM 1 #endif /* RMW_CONNEXT_TRANSPORT_SHMEM */ /****************************************************************************** * Always use UUID algorithm to generate the RTPS GUID of the DomainParticipant. ******************************************************************************/ #ifndef RMW_CONNEXT_RTPS_AUTO_ID_FROM_UUID #define RMW_CONNEXT_RTPS_AUTO_ID_FROM_UUID 1 #endif /* RMW_CONNEXT_RTPS_AUTO_ID_FROM_UUID */ /****************************************************************************** * Address used to constrain the UDPv4 transport to only allow "localhost" * communication. It must match the address of the localhost interface. ******************************************************************************/ #ifndef RMW_CONNEXT_LOCALHOST_ONLY_ADDRESS #define RMW_CONNEXT_LOCALHOST_ONLY_ADDRESS "127.0.0.1" #endif /* RMW_CONNEXT_LOCALHOST_ONLY_ADDRESS */ /****************************************************************************** * Maximum length of a ContentFilterProperty_t. * According to the RTPS spec, ContentFilterProperty_t has the following fields: * -contentFilteredTopicName (max length 256) * -relatedTopicName (max length 256) * -filterClassName (max length 256) * -filterName (DDSSQL) * -filterExpression * In Connext, contentfilter_property_max_length is sum of lengths of all these * fields, which by default is 256. * So we set the limit to 1024, to accomodate the complete topic name with * namespaces. * The property will only be set if the current max length is smaller. ******************************************************************************/ #ifndef RMW_CONNEXT_CONTENTFILTER_PROPERTY_MAX_LENGTH #define RMW_CONNEXT_CONTENTFILTER_PROPERTY_MAX_LENGTH 1024 #endif /* RMW_CONNEXT_CONTENTFILTER_PROPERTY_MAX_LENGTH */ /****************************************************************************** * Maximum serialized size of a type code propagated by the RMW. ******************************************************************************/ #ifndef RMW_CONNEXT_TYPE_CODE_MAX_SERIALIZED_SIZE #define RMW_CONNEXT_TYPE_CODE_MAX_SERIALIZED_SIZE 0 #endif /* RMW_CONNEXT_TYPE_CODE_MAX_SERIALIZED_SIZE */ /****************************************************************************** * Maximum serialized size of a type object propagated by the RMW. ******************************************************************************/ #ifndef RMW_CONNEXT_TYPE_OBJECT_MAX_SERIALIZED_SIZE #define RMW_CONNEXT_TYPE_OBJECT_MAX_SERIALIZED_SIZE 65000 #endif /* RMW_CONNEXT_TYPE_OBJECT_MAX_SERIALIZED_SIZE */ /****************************************************************************** * Automatically tune DataWriterQos to better handle reliable "large data". ******************************************************************************/ #ifndef RMW_CONNEXT_DEFAULT_LARGE_DATA_OPTIMIZATIONS #define RMW_CONNEXT_DEFAULT_LARGE_DATA_OPTIMIZATIONS 1 #endif /* RMW_CONNEXT_DEFAULT_LARGE_DATA_OPTIMIZATIONS */ /****************************************************************************** * Threshold of the maximum serialized size for a message to be considered * "large". The RMW will automatically tune the reliability protocol for * writers of types that match or exceed this threshold. ******************************************************************************/ #ifndef RMW_CONNEXT_LARGE_DATA_MIN_SERIALIZED_SIZE #define RMW_CONNEXT_LARGE_DATA_MIN_SERIALIZED_SIZE 1048576 /* 1MB */ #endif /* RMW_CONNEXT_LARGE_DATA_MIN_SERIALIZED_SIZE */ /****************************************************************************** * Size of the "send window" of an RTPS Writer sending "large data". ******************************************************************************/ #ifndef RMW_CONNEXT_LARGE_DATA_SEND_WINDOW_SIZE_MIN #define RMW_CONNEXT_LARGE_DATA_SEND_WINDOW_SIZE_MIN 10 #endif /* RMW_CONNEXT_LARGE_DATA_SEND_WINDOW_SIZE_MIN */ #ifndef RMW_CONNEXT_LARGE_DATA_SEND_WINDOW_SIZE_MAX #define RMW_CONNEXT_LARGE_DATA_SEND_WINDOW_SIZE_MAX 100 #endif /* RMW_CONNEXT_LARGE_DATA_SEND_WINDOW_SIZE_MAX */ /****************************************************************************** * Regular hearbeat period used by an RTPS Writer sending "large data". * This is an initializer for an instance of type DDS_Duration_t. ******************************************************************************/ #ifndef RMW_CONNEXT_LARGE_DATA_HEARTBEAT_PERIOD #define RMW_CONNEXT_LARGE_DATA_HEARTBEAT_PERIOD {0, 200000000} /* 200ms */ #endif /* RMW_CONNEXT_LARGE_DATA_HEARTBEAT_PERIOD */ /****************************************************************************** * Fast hearbeat period used by an RTPS Writer sending "large data" to allow * late joiners and out of sync readers to catch. * This is an initializer for an instance of type DDS_Duration_t. ******************************************************************************/ #ifndef RMW_CONNEXT_LARGE_DATA_HEARTBEAT_PERIOD_FAST #define RMW_CONNEXT_LARGE_DATA_HEARTBEAT_PERIOD_FAST {0, 20000000} /* 20ms */ #endif /* RMW_CONNEXT_LARGE_DATA_HEARTBEAT_PERIOD_FAST */ /****************************************************************************** * In order to reduce the time to cleanup a participant (Node), we use the * advice from * https://community.rti.com/static/documentation/connext-dds/5.3.1/doc/api/connext_dds/api_cpp/structDDS__DomainParticipantQos.html * and reduce the shutdown_cleanup_period to 10 milliseconds. ******************************************************************************/ #ifndef RMW_CONNEXT_SHUTDOWN_CLEANUP_PERIOD_SEC #define RMW_CONNEXT_SHUTDOWN_CLEANUP_PERIOD_SEC 0 #endif /* RMW_CONNEXT_SHUTDOWN_CLEANUP_PERIOD_SEC */ #ifndef RMW_CONNEXT_SHUTDOWN_CLEANUP_PERIOD_NSEC #define RMW_CONNEXT_SHUTDOWN_CLEANUP_PERIOD_NSEC 10000000 #endif /* RMW_CONNEXT_SHUTDOWN_CLEANUP_PERIOD_NSEC */ /****************************************************************************** * Modify DomainParticipantQos to perform faster endpoint discovery ******************************************************************************/ #ifndef RMW_CONNEXT_FAST_ENDPOINT_DISCOVERY #define RMW_CONNEXT_FAST_ENDPOINT_DISCOVERY 1 #endif /* RMW_CONNEXT_FAST_ENDPOINT_DISCOVERY */ /****************************************************************************** * Modify DomainParticipantQos to allow sharing of DDS entities created with * the Connext C API with applications using the C++11 API. ******************************************************************************/ #ifndef RMW_CONNEXT_SHARE_DDS_ENTITIES_WITH_CPP #define RMW_CONNEXT_SHARE_DDS_ENTITIES_WITH_CPP 1 #endif /* RMW_CONNEXT_SHARE_DDS_ENTITIES_WITH_CPP */ /****************************************************************************** * Override dds.transport.UDPv4.builtin.ignore_loopback_interface in * DomainParticipantQos to force communication over loopback (in addition to * other transports, e.g. shared memory). ******************************************************************************/ #ifndef RMW_CONNEXT_DONT_IGNORE_LOOPBACK_INTERFACE #define RMW_CONNEXT_DONT_IGNORE_LOOPBACK_INTERFACE 0 #endif /* RMW_CONNEXT_DONT_IGNORE_LOOPBACK_INTERFACE */ /****************************************************************************** * Enable support for running in "compatibility mode" with the previous RMW for * Connext (rmw_connext_cpp). If this option is enable, the mode can be * enabled via env variable. Once the mode is enabled, rmw_connextdds will: * - Add suffix "_" to member names of types propagated via DDS discovery. ******************************************************************************/ #ifndef RMW_CONNEXT_LEGACY_RMW_COMPATIBILITY_MODE #define RMW_CONNEXT_LEGACY_RMW_COMPATIBILITY_MODE 1 #endif /* RMW_CONNEXT_LEGACY_RMW_COMPATIBILITY_MODE */ /****************************************************************************** * On windows, the custom SQL filter cannot be registered as "built-in", so we * must enable some additional code to register it as a user plugin. ******************************************************************************/ #ifndef RMW_CONNEXT_BUILTIN_CFT_COMPATIBILITY_MODE #define RMW_CONNEXT_BUILTIN_CFT_COMPATIBILITY_MODE 0 #endif /* RMW_CONNEXT_LEGACY_RMW_COMPATIBILITY_MODE */ #include "resource_limits.hpp" #endif // RMW_CONNEXTDDS__STATIC_CONFIG_HPP_