Contents Menu Expand Light mode Dark mode Auto light/dark mode
OpenDDS 3.27.0
Light Logo Dark Logo
  • Main Website
  • GitHub Repo
  • Release Notes
  • Developer’s Guide
    • About This Guide
    • Quick Start Guides
      • Windows Quick Start
      • Linux/macOS
      • Raspberry Pi
      • Docker
    • Introduction to DDS
    • Shapes Demo
      • Multiple Instances
      • Reliability
      • Durability
      • Partition
      • Ownership
      • Time-Based Filter
      • Content-Filtered Topics
    • Introduction to OpenDDS
    • Building and Installing
      • Dependencies
      • Using OpenDDS in a CMake Project
      • Android
      • iOS
    • Getting Started
    • Quality of Service
    • Conditions and Listeners
    • Content-Subscription Profile
    • Built-In Topics
    • Run-time Configuration
    • opendds_idl
    • The DCPS Information Repository
    • Java Bindings
    • Modeling SDK
    • Alternate Interfaces to Data
    • Safety Profile
    • DDS Security
    • Internet-Enabled RTPS
    • XTypes
    • FAQ
  • Internal Documentation
    • OpenDDS Development Guidelines
    • Documentation Guidelines
    • Unit Tests
    • GitHub Actions
    • Running Tests
    • Bench Performance & Scalability Test Framework
    • Release Process
  • Glossary
  • Index
Back to top
Edit this page
  • DDS 1.4 (dds)

    • Preface (1)

    • 1 Overview (1)

      • 1.1 Introduction (2)

      • 1.2 Purpose (2)

    • 2 Data-CentricPublish-Subscribe (DCPS) (1)

      • 2.1 Summary (2)

      • 2.2 Platform Independent Model (PIM) (2)

        • 2.2.1 Overview and Design Rationale (3)

          • 2.2.1.1 Format and Conventions (4)

          • 2.2.1.2 Conceptual Outline (4)

            • 2.2.1.2.1 Overview (5)

            • 2.2.1.2.2 Overall Conceptual Model (5)

        • 2.2.2 PIM Description (3)

          • 2.2.2.1 Infrastructure Module (4)

            • 2.2.2.1.1 Entity Class (5)

              • 2.2.2.1.1.1 set_qos (abstract) (6)

              • 2.2.2.1.1.2 get_qos (abstract) (6)

              • 2.2.2.1.1.3 set_listener (abstract) (6)

              • 2.2.2.1.1.4 get_listener (abstract) (6)

              • 2.2.2.1.1.5 get_statuscondition (6)

              • 2.2.2.1.1.6 get_status_changes (6)

              • 2.2.2.1.1.7 enable (6)

              • 2.2.2.1.1.8 get_instance_handle (6)

            • 2.2.2.1.2 DomainEntity Class (5)

            • 2.2.2.1.3 QosPolicy Class (5)

            • 2.2.2.1.4 Listener Interface (5)

            • 2.2.2.1.5 Status Class (5)

            • 2.2.2.1.6 WaitSet Class (5)

              • 2.2.2.1.6.1 attach_condition (6)

              • 2.2.2.1.6.2 detach_condition (6)

              • 2.2.2.1.6.3 wait (6)

              • 2.2.2.1.6.4 get_conditions (6)

            • 2.2.2.1.7 Condition Class (5)

              • 2.2.2.1.7.1 get_trigger_value (6)

            • 2.2.2.1.8 GuardCondition Class (5)

              • 2.2.2.1.8.1 set_trigger_value (6)

            • 2.2.2.1.9 StatusCondition Class (5)

              • 2.2.2.1.9.1 set_enabled_statuses (6)

              • 2.2.2.1.9.2 get_enabled_statuses (6)

              • 2.2.2.1.9.3 get_entity (6)

          • 2.2.2.2 Domain Module (4)

            • 2.2.2.2.1 DomainParticipant Class (5)

              • 2.2.2.2.1.1 create_publisher (6)

              • 2.2.2.2.1.2 delete_publisher (6)

              • 2.2.2.2.1.3 create_subscriber (6)

              • 2.2.2.2.1.4 delete_subscriber (6)

              • 2.2.2.2.1.5 create_topic (6)

              • 2.2.2.2.1.6 delete_topic (6)

              • 2.2.2.2.1.7 create_contentfilteredtopic (6)

              • 2.2.2.2.1.8 delete_ contentfilteredtopic (6)

              • 2.2.2.2.1.9 create_multitopic (6)

              • 2.2.2.2.1.10 delete_multitopic (6)

              • 2.2.2.2.1.11 find_topic (6)

              • 2.2.2.2.1.12 lookup_topicdescription (6)

              • 2.2.2.2.1.13 get_builtin_subscriber (6)

              • 2.2.2.2.1.14 ignore_participant (6)

              • 2.2.2.2.1.15 ignore_topic (6)

              • 2.2.2.2.1.16 ignore_publication (6)

              • 2.2.2.2.1.17 ignore_subscription (6)

              • 2.2.2.2.1.18 delete_contained_entities (6)

              • 2.2.2.2.1.19 assert_liveliness (6)

              • 2.2.2.2.1.20 set_default_publisher_qos (6)

              • 2.2.2.2.1.21 get_default_publisher_qos (6)

              • 2.2.2.2.1.22 set_default_subscriber_qos (6)

              • 2.2.2.2.1.23 get_default_subscriber_qos (6)

              • 2.2.2.2.1.24 set_default_topic_qos (6)

              • 2.2.2.2.1.25 get_default_topic_qos (6)

              • 2.2.2.2.1.26 get_domain_id (6)

              • 2.2.2.2.1.27 get_discovered_participants (6)

              • 2.2.2.2.1.28 get_discovered_participant_data (6)

              • 2.2.2.2.1.29 get_discovered_topics (6)

              • 2.2.2.2.1.30 get_discovered_topic_data (6)

              • 2.2.2.2.1.31 contains_entity (6)

              • 2.2.2.2.1.32 get_current_time (6)

            • 2.2.2.2.2 DomainParticipantFactory Class (5)

              • 2.2.2.2.2.1 create_participant (6)

              • 2.2.2.2.2.2 delete_participant (6)

              • 2.2.2.2.2.3 get_instance (6)

              • 2.2.2.2.2.4 lookup_participant (6)

              • 2.2.2.2.2.5 set_default_participant_qos (6)

              • 2.2.2.2.2.6 get_default_participant_qos (6)

              • 2.2.2.2.2.7 set_qos (6)

              • 2.2.2.2.2.8 get_qos (6)

            • 2.2.2.2.3 DomainParticipantListener Interface (5)

          • 2.2.2.3 Topic-Definition Module (4)

            • 2.2.2.3.1 TopicDescription Class (5)

              • 2.2.2.3.1.1 get_participant (6)

              • 2.2.2.3.1.2 type_name (6)

              • 2.2.2.3.1.3 name (6)

            • 2.2.2.3.2 Topic Class (5)

              • 2.2.2.3.2.1 get_inconsistent_topic_status (6)

            • 2.2.2.3.3 ContentFilteredTopic Class (5)

              • 2.2.2.3.3.1 get_related_topic (6)

              • 2.2.2.3.3.2 filter_expression (6)

              • 2.2.2.3.3.3 get_expression_parameters (6)

              • 2.2.2.3.3.4 set_expression_parameters (6)

            • 2.2.2.3.4 MultiTopic Class [optional] (5)

              • 2.2.2.3.4.1 subscription_expression (6)

              • 2.2.2.3.4.2 get_expression_parameters (6)

              • 2.2.2.3.4.3 set_expression_parameters (6)

            • 2.2.2.3.5 TopicListener Interface (5)

            • 2.2.2.3.6 TypeSupport Interface (5)

              • 2.2.2.3.6.1 register_type (6)

              • 2.2.2.3.6.2 get_type_name (6)

            • 2.2.2.3.7 Derived Classes for Each Application Class (5)

          • 2.2.2.4 Publication Module (4)

            • 2.2.2.4.1 Publisher Class (5)

              • 2.2.2.4.1.1 set_listener (from Entity) (6)

              • 2.2.2.4.1.2 get_listener (from Entity) (6)

              • 2.2.2.4.1.3 set_qos (from Entity) (6)

              • 2.2.2.4.1.4 get_qos (from Entity) (6)

              • 2.2.2.4.1.5 create_ datawriter (6)

              • 2.2.2.4.1.6 delete_datawriter (6)

              • 2.2.2.4.1.7 lookup_datawriter (6)

              • 2.2.2.4.1.8 suspend_publications (6)

              • 2.2.2.4.1.9 resume_publications (6)

              • 2.2.2.4.1.10 begin_coherent_changes (6)

              • 2.2.2.4.1.11 end_coherent_changes (6)

              • 2.2.2.4.1.12 wait_for_acknowledgments (6)

              • 2.2.2.4.1.13 get_participant (6)

              • 2.2.2.4.1.14 delete_contained_entities (6)

              • 2.2.2.4.1.15 set_default_datawriter_qos (6)

              • 2.2.2.4.1.16 get_default_datawriter_qos (6)

              • 2.2.2.4.1.17 copy_from_topic_qos (6)

            • 2.2.2.4.2 DataWriter Class (5)

              • 2.2.2.4.2.1 set_listener (from Entity) (6)

              • 2.2.2.4.2.2 get_listener (from Entity) (6)

              • 2.2.2.4.2.3 set_qos (from Entity) (6)

              • 2.2.2.4.2.4 get_qos (from Entity) (6)

              • 2.2.2.4.2.5 register_instance (6)

              • 2.2.2.4.2.6 register_instance_w_timestamp (6)

              • 2.2.2.4.2.7 unregister_instance (6)

              • 2.2.2.4.2.8 unregister_instance_w_timestamp (6)

              • 2.2.2.4.2.9 get_key_value (6)

              • 2.2.2.4.2.10 lookup_instance (6)

              • 2.2.2.4.2.11 write (6)

              • 2.2.2.4.2.12 write_w_timestamp (6)

              • 2.2.2.4.2.13 dispose (6)

              • 2.2.2.4.2.14 dispose_w_timestamp (6)

              • 2.2.2.4.2.15 wait_for_acknowledgments (6)

              • 2.2.2.4.2.16 get_liveliness_lost_status (6)

              • 2.2.2.4.2.17 get_offered_deadline_missed_status (6)

              • 2.2.2.4.2.18 get_offered_incompatible_qos_status (6)

              • 2.2.2.4.2.19 get_publication_matched_status (6)

              • 2.2.2.4.2.20 get_topic (6)

              • 2.2.2.4.2.21 get_publisher (6)

              • 2.2.2.4.2.22 assert_liveliness (6)

              • 2.2.2.4.2.23 get_matched_subscription_data (6)

              • 2.2.2.4.2.24 get_matched_subscriptions (6)

            • 2.2.2.4.3 PublisherListener Interface (5)

            • 2.2.2.4.4 DataWriterListener Interface (5)

            • 2.2.2.4.5 Concurrency Behavior (5)

          • 2.2.2.5 Subscription Module (4)

            • 2.2.2.5.1 Access to the data (5)

              • 2.2.2.5.1.1 Interpretation of the SampleInfo (6)

              • 2.2.2.5.1.2 Interpretation of the SampleInfo sample_state (6)

              • 2.2.2.5.1.3 Interpretation of the SampleInfo instance_state (6)

              • 2.2.2.5.1.4 Interpretation of the SampleInfo valid_data (6)

              • 2.2.2.5.1.5 Interpretation of the SampleInfo disposed_generation_count and no_writers_generation_count (6)

              • 2.2.2.5.1.6 Interpretation of the SampleInfo sample_rank, generation_rank, and absolute_generation_rank (6)

              • 2.2.2.5.1.7 Interpretation of the SampleInfo counters and ranks (6)

              • 2.2.2.5.1.8 Interpretation of the SampleInfo view_state (6)

              • 2.2.2.5.1.9 Data access patterns (6)

            • 2.2.2.5.2 Subscriber Class (5)

              • 2.2.2.5.2.1 set_listener (from Entity) (6)

              • 2.2.2.5.2.2 get_listener (from Entity) (6)

              • 2.2.2.5.2.3 set_qos (from Entity) (6)

              • 2.2.2.5.2.4 get_qos (from Entity) (6)

              • 2.2.2.5.2.5 create_datareader (6)

              • 2.2.2.5.2.6 delete_datareader (6)

              • 2.2.2.5.2.7 lookup_datareader (6)

              • 2.2.2.5.2.8 begin_access (6)

              • 2.2.2.5.2.9 end_access (6)

              • 2.2.2.5.2.10 get_datareaders (6)

              • 2.2.2.5.2.11 notify_datareaders (6)

              • 2.2.2.5.2.12 get_sample_lost_status (6)

              • 2.2.2.5.2.13 get_participant (6)

              • 2.2.2.5.2.14 delete_contained_entities (6)

              • 2.2.2.5.2.15 set_default_datareader_qos (6)

              • 2.2.2.5.2.16 get_default_datareader_qos (6)

              • 2.2.2.5.2.17 copy_from_topic_qos (6)

            • 2.2.2.5.3 DataReader Class (5)

              • 2.2.2.5.3.1 set_listener (from Entity) (6)

              • 2.2.2.5.3.2 get_listener (from Entity) (6)

              • 2.2.2.5.3.3 set_qos (from Entity) (6)

              • 2.2.2.5.3.4 get_qos (from Entity) (6)

              • 2.2.2.5.3.5 create_readcondition (6)

              • 2.2.2.5.3.6 create_querycondition (6)

              • 2.2.2.5.3.7 delete_readcondition (6)

              • 2.2.2.5.3.8 read (6)

              • 2.2.2.5.3.9 take (6)

              • 2.2.2.5.3.10 read_w_condition (6)

              • 2.2.2.5.3.11 take_w_condition (6)

              • 2.2.2.5.3.12 read_next_sample (6)

              • 2.2.2.5.3.13 take_next_sample (6)

              • 2.2.2.5.3.14 read_instance (6)

              • 2.2.2.5.3.15 take_instance (6)

              • 2.2.2.5.3.16 read_next_instance (6)

              • 2.2.2.5.3.17 take_next_instance (6)

              • 2.2.2.5.3.18 read_next_instance_w_condition (6)

              • 2.2.2.5.3.19 take_next_instance_w_condition (6)

              • 2.2.2.5.3.20 return_loan (6)

              • 2.2.2.5.3.21 get_liveliness_changed_status (6)

              • 2.2.2.5.3.22 get_requested_deadline_missed_status (6)

              • 2.2.2.5.3.23 get_requested_incompatible_qos_status (6)

              • 2.2.2.5.3.24 get_sample_lost_status (6)

              • 2.2.2.5.3.25 get_sample_rejected_status (6)

              • 2.2.2.5.3.26 get_subscription_matched_status (6)

              • 2.2.2.5.3.27 get_topicdescription (6)

              • 2.2.2.5.3.28 get_subscriber (6)

              • 2.2.2.5.3.29 get_key_value (6)

              • 2.2.2.5.3.30 lookup_instance (6)

              • 2.2.2.5.3.31 delete_contained_entities (6)

              • 2.2.2.5.3.32 wait_for_historical_data (6)

              • 2.2.2.5.3.33 get_matched_publication_data (6)

              • 2.2.2.5.3.34 get_matched_publications (6)

            • 2.2.2.5.4 DataSample Class (5)

            • 2.2.2.5.5 SampleInfo Class (5)

            • 2.2.2.5.6 SubscriberListener Interface (5)

            • 2.2.2.5.7 DataReaderListener Interface (5)

            • 2.2.2.5.8 ReadCondition Class (5)

              • 2.2.2.5.8.1 get_datareader (6)

              • 2.2.2.5.8.2 get_sample_state_mask (6)

              • 2.2.2.5.8.3 get_view_state_mask (6)

              • 2.2.2.5.8.4 get_instance_state_mask (6)

            • 2.2.2.5.9 QueryCondition Class (5)

              • 2.2.2.5.9.1 get_query_expression (6)

              • 2.2.2.5.9.2 get_query_parameters (6)

              • 2.2.2.5.9.3 set_query_parameters (6)

        • 2.2.3 Supported QoS (3)

          • 2.2.3.1 USER_DATA (4)

          • 2.2.3.2 TOPIC_DATA (4)

          • 2.2.3.3 GROUP_DATA (4)

          • 2.2.3.4 DURABILITY (4)

          • 2.2.3.5 DURABILITY_SERVICE (4)

          • 2.2.3.6 PRESENTATION (4)

          • 2.2.3.7 DEADLINE (4)

          • 2.2.3.8 LATENCY_BUDGET (4)

          • 2.2.3.9 OWNERSHIP (4)

            • 2.2.3.9.1 SHARED kind (5)

            • 2.2.3.9.2 EXCLUSIVE kind (5)

          • 2.2.3.10 OWNERSHIP_STRENGTH (4)

          • 2.2.3.11 LIVELINESS (4)

          • 2.2.3.12 TIME_BASED_FILTER (4)

          • 2.2.3.13 PARTITION (4)

          • 2.2.3.14 RELIABILITY (4)

          • 2.2.3.15 TRANSPORT_PRIORITY (4)

          • 2.2.3.16 LIFESPAN (4)

          • 2.2.3.17 DESTINATION_ORDER (4)

          • 2.2.3.18 HISTORY (4)

          • 2.2.3.19 RESOURCE_LIMITS (4)

          • 2.2.3.20 ENTITY_FACTORY (4)

          • 2.2.3.21 WRITER_DATA_LIFECYCLE (4)

          • 2.2.3.22 READER_DATA_LIFECYCLE (4)

          • 2.2.3.23 Relationship between registration, LIVELINESS, and OWNERSHIP (4)

            • 2.2.3.23.1 Ownership resolution on redundant systems (5)

              • 2.2.3.23.1.1 Case where the data is periodically updated (6)

              • 2.2.3.23.1.2 Case where data is not periodically updated (6)

            • 2.2.3.23.2 Detection of loss in topological connectivity (5)

            • 2.2.3.23.3 Semantic difference between unregister_instance and dispose (5)

        • 2.2.4 Listeners, Conditions, and Wait-sets (3)

          • 2.2.4.1 Communication Status (4)

          • 2.2.4.2 Changes in Status (4)

            • 2.2.4.2.1 Changes in Plain Communication Status (5)

            • 2.2.4.2.2 Changes in Read Communication Statuses (5)

          • 2.2.4.3 Access through Listeners (4)

            • 2.2.4.3.1 Listener Access to Plain Communication Status (5)

            • 2.2.4.3.2 Listener access to Read Communication Status (5)

          • 2.2.4.4 Conditions and Wait-sets (4)

            • 2.2.4.4.1 Trigger State of the StatusCondition (5)

          • 2.2.4.5 Trigger State of the ReadCondition (4)

            • 2.2.4.5.1 Trigger State of the GuardCondition (5)

          • 2.2.4.6 Combination (4)

        • 2.2.5 Built-in Topics (3)

        • 2.2.6 Interaction Model (3)

          • 2.2.6.1 Publication View (4)

          • 2.2.6.2 Subscription View (4)

            • 2.2.6.2.1 Notification via Listeners (5)

            • 2.2.6.2.2 Notifications via Conditions and Wait-Sets (5)

      • 2.3 OMG IDL Platform Specific Model (PSM) (2)

        • 2.3.1 Introduction (3)

        • 2.3.2 PIM to PSM Mapping Rules (3)

        • 2.3.3 DCPS PSM : IDL (3)

    • Annex A - Compliance Points (1)

    • Annex B - Syntax for Queries and Filters (1)

      • B.1 Introduction (2)

      • B.2 SQL grammar in BNF (2)

        • Token expression (3)

        • Examples (3)

  • RTPS 2.3 (rtps)

    • The Real-time Publish-Subscribe (1)

    • OMG’s Issue Reporting Procedure (1)

    • Table of Contents (1)

    • Preface (1)

    • About the Object Management Group (1)

      • OMG (2)

      • OMG Specifications (2)

      • Typographical Conventions (2)

      • Issues (2)

    • 1 Scope (1)

    • 2 Conformance (1)

    • 3 Normative References (1)

    • 4 Terms and Definitions (1)

    • 5 Symbols (1)

    • 6 Additional Information (1)

      • 6.1 Changes to Adopted OMG Specifications (2)

      • 6.2 How to Read this Specification (2)

      • 6.3 Acknowledgments (2)

      • 6.4 Statement of Proof of Concept (2)

    • 7 Overview (1)

      • 7.1 Introduction (2)

      • 7.2 Requirements for a DDS Wire-protocol (2)

      • 7.3 The RTPS Wire-protocol (2)

      • 7.4 The RTPS Platform Independent Model (PIM) (2)

        • 7.4.1 The Structure Module (3)

        • 7.4.2 The Messages Module (3)

        • 7.4.3 The Behavior Module (3)

        • 7.4.4 The Discovery Module (3)

      • 7.5 The RTPS Platform Specific Model (PSM) (2)

      • 7.6 The RTPS Transport Model (2)

    • 8 Platform Independent Model (PIM) (1)

      • 8.1 Introduction (2)

      • 8.2 Structure Module (2)

        • 8.2.1 Overview (3)

          • 8.2.1.1 Summary of the classes used by the RTPS virtual machine (4)

          • 8.2.1.2 Summary of the types used to describe RTPS Entities and Classes (4)

          • 8.2.1.3 Configuration attributes of the RTPS Entities (4)

        • 8.2.2 The RTPS HistoryCache (3)

          • 8.2.2.1 new (4)

          • 8.2.2.2 add_change (4)

          • 8.2.2.3 remove_change (4)

          • 8.2.2.4 get_seq_num_min (4)

          • 8.2.2.5 get_seq_num_max (4)

        • 8.2.3 The RTPS CacheChange (3)

        • 8.2.4 The RTPS Entity (3)

          • 8.2.4.1 Identifying RTPS entities: The GUID (4)

          • 8.2.4.2 The GUIDs of RTPS Participants (4)

          • 8.2.4.3 The GUIDs of the RTPS Endpoints within a Participant (4)

          • 8.2.4.4 The GUIDs of Endpoint Groups within a Participant (4)

        • 8.2.5 The RTPS Participant (3)

        • 8.2.6 The RTPS Endpoint (3)

        • 8.2.7 The RTPS Writer (3)

        • 8.2.8 The RTPS Reader (3)

        • 8.2.9 Relation to DDS Entities (3)

          • 8.2.9.1 The DDS DataWriter (4)

            • 8.2.9.1.1 Transition T1 (5)

            • 8.2.9.1.2 Transition T2 (5)

            • 8.2.9.1.3 Transition T3 (5)

            • 8.2.9.1.4 Transition T4 (5)

            • 8.2.9.1.5 Transition T5 (5)

          • 8.2.9.2 The DDS DataReader (4)

            • 8.2.9.2.1 Transition T1 (5)

            • 8.2.9.2.2 Transition T2 (5)

            • 8.2.9.2.3 Transition T3 (5)

            • 8.2.9.2.4 Transition T4 (5)

      • 8.3 Messages Module (2)

        • 8.3.1 Overview (3)

        • 8.3.2 Type Definitions (3)

        • 8.3.3 The Overall Structure of an RTPS Message (3)

          • 8.3.3.1 Header structure (4)

            • 8.3.3.1.1 protocol (5)

            • 8.3.3.1.2 version (5)

            • 8.3.3.1.3 vendorId (5)

            • 8.3.3.1.4 guidPrefix (5)

          • 8.3.3.2 Submessage structure (4)

            • 8.3.3.2.1 SubmessageId (5)

            • 8.3.3.2.2 flags (5)

            • 8.3.3.2.3 submessageLength (5)

        • 8.3.4 The RTPS Message Receiver (3)

          • 8.3.4.1 Rules Followed by the Message Receiver (4)

        • 8.3.5 RTPS SubmessageElements (3)

          • 8.3.5.1 The GuidPrefix, and EntityId (4)

          • 8.3.5.2 VendorId (4)

          • 8.3.5.3 ProtocolVersion (4)

          • 8.3.5.4 SequenceNumber (4)

          • 8.3.5.5 SequenceNumberSet (4)

          • 8.3.5.6 FragmentNumber (4)

          • 8.3.5.7 FragmentNumberSet (4)

          • 8.3.5.8 Timestamp (4)

          • 8.3.5.9 ParameterList (4)

          • 8.3.5.10 Count (4)

          • 8.3.5.11 LocatorList (4)

          • 8.3.5.12 SerializedData (4)

          • 8.3.5.13 SerializedDataFragment (4)

          • 8.3.5.14 GroupDigest (4)

        • 8.3.6 The RTPS Header (3)

          • 8.3.6.1 Purpose (4)

          • 8.3.6.2 Content (4)

          • 8.3.6.3 Validity (4)

          • 8.3.6.4 Change in state of Receiver (4)

          • 8.3.6.5 Logical Interpretation (4)

        • 8.3.7 RTPS Submessages (3)

          • 8.3.7.1 AckNack (4)

            • 8.3.7.1.1 Purpose (5)

            • 8.3.7.1.2 Content (5)

            • 8.3.7.1.3 Validity (5)

            • 8.3.7.1.4 Change in state of Receiver (5)

            • 8.3.7.1.5 Logical Interpretation (5)

          • 8.3.7.2 Data (4)

            • 8.3.7.2.1 Purpose (5)

            • 8.3.7.2.2 Contents (5)

            • 8.3.7.2.3 Validity (5)

            • 8.3.7.2.4 Change in state of Receiver (5)

            • 8.3.7.2.5 Logical Interpretation (5)

          • 8.3.7.3 DataFrag (4)

            • 8.3.7.3.1 Purpose (5)

            • 8.3.7.3.2 Contents (5)

            • 8.3.7.3.3 Validity (5)

            • 8.3.7.3.4 Change in state of Receiver (5)

            • 8.3.7.3.5 Logical Interpretation (5)

          • 8.3.7.4 Gap (4)

            • 8.3.7.4.1 Purpose (5)

            • 8.3.7.4.2 Content (5)

            • 8.3.7.4.3 Validity (5)

            • 8.3.7.4.4 Change in state of Receiver (5)

            • 8.3.7.4.5 Logical Interpretation (5)

          • 8.3.7.5 Heartbeat (4)

            • 8.3.7.5.1 Purpose (5)

            • 8.3.7.5.2 Content (5)

            • 8.3.7.5.3 Validity (5)

            • 8.3.7.5.4 Change in state of Receiver (5)

            • 8.3.7.5.5 Logical Interpretation (5)

          • 8.3.7.6 HeartbeatFrag (4)

            • 8.3.7.6.1 Purpose (5)

            • 8.3.7.6.2 Content (5)

            • 8.3.7.6.3 Validity (5)

            • 8.3.7.6.4 Change in state of Receiver (5)

            • 8.3.7.6.5 Logical Interpretation (5)

          • 8.3.7.7 InfoDestination (4)

            • 8.3.7.7.1 Purpose (5)

            • 8.3.7.7.2 Content (5)

            • 8.3.7.7.3 Validity (5)

            • 8.3.7.7.4 Change in state of Receiver (5)

            • 8.3.7.7.5 Logical Interpretation (5)

          • 8.3.7.8 InfoReply (4)

            • 8.3.7.8.1 Purpose (5)

            • 8.3.7.8.2 Content (5)

            • 8.3.7.8.3 Validity (5)

            • 8.3.7.8.4 Change in state of Receiver (5)

            • 8.3.7.8.5 Logical Interpretation (5)

          • 8.3.7.9 InfoSource (4)

            • 8.3.7.9.1 Purpose (5)

            • 8.3.7.9.2 Content (5)

            • 8.3.7.9.3 Validity (5)

            • 8.3.7.9.4 Change in state of Receiver (5)

            • 8.3.7.9.5 Logical Interpretation (5)

          • 8.3.7.10 InfoTimestamp (4)

            • 8.3.7.10.1 Purpose (5)

            • 8.3.7.10.2 Content (5)

            • 8.3.7.10.3 Validity (5)

            • 8.3.7.10.4 Change in state of Receiver (5)

            • 8.3.7.10.5 Logical Interpretation (5)

          • 8.3.7.11 NackFrag (4)

            • 8.3.7.11.1 Purpose (5)

            • 8.3.7.11.2 Content (5)

            • 8.3.7.11.3 Validity (5)

            • 8.3.7.11.4 Change in state of Receiver (5)

            • 8.3.7.11.5 Logical Interpretation (5)

          • 8.3.7.12 Pad (4)

            • 8.3.7.12.1 Purpose (5)

            • 8.3.7.12.2 Content (5)

            • 8.3.7.12.3 Validity (5)

            • 8.3.7.12.4 Change in state of Receiver (5)

            • 8.3.7.12.5 Logical Interpretation (5)

      • 8.4 Behavior Module (2)

        • 8.4.1 Overview (3)

          • 8.4.1.1 Example Behavior (4)

        • 8.4.2 Behavior Required for Interoperability (3)

          • 8.4.2.1 General Requirements (4)

            • 8.4.2.1.1 All communications must take place using RTPS Messages (5)

            • 8.4.2.1.2 All implementations must implement the RTPS Message Receiver (5)

            • 8.4.2.1.3 The timing characteristics of all implementations must be tunable (5)

            • 8.4.2.1.4 Implementations must implement the Simple Participant and Endpoint Discovery Protocols (5)

          • 8.4.2.2 Required RTPS Writer Behavior (4)

            • 8.4.2.2.1 Writers must not send data out-of-order (5)

            • 8.4.2.2.2 Writers must include in-line QoS values if requested by a Reader (5)

            • 8.4.2.2.3 Writers must send periodic HEARTBEAT Messages (reliable only) (5)

            • 8.4.2.2.4 Writers must eventually respond to a negative acknowledgment (reliable only) (5)

            • 8.4.2.2.5 Sending Heartbeats and Gaps with Writer Group Information (5)

          • 8.4.2.3 Required RTPS Reader Behavior (4)

            • 8.4.2.3.1 Readers must respond eventually after receiving a HEARTBEAT with final flag not set (5)

            • 8.4.2.3.2 Readers must respond eventually after receiving a HEARTBEAT that indicates a sample is missing (5)

            • 8.4.2.3.3 Once acknowledged, always acknowledged (5)

            • 8.4.2.3.4 Readers can only send an ACKNACK Message in response to a HEARTBEAT Message (5)

        • 8.4.3 Implementing the RTPS Protocol (3)

        • 8.4.4 The Behavior of a Writer with respect to each matched Reader (3)

        • 8.4.5 Notational Conventions (3)

        • 8.4.6 Type Definitions (3)

        • 8.4.7 RTPS Writer Reference Implementations (3)

          • 8.4.7.1 RTPS Writer (4)

            • 8.4.7.1.1 Default Timing-Related Values (5)

            • 8.4.7.1.2 new (5)

            • 8.4.7.1.3 new_change (5)

          • 8.4.7.2 RTPS StatelessWriter (4)

            • 8.4.7.2.1 new (5)

            • 8.4.7.2.2 reader_locator_add (5)

            • 8.4.7.2.3 reader_locator_remove (5)

            • 8.4.7.2.4 unsent_changes_reset (5)

          • 8.4.7.3 RTPS ReaderLocator (4)

            • 8.4.7.3.1 new (5)

            • 8.4.7.3.2 next_requested_change (5)

            • 8.4.7.3.3 next_unsent_change (5)

            • 8.4.7.3.4 requested_changes (5)

            • 8.4.7.3.5 requested_changes_set (5)

            • 8.4.7.3.6 unsent_changes (5)

          • 8.4.7.4 RTPS StatefulWriter (4)

            • 8.4.7.4.1 new (5)

            • 8.4.7.4.2 is_acked_by_all (5)

            • 8.4.7.4.3 matched_reader_add (5)

            • 8.4.7.4.4 matched_reader_remove (5)

            • 8.4.7.4.5 matched_reader_lookup (5)

          • 8.4.7.5 RTPS ReaderProxy (4)

            • 8.4.7.5.1 new (5)

            • 8.4.7.5.2 acked_changes_set (5)

            • 8.4.7.5.3 next_requested_change (5)

            • 8.4.7.5.4 next_unsent_change (5)

            • 8.4.7.5.5 requested_changes (5)

            • 8.4.7.5.6 requested_changes_set (5)

            • 8.4.7.5.7 unsent_changes (5)

            • 8.4.7.5.8 unacked_changes (5)

          • 8.4.7.6 RTPS ChangeForReader (4)

        • 8.4.8 RTPS StatelessWriter Behavior (3)

          • 8.4.8.1 Best-Effort StatelessWriter Behavior (4)

            • 8.4.8.1.1 Transition T1 (5)

            • 8.4.8.1.2 Transition T2 (5)

            • 8.4.8.1.3 Transition T3 (5)

            • 8.4.8.1.4 Transition T4 (5)

            • 8.4.8.1.5 Transition T5 (5)

          • 8.4.8.2 Reliable StatelessWriter Behavior (4)

            • 8.4.8.2.1 Transition T1 (5)

            • 8.4.8.2.2 Transition T2 (5)

            • 8.4.8.2.3 Transition T3 (5)

            • 8.4.8.2.4 Transition T4 (5)

            • 8.4.8.2.5 Transition T5 (5)

            • 8.4.8.2.6 Transition T6 (5)

            • 8.4.8.2.7 Transition T7 (5)

            • 8.4.8.2.8 Transition T8 (5)

            • 8.4.8.2.9 Transition T9 (5)

            • 8.4.8.2.10 Transition T10 (5)

            • 8.4.8.2.11 Transition T11 (5)

            • 8.4.8.2.12 Transition T12 (5)

        • 8.4.9 RTPS StatefulWriter Behavior (3)

          • 8.4.9.1 Best-Effort StatefulWriter Behavior (4)

            • 8.4.9.1.1 Transition T1 (5)

            • 8.4.9.1.2 Transition T2 (5)

            • 8.4.9.1.3 Transition T3 (5)

            • 8.4.9.1.4 Transition T4 (5)

            • 8.4.9.1.5 Transition T5 (5)

            • 8.4.9.1.6 Transition T6 (5)

          • 8.4.9.2 Reliable StatefulWriter Behavior (4)

            • 8.4.9.2.1 Transition T1 (5)

            • 8.4.9.2.2 Transition T2 (5)

            • 8.4.9.2.3 Transition T3 (5)

            • 8.4.9.2.4 Transition T4 (5)

            • 8.4.9.2.5 Transition T5 (5)

            • 8.4.9.2.6 Transition T6 (5)

            • 8.4.9.2.7 Transition T7 (5)

            • 8.4.9.2.8 Transition T8 (5)

            • 8.4.9.2.9 Transition T9 (5)

            • 8.4.9.2.10 Transition T10 (5)

            • 8.4.9.2.11 Transition T11 (5)

            • 8.4.9.2.12 Transition T12 (5)

            • 8.4.9.2.13 Transition T13 (5)

            • 8.4.9.2.14 Transition T14 (5)

            • 8.4.9.2.15 Transition T15 (5)

            • 8.4.9.2.16 Transition T16 (5)

          • 8.4.9.3 ChangeForReader illustrated (4)

        • 8.4.10 RTPS Reader Reference Implementations (3)

          • 8.4.10.1 RTPS Reader (4)

            • 8.4.10.1.1 Default Timing-Related Values (5)

            • 8.4.10.1.2 new (5)

          • 8.4.10.2 RTPS StatelessReader (4)

            • 8.4.10.2.1 new (5)

          • 8.4.10.3 RTPS StatefulReader (4)

            • 8.4.10.3.1 new (5)

            • 8.4.10.3.2 matched_writer_add (5)

            • 8.4.10.3.3 matched_writer_remove (5)

            • 8.4.10.3.4 matched_writer_lookup (5)

          • 8.4.10.4 RTPS WriterProxy (4)

            • 8.4.10.4.1 new (5)

            • 8.4.10.4.2 available_changes_max (5)

            • 8.4.10.4.3 irrelevant_change_set (5)

            • 8.4.10.4.4 lost_changes_update (5)

            • 8.4.10.4.5 missing_changes (5)

            • 8.4.10.4.6 missing_changes_update (5)

            • 8.4.10.4.7 received_change_set (5)

          • 8.4.10.5 RTPS ChangeFromWriter (4)

        • 8.4.11 RTPS StatelessReader Behavior (3)

          • 8.4.11.1 Best-Effort StatelessReader Behavior (4)

            • 8.4.11.1.1 Transition T1 (5)

            • 8.4.11.1.2 Transition T2 (5)

            • 8.4.11.1.3 Transition T3 (5)

          • 8.4.11.2 Reliable StatelessReader Behavior (4)

        • 8.4.12 RTPS StatefulReader Behavior (3)

          • 8.4.12.1 Best-Effort StatefulReader Behavior (4)

            • 8.4.12.1.1 Transition T1 (5)

            • 8.4.12.1.2 Transition T2 (5)

            • 8.4.12.1.3 Transition T3 (5)

            • 8.4.12.1.4 Transition T4 (5)

          • 8.4.12.2 Reliable StatefulReader Behavior (4)

            • 8.4.12.2.1 Transition T1 (5)

            • 8.4.12.2.2 Transition T2 (5)

            • 8.4.12.2.3 Transition T3 (5)

            • 8.4.12.2.4 Transition T4 (5)

            • 8.4.12.2.5 Transition T5 (5)

            • 8.4.12.2.6 Transition T6 (5)

            • 8.4.12.2.7 Transition T7 (5)

            • 8.4.12.2.8 Transition T8 (5)

            • 8.4.12.2.9 Transition T9 (5)

            • 8.4.12.2.10 Transition T10 (5)

          • 8.4.12.3 ChangeFromWriter illustrated (4)

        • 8.4.13 Writer Liveliness Protocol (3)

          • 8.4.13.1 General Approach (4)

          • 8.4.13.2 Built-in Endpoints Required by the Writer Liveliness Protocol (4)

          • 8.4.13.3 BuiltinParticipantMessageWriter and BuiltinParticipantMessageReader QoS (4)

          • 8.4.13.4 Data Types Associated with Built-in Endpoints used by Writer Liveliness Protocol (4)

          • 8.4.13.5 Implementing Writer Liveliness Protocol Using the BuiltinParticipantMessageWriter and Builtin- ParticipantMessageReader (4)

        • 8.4.14 Optional Behavior (3)

          • 8.4.14.1 Large Data (4)

            • 8.4.14.1.1 How to select the fragment size (5)

            • 8.4.14.1.2 How to send fragments (5)

            • 8.4.14.1.3 How to re-assemble fragments (5)

            • 8.4.14.1.4 Reliable Communication (5)

        • 8.4.15 Implementation Guidelines (3)

          • 8.4.15.1 Implementation of ReaderProxy and WriterProxy (4)

          • 8.4.15.2 Efficient use of Gap and AckNack Submessages (4)

          • 8.4.15.3 Coalescing multiple Data Submessages (4)

          • 8.4.15.4 Piggybacking HeartBeat Submessages (4)

          • 8.4.15.5 Sending to unknown readerId (4)

          • 8.4.15.6 Reclaiming Finite Resources from Unresponsive Readers (4)

          • 8.4.15.7 Setting Count in Heartbeat, HeartbeatFrag, AckNack, and NackFrag submessages (4)

      • 8.5 Discovery Module (2)

        • 8.5.1 Overview (3)

        • 8.5.2 RTPS Built-in Discovery Endpoints (3)

        • 8.5.3 The Simple Participant Discovery Protocol (3)

          • 8.5.3.1 General Approach (4)

          • 8.5.3.2 SPDPdiscoveredParticipantData (4)

          • 8.5.3.3 The built-in Endpoints used by the Simple Participant Discovery Protocol (4)

            • 8.5.3.3.1 SPDPbuiltinParticipantWriter (5)

            • 8.5.3.3.2 SPDPbuiltinParticipantReader (5)

          • 8.5.3.4 Logical ports used by the Simple Participant Discovery Protocol (4)

        • 8.5.4 The Simple Endpoint Discovery Protocol (3)

          • 8.5.4.1 General Approach (4)

          • 8.5.4.2 The built-in Endpoints used by the Simple Endpoint Discovery Protocol (4)

          • 8.5.4.3 Built-in Endpoints required by the Simple Endpoint Discovery Protocol (4)

          • 8.5.4.4 Data Types associated with built-in Endpoints used by the Simple Endpoint Discovery Protocol (4)

            • 8.5.4.4.1 SEDPbuiltinPublicationsWriter and SEDPbuiltinPublicationsReader (5)

            • 8.5.4.4.2 SEDPbuiltinSubscriptionsWriter and SEDPbuiltinSubscriptionsReader (5)

            • 8.5.4.4.3 SEDPbuiltinTopicsWriter and SEDPbuiltinTopicsReader (5)

        • 8.5.5 Interaction with the RTPS virtual machine (3)

          • 8.5.5.1 Discovery of a new remote Participant (4)

          • 8.5.5.2 Removal of a previously discovered Participant (4)

        • 8.5.6 Supporting Alternative Discovery Protocols (3)

      • 8.6 Versioning and Extensibility (2)

        • 8.6.1 Allowed Extensions within this major Version (3)

        • 8.6.2 What cannot change within this major Version (3)

      • 8.7 Implementing DDS QoS and advanced DDS features using RTPS (2)

        • 8.7.1 Adding in-line Parameters to Data Submessages (3)

        • 8.7.2 DDS QoS Parameters (3)

          • 8.7.2.1 In-line DDS QoS Parameters (4)

          • 8.7.2.2 DDS QoS Parameters that affect the wire protocol (4)

            • 8.7.2.2.1 DURABILITY (5)

            • 8.7.2.2.2 PRESENTATION (5)

            • 8.7.2.2.3 LIVELINESS (5)

            • 8.7.2.2.4 TIME_BASED_FILTER (5)

            • 8.7.2.2.5 RELIABILITY (5)

            • 8.7.2.2.6 DESTINATION_ORDER (5)

            • 8.7.2.2.7 WRITER_DATA_LIFECYCLE (5)

        • 8.7.3 Content-filtered Topics (3)

          • 8.7.3.1 Exchanging filter information using the built-in Endpoints (4)

          • 8.7.3.2 Indicating to a Reader that a Sample has been filtered (4)

          • 8.7.3.3 Including in-line filter results with each data sample (4)

          • 8.7.3.4 Requirements for Interoperability (4)

        • 8.7.4 Changes in the Instance State (3)

        • 8.7.5 Group Ordered Access (3)

        • 8.7.6 Coherent Sets (3)

        • 8.7.7 Directed Write (3)

        • 8.7.8 Property Lists (3)

        • 8.7.9 Original Writer Info (3)

        • 8.7.10 Key Hash (3)

    • 9 Platform Specific Model (PSM): UDP/IP (1)

      • 9.1 Introduction (2)

      • 9.2 Notational Conventions (2)

        • 9.2.1 Name Space (3)

        • 9.2.2 IDL Representation of Structures and CDR Wire Representation (3)

        • 9.2.3 Representation of Bits and Bytes (3)

      • 9.3 Mapping of the RTPS Types (2)

        • 9.3.1 The Globally Unique Identifier (GUID) (3)

          • 9.3.1.1 Mapping of the GuidPrefix_t (4)

          • 9.3.1.2 Mapping of the EntityId_t (4)

          • 9.3.1.3 Predefined EntityIds (4)

            • 9.3.1.3.1 EntityIds Reserved by other Specifications (5)

          • 9.3.1.4 Deprecated EntityIds in version 2.2 of the Protocol (4)

          • 9.3.1.5 Mapping of the GUID_t (4)

        • 9.3.2 Mapping of the Types that Appear Within Submessages or Built-in Topic Data (3)

          • 9.3.2.1 Time_t (4)

          • 9.3.2.2 Duration_t (4)

          • 9.3.2.3 Locator_t (4)

          • 9.3.2.4 GroupDigest_t (4)

      • 9.4 Mapping of the RTPS Messages (2)

        • 9.4.1 Overall Structure (3)

        • 9.4.2 Mapping of the PIM SubmessageElements (3)

          • 9.4.2.1 EntityId (4)

          • 9.4.2.2 GuidPrefix (4)

          • 9.4.2.3 VendorId (4)

          • 9.4.2.4 ProtocolVersion (4)

          • 9.4.2.5 SequenceNumber (4)

          • 9.4.2.6 SequenceNumberSet (4)

          • 9.4.2.7 FragmentNumber (4)

          • 9.4.2.8 FragmentNumberSet (4)

          • 9.4.2.9 Timestamp (4)

          • 9.4.2.10 LocatorList (4)

          • 9.4.2.11 ParameterList (4)

          • 9.4.2.12 SerializedPayload (4)

          • 9.4.2.13 Count (4)

          • 9.4.2.14 GroupDigest (4)

        • 9.4.3 Additional SubmessageElements (3)

          • 9.4.3.1 LocatorUDPv4 (4)

        • 9.4.4 Mapping of the RTPS Header (3)

        • 9.4.5 Mapping of the RTPS Submessages (3)

          • 9.4.5.1 Submessage Header (4)

            • 9.4.5.1.1 SubmessageId (5)

              • 9.4.5.1.1.1 Submessage Ranges Reserved by other Specifications (6)

            • 9.4.5.1.2 flags (5)

            • 9.4.5.1.3 octetsToNextHeader (5)

          • 9.4.5.2 AckNack Submessage (4)

            • 9.4.5.2.1 Flags in the Submessage Header (5)

          • 9.4.5.3 Data Submessage (4)

            • 9.4.5.3.1 Flags in the Submessage Header (5)

            • 9.4.5.3.2 extraFlags (5)

            • 9.4.5.3.3 octetsToInlineQos (5)

          • 9.4.5.4 DataFrag Submessage (4)

            • 9.4.5.4.1 Flags in the Submessage Header (5)

          • 9.4.5.5 Gap Submessage (4)

            • 9.4.5.5.1 Flags in the Submessage Header (5)

          • 9.4.5.6 HeartBeat Submessage (4)

            • 9.4.5.6.1 Flags in the Submessage Header (5)

          • 9.4.5.7 HeartBeatFrag Submessage (4)

            • 9.4.5.7.1 Flags in the Submessage Header (5)

          • 9.4.5.8 InfoDestination Submessage (4)

            • 9.4.5.8.1 Flags in the Submessage Header (5)

          • 9.4.5.9 InfoReply Submessage (4)

            • 9.4.5.9.1 Flags in the Submessage Header (5)

          • 9.4.5.10 InfoSource Submessage (4)

            • 9.4.5.10.1 Flags in the Submessage Header (5)

          • 9.4.5.11 InfoTimestamp Submessage (4)

            • 9.4.5.11.1 Flags in the Submessage Header (5)

          • 9.4.5.12 Pad Submessage (4)

            • 9.4.5.12.1 Flags in the Submessage Header (5)

          • 9.4.5.13 NackFrag Submessage (4)

            • 9.4.5.13.1 Flags in the Submessage Header (5)

          • 9.4.5.14 InfoReplyIp4 Submessage (PSM specific) (4)

            • 9.4.5.14.1 Flags in the Submessage Header (5)

      • 9.5 Mapping to UDP/IP Transport Messages (2)

      • 9.6 Mapping of the RTPS Protocol (2)

        • 9.6.1 Default Locators (3)

          • 9.6.1.1 Discovery traffic (4)

          • 9.6.1.2 User traffic (4)

          • 9.6.1.3 Default Port Numbers (4)

          • 9.6.1.4 Default Settings for the Simple Participant Discovery Protocol (4)

            • 9.6.1.4.1 Default multicast address (5)

            • 9.6.1.4.2 Default announcement rate (5)

        • 9.6.2 Data representation for the built-in Endpoints (3)

          • 9.6.2.1 Data Representation for the ParticipantMessageData Built-in Endpoints (4)

          • 9.6.2.2 Simple Discovery Protocol built-in Endpoints (4)

            • 9.6.2.2.1 ParameterId space (5)

            • 9.6.2.2.2 ParameterID values (5)

        • 9.6.3 ParameterId Definitions used to Represent In-line QoS (3)

          • 9.6.3.1 Content filter info (PID_CONTENT_FILTER_INFO) (4)

          • 9.6.3.2 Coherent set (PID_COHERENT_SET) (4)

          • 9.6.3.3 Group Coherent Set (PID_GROUP_COHERENT_SET) (4)

          • 9.6.3.4 Group Sequence Number (PID_GROUP_SEQ_NUM) (4)

          • 9.6.3.5 Publisher Writer Info (PID_WRITER_GROUP_INFO) (4)

          • 9.6.3.6 Secure Publisher Writer Info (PID_SECURE_WRITER_GROUP_INFO) (4)

          • 9.6.3.7 Original Writer Info (PID_ORIGINAL_WRITER_INFO) (4)

          • 9.6.3.8 KeyHash (PID_KEY_HASH) (4)

          • 9.6.3.9 StatusInfo_t (PID_STATUS_INFO) (4)

        • 9.6.4 ParameterIds Deprecated by the Protocol (3)

    • 10 Serialized Payload Representation (1)

      • 10.1 Introduction (2)

      • 10.2 SerializedPayloadHeader and Representation Identifier (2)

      • 10.3 SerializedPayload for RTPS discovery built-in endpoints (2)

      • 10.4 SerializedPayload for other RTPS built-in endpoints (2)

      • 10.5 SerializedPayload for user-defined DDS Topics (2)

      • 10.6 Example for Built-in Endpoint Data (2)

      • 10.7 Example for User-defined Topic Data (2)

    • A References (1)

  • DDS Security 1.1 (sec)

    • Preface (1)

    • 1 Scope (1)

      • 1.1 General (2)

      • 1.2 Overview of this Specification (2)

    • 2 Conformance (1)

      • 2.1 Conformance points (2)

      • 2.2 Builtin plugin interoperability (mandatory) (2)

      • 2.3 Plugin framework (mandatory) (2)

      • 2.4 Plugin Language APIs (optional) (2)

      • 2.5 Logging and Tagging profile (optional) (2)

    • 3 Normative References (1)

    • 4 Terms and Definitions (1)

    • 5 Symbols (1)

    • 6 Additional Information (1)

      • 6.1 Changes to Adopted OMG Specifications (2)

      • 6.2 Acknowledgments (2)

    • 7 Support for DDS Security (1)

      • 7.1 Security Model (2)

        • 7.1.1 Threats (3)

          • 7.1.1.1 Unauthorized Subscription (4)

          • 7.1.1.2 Unauthorized Publication (4)

          • 7.1.1.3 Tampering and Replay (4)

          • 7.1.1.4 Unauthorized Access to Data by Infrastructure Services (4)

      • 7.2 Types used by DDS Security (2)

        • 7.2.1 Property_t (3)

          • 7.2.1.1 IDL Representation for Property_t (4)

        • 7.2.2 BinaryProperty_t (3)

          • 7.2.2.1 IDL Representation for BinaryProperty_t (4)

        • 7.2.3 DataHolder (3)

          • 7.2.3.1 IDL representation for DataHolder (4)

        • 7.2.4 Token (3)

          • 7.2.4.1 Attribute: class_id (4)

          • 7.2.4.2 IDL Representation for Token and Specialized Classes (4)

          • 7.2.4.3 TokenNIL (4)

        • 7.2.5 PropertyQosPolicy, DomainParticipantQos, DataWriterQos, and DataReaderQos (3)

        • 7.2.6 ParticipantGenericMessage (3)

        • 7.2.7 ParticipantSecurityInfo (3)

        • 7.2.8 EndpointSecurityInfo (3)

        • 7.2.9 Additional DDS Return Code: NOT_ALLOWED_BY_SECURITY (3)

      • 7.3 Securing DDS Messages on the Wire (2)

        • 7.3.1 RTPS Background (Non-Normative) (3)

        • 7.3.2 Secure RTPS Messages (3)

        • 7.3.3 Constraints of the DomainParticipant GUID_t (GUID) (3)

        • 7.3.4 Mandatory use of the KeyHash for encrypted messages (3)

        • 7.3.5 Immutability of Publisher Partition Qos in combination with non-volatile Durability kind (3)

        • 7.3.6 Platform Independent Description (3)

          • 7.3.6.1 Change to the RTPS minor version number (4)

          • 7.3.6.2 RTPS Secure Submessage Elements (4)

            • 7.3.6.2.1 CryptoTransformIdentifier (5)

            • 7.3.6.2.2 CryptoContent (5)

            • 7.3.6.2.3 CryptoHeader (5)

            • 7.3.6.2.4 CryptoFooter (5)

          • 7.3.6.3 RTPS Submessage: SecureBodySubMsg (4)

            • 7.3.6.3.1 Purpose (5)

            • 7.3.6.3.2 Content (5)

            • 7.3.6.3.3 Validity (5)

            • 7.3.6.3.4 Logical Interpretation (5)

          • 7.3.6.4 RTPS Submessage: SecurePrefixSubMsg (4)

            • 7.3.6.4.1 Purpose (5)

            • 7.3.6.4.2 Content (5)

            • 7.3.6.4.3 Validity (5)

            • 7.3.6.4.4 Logical Interpretation (5)

          • 7.3.6.5 RTPS Submessage: SecurePostfixSubMsg (4)

            • 7.3.6.5.1 Purpose (5)

            • 7.3.6.5.2 Content (5)

            • 7.3.6.5.3 Validity (5)

            • 7.3.6.5.4 Logical Interpretation (5)

          • 7.3.6.6 RTPS Submessage: SecureRTPSPrefixSubMsg (4)

            • 7.3.6.6.1 Purpose (5)

            • 7.3.6.6.2 Content (5)

            • 7.3.6.6.3 Validity (5)

            • 7.3.6.6.4 Logical Interpretation (5)

          • 7.3.6.7 RTPS Submessage: SecureRTPSPostfixSubMsg (4)

            • 7.3.6.7.1 Purpose (5)

            • 7.3.6.7.2 Content (5)

            • 7.3.6.7.3 Validity (5)

            • 7.3.6.7.4 Logical Interpretation (5)

        • 7.3.7 Mapping to UDP/IP PSM (3)

          • 7.3.7.1 Mapping of the EntityIds for the Builtin DataWriters and DataReaders (4)

          • 7.3.7.2 Mapping of the CryptoTransformIdentifier Type (4)

          • 7.3.7.3 Mapping of the CryptoHeader SubmessageElement (4)

          • 7.3.7.4 Mapping of the CryptoFooter SubmessageElement (4)

          • 7.3.7.5 SecureBodySubMsg Submessage (4)

            • 7.3.7.5.1 Wire Representation (5)

            • 7.3.7.5.2 Submessage Id (5)

            • 7.3.7.5.3 Flags in the Submessage Header (5)

          • 7.3.7.6 SecurePrefixSubMsg Submessage (4)

            • 7.3.7.6.1 Wire Representation (5)

            • 7.3.7.6.2 Submessage Id (5)

            • 7.3.7.6.3 Flags in the Submessage Header (5)

          • 7.3.7.7 SecurePostfixSubMsg Submessage (4)

            • 7.3.7.7.1 Wire Representation (5)

            • 7.3.7.7.2 Submessage Id (5)

            • 7.3.7.7.3 Flags in the Submessage Header (5)

          • 7.3.7.8 SecureRTPSPrefixSubMsg Submessage (4)

            • 7.3.7.8.1 Wire Representation (5)

            • 7.3.7.8.2 Submessage Id (5)

            • 7.3.7.8.3 Flags in the Submessage Header (5)

          • 7.3.7.9 SecureRTPSPostfixSubMsg Submessage (4)

            • 7.3.7.9.1 Wire Representation (5)

            • 7.3.7.9.2 Submessage Id (5)

            • 7.3.7.9.3 Flags in the Submessage Header (5)

      • 7.4 DDS Support for Security Plugin Information Exchange (2)

        • 7.4.1 Secure builtin Discovery Topics (3)

          • 7.4.1.1 Background (Non-Normative) (4)

          • 7.4.1.2 Extending the Data Types used by DDS Discovery (4)

          • 7.4.1.3 Reserved RTPS parameter IDs (4)

          • 7.4.1.4 Extension to RTPS Standard DCPSParticipants Builtin Topic (4)

          • 7.4.1.5 Extension to RTPS Standard DCPSPublications and DCPSSubscriptions Builtin Topics (4)

          • 7.4.1.6 New DCPSParticipantSecure Builtin Topic (4)

          • 7.4.1.7 New DCPSPublicationsSecure Builtin Topic (4)

          • 7.4.1.8 New DCPSSubscriptionsSecure Builtin Topic (4)

        • 7.4.2 New DCPSParticipantMessageSecure builtin Topic (3)

        • 7.4.3 New DCPSParticipantStatelessMessage builtin Topic (3)

          • 7.4.3.1 Background: Sequence Number Attacks (non normative) (4)

          • 7.4.3.2 BuiltinParticipantStatelessMessageWriter and BuiltinParticipantStatelessMessageReader (4)

          • 7.4.3.3 Contents of the ParticipantStatelessMessage (4)

          • 7.4.3.4 Destination of the ParticipantStatelessMessage (4)

          • 7.4.3.5 Reserved values of ParticipantStatelessMessage GenericMessageClassId (4)

          • 7.4.3.6 Format of data within ParticipantStatelessMessage (4)

            • 7.4.3.6.1 Data for message class GMCLASSID_SECURITY_AUTH_HANDSHAKE (5)

            • 7.4.3.6.2 Data for message class GMCLASSID_SECURITY_AUTH_REQUEST (5)

        • 7.4.4 New DCPSParticipantVolatileMessageSecure builtin Topic (3)

          • 7.4.4.1 Background (Non-Normative) (4)

          • 7.4.4.2 BuiltinParticipantVolatileMessageSecureWriter and BuiltinParticipantVolatileMessageSecureReader (4)

          • 7.4.4.3 Contents of the ParticipantVolatileMessageSecure (4)

          • 7.4.4.4 Destination of the ParticipantVolatileMessageSecure (4)

          • 7.4.4.5 Reserved values of ParticipantVolatileMessageSecure GenericMessageClassId (4)

          • 7.4.4.6 Format of data within ParticipantVolatileMessageSecure (4)

            • 7.4.4.6.1 Data for message class GMCLASS_SECURITY_PARTICIPANT_CRYPTO_TOKENS (5)

            • 7.4.4.6.2 Data for message class GMCLASSID_SECURITY_DATAWRITER_CRYPTO_TOKENS (5)

            • 7.4.4.6.3 Data for message class GMCLASSID_SECURITY_DATAREADER_CRYPTO_TOKENS (5)

        • 7.4.5 Definition of the “Builtin Secure Endpoints” (3)

        • 7.4.6 Definition of the “Builtin Secure Discovery Endpoints” (3)

        • 7.4.7 Definition of the “Builtin Secure Liveliness Endpoints” (3)

        • 7.4.8 Securing the “Builtin Secure Endpoints” (3)

    • 8 Plugin Architecture (1)

      • 8.1 Introduction (2)

        • 8.1.1 Service Plugin Interface Overview (3)

        • 8.1.2 Plugin Instantiation (3)

      • 8.2 Common Types (2)

        • 8.2.1 Security Exception (3)

      • 8.3 Authentication Plugin (2)

        • 8.3.1 Background (Non-Normative) (3)

        • 8.3.2 Authentication Plugin Model (3)

          • 8.3.2.1 IdentityToken (4)

          • 8.3.2.2 IdentityStatusToken (4)

          • 8.3.2.3 IdentityHandle (4)

          • 8.3.2.4 HandshakeHandle (4)

          • 8.3.2.5 AuthRequestMessageToken (4)

          • 8.3.2.6 HandshakeMessageToken (4)

          • 8.3.2.7 AuthenticatedPeerCredentialToken (4)

          • 8.3.2.8 SharedSecretHandle (4)

          • 8.3.2.9 Authentication (4)

            • 8.3.2.9.1 Reliability of the Authentication Handshake (5)

          • 8.3.2.10 Unauthenticated DomainParticipant entities (4)

          • 8.3.2.11 Authentication plugin interface (4)

            • 8.3.2.11.1 Type: ValidationResult_t (5)

            • 8.3.2.11.2 Operation: validate_local_identity (5)

            • 8.3.2.11.3 Operation: validate_remote_identity (5)

            • 8.3.2.11.4 Operation: begin_handshake_request (5)

            • 8.3.2.11.5 Operation: begin_handshake_reply (5)

            • 8.3.2.11.6 Operation: process_handshake (5)

            • 8.3.2.11.7 Operation: get_shared_secret (5)

            • 8.3.2.11.8 Operation: get_authenticated_peer_ credential_token (5)

            • 8.3.2.11.9 Operation: get_identity_token (5)

            • 8.3.2.11.10 Operation: get_identity_status_token (5)

            • 8.3.2.11.11 Operation: set_permissions_credential_and_token (5)

            • 8.3.2.11.12 Operation: set_listener (5)

            • 8.3.2.11.13 Operation: return_identity_token (5)

            • 8.3.2.11.14 Operation: return_identity_status_token (5)

            • 8.3.2.11.15 Operation: return_authenticated_peer_credential_token (5)

            • 8.3.2.11.16 Operation: return_handshake_handle (5)

            • 8.3.2.11.17 Operation: return_identity_handle (5)

            • 8.3.2.11.18 Operation: return_sharedsecret_handle (5)

          • 8.3.2.12 AuthenticationListener (4)

            • 8.3.2.12.1 Enumeration: AuthStatusKind (5)

            • 8.3.2.12.2 Operation: on_revoke_identity (5)

            • 8.3.2.12.3 Operation: on_status_changed (5)

      • 8.4 Access Control Plugin (2)

        • 8.4.1 Background (Non-Normative) (3)

        • 8.4.2 AccessControl Plugin Model (3)

          • 8.4.2.1 PermissionsToken (4)

          • 8.4.2.2 PermissionsCredentialToken (4)

          • 8.4.2.3 PermissionsHandle (4)

          • 8.4.2.4 ParticipantSecurityAttributes (4)

          • 8.4.2.5 Definition of the ParticipantSecurityAttributesMask (4)

          • 8.4.2.6 TopicSecurityAttributes (4)

          • 8.4.2.7 EndpointSecurityAttributes (4)

          • 8.4.2.8 Definition of the EndpointSecurityAttributesMask (4)

          • 8.4.2.9 AccessControl interface (4)

            • 8.4.2.9.1 Operation: validate_local_permissions (5)

            • 8.4.2.9.2 Operation: validate_remote_permissions (5)

            • 8.4.2.9.3 Operation: check_create_participant (5)

            • 8.4.2.9.4 Operation: check_create_datawriter (5)

            • 8.4.2.9.5 Operation: check_create_datareader (5)

            • 8.4.2.9.6 Operation: check_create_topic (5)

            • 8.4.2.9.7 Operation: check_local_datawriter_register_instance (5)

            • 8.4.2.9.8 Operation: check_local_datawriter_dispose_instance (5)

            • 8.4.2.9.9 Operation: check_remote_participant (5)

            • 8.4.2.9.10 Operation: check_remote_datawriter (5)

            • 8.4.2.9.11 Operation: check_remote_datareader (5)

            • 8.4.2.9.12 Operation: check_remote_topic (5)

            • 8.4.2.9.13 Operation: check_local_datawriter_match (5)

            • 8.4.2.9.14 Operation: check_local_datareader_match (5)

            • 8.4.2.9.15 Operation: check_remote_datawriter_register_instance (5)

            • 8.4.2.9.16 Operation: check_remote_datawriter_dispose_instance (5)

            • 8.4.2.9.17 Operation: get_permissions_token (5)

            • 8.4.2.9.18 Operation: get_permissions_credential_token (5)

            • 8.4.2.9.19 Operation: set_listener (5)

            • 8.4.2.9.20 Operation: return_permissions_token (5)

            • 8.4.2.9.21 Operation: return_permissions_credential_token (5)

            • 8.4.2.9.22 Operation: get_participant_sec_attributes (5)

            • 8.4.2.9.23 Operation: get_topic_sec_attributes (5)

            • 8.4.2.9.24 Operation: get_datarwriter_sec_attributes (5)

            • 8.4.2.9.25 Operation: get_datareader_sec_attributes (5)

            • 8.4.2.9.26 Operation: return_participant_sec_attributes: (5)

            • 8.4.2.9.27 Operation: return_datawriter_sec_attributes: (5)

            • 8.4.2.9.28 Operation: return_datareader_sec_attributes: (5)

          • 8.4.2.10 AccessControlListener interface (4)

            • 8.4.2.10.1 Operation: on_revoke_permissions (5)

      • 8.5 Cryptographic Plugin (2)

        • 8.5.1 Cryptographic Plugin Model (3)

          • 8.5.1.1 CryptoToken (4)

          • 8.5.1.2 ParticipantCryptoHandle (4)

          • 8.5.1.3 DatawriterCryptoHandle (4)

          • 8.5.1.4 DatareaderCryptoHandle (4)

          • 8.5.1.5 CryptoTransformIdentifier (4)

            • 8.5.1.5.1 Attribute: transformation_kind (5)

            • 8.5.1.5.2 Attribute: transformation_key_id (5)

          • 8.5.1.6 SecureSubmessageCategory_t (4)

          • 8.5.1.7 CryptoKeyFactory interface (4)

            • 8.5.1.7.1 Operation: register_local_participant (5)

            • 8.5.1.7.2 Operation: register_matched_remote_participant (5)

            • 8.5.1.7.3 Operation: register_local_datawriter (5)

            • 8.5.1.7.4 Operation: register_matched_remote_datareader (5)

            • 8.5.1.7.5 Operation: register_local_datareader (5)

            • 8.5.1.7.6 Operation: register_matched_remote_datawriter (5)

            • 8.5.1.7.7 Operation: unregister_participant (5)

            • 8.5.1.7.8 Operation: unregister_datawriter (5)

            • 8.5.1.7.9 Operation: unregister_datareader (5)

          • 8.5.1.8 CryptoKeyExchange Interface (4)

            • 8.5.1.8.1 Operation: create_local_participant_crypto_tokens (5)

            • 8.5.1.8.2 Operation: set_remote_participant_crypto_tokens (5)

            • 8.5.1.8.3 Operation: create_local_datawriter_crypto_tokens (5)

            • 8.5.1.8.4 Operation: set_remote_datawriter_crypto_tokens (5)

            • 8.5.1.8.5 Operation: create_local_datareader_crypto_tokens (5)

            • 8.5.1.8.6 Operation: set_remote_datareader_crypto_tokens (5)

            • 8.5.1.8.7 Operation: return_crypto_tokens (5)

          • 8.5.1.9 CryptoTransform interface (4)

            • 8.5.1.9.1 Operation: encode_serialized_payload (5)

            • 8.5.1.9.2 Operation: encode_datawriter_submessage (5)

            • 8.5.1.9.3 Operation: encode_datareader_submessage (5)

            • 8.5.1.9.4 Operation: encode_rtps_message (5)

            • 8.5.1.9.5 Operation: decode_rtps_message (5)

            • 8.5.1.9.6 Operation: preprocess_secure_submsg (5)

            • 8.5.1.9.7 Operation: decode_datawriter_submessage (5)

            • 8.5.1.9.8 Operation: decode_datareader_submessage (5)

            • 8.5.1.9.9 Operation: decode_serialized_payload (5)

      • 8.6 The Logging Plugin (2)

        • 8.6.1 Background (Non-Normative) (3)

        • 8.6.2 Logging Plugin Model (3)

          • 8.6.2.1 LogOptions (4)

            • 8.6.2.1.1 Attribute: log_level (5)

            • 8.6.2.1.2 Attribute: log_file (5)

            • 8.6.2.1.3 Attribute: distribute (5)

          • 8.6.2.2 Logging (4)

            • 8.6.2.2.1 Operation: set_log_options (5)

            • 8.6.2.2.2 Operation: log (5)

            • 8.6.2.2.3 Operation: enable_logging (5)

            • 8.6.2.2.4 Operation: set_listener (5)

      • 8.7 Data Tagging (2)

        • 8.7.1 Background (Non-Normative) (3)

        • 8.7.2 DataTagging Model (3)

      • 8.8 Security Plugins Behavior (2)

        • 8.8.1 Authentication and AccessControl behavior with local DomainParticipant (3)

        • 8.8.2 Authentication behavior with discovered DomainParticipant (3)

          • 8.8.2.1 Behavior when allow_unauthenticated_participants is set to TRUE (4)

          • 8.8.2.2 Behavior when allow_unauthenticated_participants is set to FALSE (4)

        • 8.8.3 DDS Entities impacted by the AccessControl operations (3)

        • 8.8.4 AccessControl behavior with local participant creation (3)

        • 8.8.5 AccessControl behavior with local domain entity creation (3)

        • 8.8.6 AccessControl behavior with remote participant discovery (3)

        • 8.8.7 AccessControl behavior with remote domain entity discovery (3)

          • 8.8.7.1 AccessControl behavior with discovered endpoints from “Unauthenticated” DomainParticipant (4)

          • 8.8.7.2 AccessControl behavior with discovered endpoints from “Authenticated” DomainParticipant (4)

        • 8.8.8 Cryptographic Plugin key generation behavior (3)

          • 8.8.8.1 Key generation for the BuiltinParticipantVolatileMessageSecureWriter and BuiltinParticipantVolatileMessageSecureReader (4)

          • 8.8.8.2 Key generation for the DomainParticipant (4)

          • 8.8.8.3 Key generation for the builtin endpoints (4)

          • 8.8.8.4 Key generation for the application-defined endpoints (4)

          • 8.8.8.5 Limiting message-size overhead caused by receiver specific key material (4)

        • 8.8.9 Cryptographic Plugin key exchange behavior (3)

          • 8.8.9.1 Key Exchange with discovered DomainParticipant (4)

          • 8.8.9.2 Key Exchange with remote DataReader (4)

          • 8.8.9.3 Key Exchange with remote DataWriter (4)

        • 8.8.10 Cryptographic Plugins encoding/decoding behavior (3)

          • 8.8.10.1 Encoding/decoding of a single writer message on an RTPS message (4)

          • 8.8.10.2 Encoding/decoding of multiple writer messages on an RTPS message (4)

          • 8.8.10.3 Encoding/decoding of multiple reader messages on an RTPS message (4)

          • 8.8.10.4 Encoding/decoding of reader and writer messages on an RTPS message (4)

    • 9 Builtin Plugins (1)

      • 9.1 Introduction (2)

      • 9.2 Requirements and Priorities (Non-Normative) (2)

        • 9.2.1 Performance and Scalability (3)

        • 9.2.2 Robustness and Availability (3)

        • 9.2.3 Fitness to the DDS Data-Centric Model (3)

        • 9.2.4 Leverage and Reuse of Existing Security Infrastructure and Technologies (3)

        • 9.2.5 Ease-of-Use while Supporting Common Application Requirements (3)

      • 9.3 Builtin Authentication: DDS:Auth:PKI-DH (2)

        • 9.3.1 Configuration (3)

          • 9.3.1.1 Identity CA Certificate (4)

          • 9.3.1.2 Private Key (4)

          • 9.3.1.3 Identity Certificate (4)

        • 9.3.2 DDS:Auth:PKI-DH Types (3)

          • 9.3.2.1 DDS:Auth:PKI-DH IdentityToken (4)

          • 9.3.2.2 DDS:Auth:PKI-DH IdentityStatusToken (4)

          • 9.3.2.3 DDS:Auth:PKI-DH AuthenticatedPeerCredentialToken (4)

          • 9.3.2.4 DDS:Auth:PKI-DH AuthRequestMessageToken (4)

          • 9.3.2.5 DDS:Auth:PKI-DH HandshakeMessageToken (4)

            • 9.3.2.5.1 HandshakeRequestMessageToken objects (5)

            • 9.3.2.5.2 HandshakeReplyMessageToken (5)

            • 9.3.2.5.3 HandshakeFinalMessageToken (5)

        • 9.3.3 DDS:Auth:PKI-DH plugin behavior (3)

        • 9.3.4 DDS:Auth:PKI-DH plugin authentication protocol (3)

          • 9.3.4.1 Terms and notation (4)

          • 9.3.4.2 Protocol description (4)

      • 9.4 Builtin Access Control: DDS:Access:Permissions (2)

        • 9.4.1 Configuration (3)

          • 9.4.1.1 Permissions CA Certificate (4)

          • 9.4.1.2 Domain Governance Document (4)

            • 9.4.1.2.1 Basic Protection Kinds (5)

            • 9.4.1.2.2 Protection Kinds (5)

            • 9.4.1.2.3 Domain Governance document format (5)

            • 9.4.1.2.4 Domain Access Rules Section (5)

            • 9.4.1.2.5 Domain Rules (5)

              • 9.4.1.2.5.1 Domains element (6)

              • 9.4.1.2.5.2 Allow Unauthenticated Participants element (6)

              • 9.4.1.2.5.3 Enable Join Access Control element (6)

              • 9.4.1.2.5.4 Discovery Protection Kind element (6)

              • 9.4.1.2.5.5 Liveliness Protection Kind element (6)

              • 9.4.1.2.5.6 RTPS Protection Kind element (6)

              • 9.4.1.2.5.7 Topic Access Rules Section (6)

            • 9.4.1.2.6 Topic Rule Section (5)

              • 9.4.1.2.6.1 Topic expression element (6)

              • 9.4.1.2.6.2 Enable Discovery protection element (6)

              • 9.4.1.2.6.3 Enable Liveliness Protection element (6)

              • 9.4.1.2.6.4 Enable Read Access Control element (6)

              • 9.4.1.2.6.5 Enable Write Access Control element (6)

              • 9.4.1.2.6.6 Metadata Protection Kind element (6)

              • 9.4.1.2.6.7 Data Protection Kind element (6)

            • 9.4.1.2.7 Application of Domain and Topic Rules (5)

            • 9.4.1.2.8 Example Domain Governance document (non normative) (5)

          • 9.4.1.3 DomainParticipant permissions document (4)

            • 9.4.1.3.1 Permissions Section (5)

            • 9.4.1.3.2 Grant Section (5)

              • 9.4.1.3.2.1 Subject name Section (6)

              • 9.4.1.3.2.2 Validity Section (6)

              • 9.4.1.3.2.3 Rules Section (6)

                • 9.4.1.3.2.3.1 Format of the allow rules (7)

                  • 9.4.1.3.2.3.1.1 Domains Section (8)

                  • 9.4.1.3.2.3.1.2 Format of the Allowed Actions sections (8)

                  • 9.4.1.3.2.3.1.3 Allowed Topic condition section (8)

                  • 9.4.1.3.2.3.1.4 Allowed Partitions condition section (8)

                  • 9.4.1.3.2.3.1.5 Allowed Data tags condition section (8)

                  • 9.4.1.3.2.3.1.6 Example allow rule (8)

                • 9.4.1.3.2.3.2 Format for deny rules (7)

                  • 9.4.1.3.2.3.2.1 Domains Section (8)

                  • 9.4.1.3.2.3.2.2 Format of the Denied Actions sections (8)

                  • 9.4.1.3.2.3.2.3 Denied Topic condition section (8)

                  • 9.4.1.3.2.3.2.4 Denied Partitions condition section (8)

                  • 9.4.1.3.2.3.2.5 Data tags condition section (8)

                  • 9.4.1.3.2.3.2.6 Example deny rule (8)

                  • 9.4.1.3.2.3.2.7 Example deny rule (8)

          • 9.4.1.4 DomainParticipant example permissions document (non normative) (4)

        • 9.4.2 DDS:Access:Permissions Types (3)

          • 9.4.2.1 DDS:Access:Permissions PermissionsCredentialToken (4)

          • 9.4.2.2 DDS:Access:Permissions PermissionsToken (4)

          • 9.4.2.3 PluginParticipantSecurityAttributes (4)

          • 9.4.2.4 Definition of the PluginParticipantSecurityAttributesMask (4)

          • 9.4.2.5 PluginEndpointSecurityAttributes (4)

          • 9.4.2.6 Definition of the PluginEndpointSecurityAttributesMask (4)

        • 9.4.3 DDS:Access:Permissions plugin behavior (3)

      • 9.5 Builtin Crypto: DDS:Crypto:AES-GCM-GMAC (2)

        • 9.5.1 Configuration (3)

        • 9.5.2 DDS:Crypto:AES-GCM-GMAC Types (3)

          • 9.5.2.1 DDS:Crypto:AES-GCM-GMAC CryptoToken (4)

            • 9.5.2.1.1 KeyMaterial_AES_GCM_GMAC structure (5)

            • 9.5.2.1.2 Key material used by the BuiltinParticipantVolatileMessageSecureWriter and BuiltinParticipantVolatileMessageSecureReader (5)

          • 9.5.2.2 DDS:Crypto:AES-GCM-GMAC CryptoTransformIdentifier (4)

          • 9.5.2.3 DDS:Crypto:AES-GCM-GMAC CryptoHeader (4)

          • 9.5.2.4 DDS:Crypto:AES-GCM-GMAC CryptoContent (4)

          • 9.5.2.5 DDS:Crypto:AES-GCM-GMAC CryptoFooter (4)

        • 9.5.3 DDS:Crypto:AES-GCM-GMAC plugin behavior (3)

          • 9.5.3.1 CryptoKeyFactory for DDS:Crypto:AES-GCM-GMAC (4)

          • 9.5.3.2 CryptoKeyExchange for DDS:Crypto:AES-GCM-GMAC (4)

          • 9.5.3.3 CryptoKeyTransform for DDS:Crypto:AES-GCM-GMAC (4)

            • 9.5.3.3.1 Overview (5)

            • 9.5.3.3.2 Encode/decode operation virtual machine (5)

            • 9.5.3.3.3 Computation of SessionKey and SessionReceiverSpecificKey (5)

            • 9.5.3.3.4 Computation of ciphertext from plaintext (5)

              • 9.5.3.3.4.1 Format of the CryptoHeader Submessage Element (6)

              • 9.5.3.3.4.2 Format of the CryptoContent Submessage Element (6)

              • 9.5.3.3.4.3 Format of the CryptoFooter Submessage Element (6)

              • 9.5.3.3.4.4 Result from encode_serialized_payload (6)

              • 9.5.3.3.4.5 Result from encode_datawriter_submessage and encode_datareader_submessage (6)

              • 9.5.3.3.4.6 Result from encode_rtps_message (6)

            • 9.5.3.3.5 Computation of plaintext from ciphertext (5)

            • 9.5.3.3.6 Computation of the message authentication codes (5)

      • 9.6 Builtin Logging Plugin (2)

        • 9.6.1 DDS:Logging:DDS_LogTopic plugin behavior (3)

    • 10 Plugin Language Bindings (1)

      • 10.1 Introduction (2)

      • 10.2 IDL representation of the plugin interfaces (2)

      • 10.3 C language representation of the plugin interfaces (2)

      • 10.4 C++ classic representation of the plugin interfaces (2)

      • 10.5 Java classic (2)

      • 10.6 C++11 representation of the plugin interfaces (2)

      • 10.7 Java modern aligned with the DDS-JAVA5+ PSM (2)

    • Annex A - References (1)

  • DDS XTypes 1.3 (xtypes)

    • Extensible and Dynamic Topic Types for DDS (1)

    • Table of Contents (1)

    • Tables (1)

    • Figures (1)

    • Preface (1)

    • 1. Scope (1)

    • 2. Conformance Criteria (1)

      • 2.1 Programming Interface Conformance (2)

      • 2.2 Network Interoperability Conformance (2)

        • 2.2.1 Minimal Network Interoperability Profile (3)

        • 2.2.2 Basic Network Interoperability Profile (3)

      • 2.3 Optional XTYPES 1.1 Interoperability Profile (2)

      • 2.4 Optional XML Data Representation Profile (2)

    • 3. Normative References (1)

    • 4. Terms and Definitions (1)

    • 5. Symbols (1)

    • 6. Additional Information (1)

      • 6.1 Data Distribution Service for Real-Time Systems (DDS) (2)

      • 6.2 Acknowledgments (2)

    • 7. Extensible and Dynamic Topic Types for DDS (1)

      • 7.1 Overview (2)

      • 7.2 Type System (2)

        • 7.2.1 Background (Non-Normative) (3)

          • 7.2.1.1 Type Evolution Example (4)

          • 7.2.1.2 Type Inheritance Example (4)

          • 7.2.1.3 Sparse Types Example (4)

        • 7.2.2 Type System Model (3)

          • 7.2.2.1 Namespaces (4)

          • 7.2.2.2 Primitive Types (4)

            • 7.2.2.2.1 Character Data (5)

              • 7.2.2.2.1.1 Design Rationale (Non-Normative) (6)

              • 7.2.2.2.1.2 Character Sets and Encoding (6)

                • 7.2.2.2.1.2.1 Use of Unicode (7)

                • 7.2.2.2.1.2.2 CHAR_8_TYPE (7)

                • 7.2.2.2.1.2.3 Array or Sequence of CHAR_8_TYPE (7)

                • 7.2.2.2.1.2.4 String<Char8> type (7)

                • 7.2.2.2.1.2.5 CHAR_16_TYPE (7)

                • 7.2.2.2.1.2.6 Array or Sequence of CHAR_16_TYPE (7)

                • 7.2.2.2.1.2.7 String<Char16> type (7)

          • 7.2.2.3 String Types (4)

          • 7.2.2.4 Constructed Types (4)

            • 7.2.2.4.1 Enumerated Types (5)

              • 7.2.2.4.1.1 Enumeration Types (6)

              • 7.2.2.4.1.2 Bitmask Types (6)

                • 7.2.2.4.1.2.1 Design Rationale (Non-Normative) (7)

            • 7.2.2.4.2 Alias Types (5)

            • 7.2.2.4.3 Collection Types (5)

            • 7.2.2.4.4 Aggregated Types (5)

              • 7.2.2.4.4.1 Overview (6)

              • 7.2.2.4.4.2 Structure Types (6)

              • 7.2.2.4.4.3 Union Types (6)

              • 7.2.2.4.4.4 Members of an Aggregated Type (6)

                • 7.2.2.4.4.4.1 Member Name (7)

                • 7.2.2.4.4.4.2 Member Type (7)

                • 7.2.2.4.4.4.3 Member Index (7)

                • 7.2.2.4.4.4.4 Member IDs (7)

                • 7.2.2.4.4.4.5 Member Name Hashes (7)

                • 7.2.2.4.4.4.6 Members That Must Be Understood by Consumers (7)

                • 7.2.2.4.4.4.7 Optional Members (7)

                • 7.2.2.4.4.4.8 Key Members (7)

                • 7.2.2.4.4.4.9 Default Member Value (7)

            • 7.2.2.4.5 Inheritance of Aggregated Types (5)

            • 7.2.2.4.6 Related Key-Erased type of an Aggregated Type (5)

            • 7.2.2.4.7 Related Key-Holder type of an Aggregated Type (5)

            • 7.2.2.4.8 Verbatim Text (5)

              • 7.2.2.4.8.1 Property: Language (6)

              • 7.2.2.4.8.2 Property: Placement (6)

              • 7.2.2.4.8.3 Property: Text (6)

            • 7.2.2.4.9 External Data (5)

          • 7.2.2.5 Nested Types (4)

          • 7.2.2.6 Annotations (4)

          • 7.2.2.7 Try Construct behavior (4)

        • 7.2.3 Type Extensibility and Mutability (3)

        • 7.2.4 Type Compatibility (3)

          • 7.2.4.1 Constructing objects of one type from objects of another type (4)

          • 7.2.4.2 Concept of Delimited Types (4)

          • 7.2.4.3 Strong Assignability (4)

          • 7.2.4.4 Assignability Rules (4)

            • 7.2.4.4.1 Assignability of Equivalent Types (5)

            • 7.2.4.4.2 Non-serialized Members (5)

            • 7.2.4.4.3 Alias Types (5)

            • 7.2.4.4.4 Primitive Types (5)

            • 7.2.4.4.5 String Types (5)

              • 7.2.4.4.5.1 Example: Strings (6)

            • 7.2.4.4.6 Collection Types (5)

            • 7.2.4.4.7 Enumerated Types (5)

            • 7.2.4.4.8 Aggregated Types (5)

              • 7.2.4.4.8.1 Example: Type Truncation (6)

              • 7.2.4.4.8.2 Example: Type Inheritance (6)

              • 7.2.4.4.8.3 Example: Type Refactoring (6)

      • 7.3 Type Representation (2)

        • 7.3.1 IDL Type Representation (3)

          • 7.3.1.1 IDL Compatibility (4)

            • 7.3.1.1.1 Backward Compatibility with Respect to Type Definitions (5)

            • 7.3.1.1.2 Forward Compatibility with Respect to Compilers (5)

          • 7.3.1.2 Annotation Language (4)

            • 7.3.1.2.1 Built-in Annotations (5)

              • 7.3.1.2.1.1 Member IDs (6)

              • 7.3.1.2.1.2 Optional Members (6)

              • 7.3.1.2.1.3 Key Members (6)

              • 7.3.1.2.1.4 External Data (6)

              • 7.3.1.2.1.5 Enumerated Literal Values (6)

              • 7.3.1.2.1.6 Bitmask Positions (6)

              • 7.3.1.2.1.7 Nested Types (6)

              • 7.3.1.2.1.8 Type Extensibility and Mutability (6)

              • 7.3.1.2.1.9 Must Understand Members (6)

              • 7.3.1.2.1.10 Default Literal for Enumeration (6)

              • 7.3.1.2.1.11 Ignore Literal Names for Enumeration (6)

              • 7.3.1.2.1.12 TryConstruct Elements and Members (6)

                • 7.3.1.2.1.12.1 TryConstruct Example 1 (7)

                • 7.3.1.2.1.12.2 TryConstruct Example 2 (7)

                • 7.3.1.2.1.12.3 TryConstruct Example 3 (7)

                • 7.3.1.2.1.12.4 TryConstruct Example 4 (7)

                • 7.3.1.2.1.12.5 TryConstruct Example 5 (7)

              • 7.3.1.2.1.13 Verbatim Text (6)

              • 7.3.1.2.1.14 Non-serialized Members (6)

              • 7.3.1.2.1.15 Constrained Data Representations (6)

              • 7.3.1.2.1.16 Explicit declaration of Topic types (6)

            • 7.3.1.2.2 Using Built-in Annotations (5)

            • 7.3.1.2.3 Alternative Annotation Syntax (5)

            • 7.3.1.2.4 Defining Annotations (5)

            • 7.3.1.2.5 Applying Annotations (5)

          • 7.3.1.3 Constants and Expressions (4)

          • 7.3.1.4 Primitive Types (4)

          • 7.3.1.5 Alias Types (4)

          • 7.3.1.6 Array and Sequence Types (4)

          • 7.3.1.7 String Types (4)

          • 7.3.1.8 Enumerated Types (4)

          • 7.3.1.9 Map Types (4)

          • 7.3.1.10 Structure Types (4)

          • 7.3.1.11 Union Types (4)

        • 7.3.2 XML Type Representation (3)

          • 7.3.2.1 Type Representation Management (4)

            • 7.3.2.1.1 File Inclusion (5)

            • 7.3.2.1.2 Forward Declarations (5)

            • 7.3.2.1.3 Constants (5)

          • 7.3.2.2 Basic Types (4)

          • 7.3.2.3 String Types (4)

          • 7.3.2.4 Collection Types (4)

            • 7.3.2.4.1 Array Types (5)

            • 7.3.2.4.2 Sequence Types (5)

            • 7.3.2.4.3 Map Types (5)

            • 7.3.2.4.4 Combinations of Collection Types (5)

          • 7.3.2.5 Aggregated Types (4)

            • 7.3.2.5.1 Structures (5)

              • 7.3.2.5.1.1 Verbatim Text (6)

              • 7.3.2.5.1.2 Members (6)

              • 7.3.2.5.1.3 Inheritance (6)

            • 7.3.2.5.2 Unions (5)

          • 7.3.2.6 Aliases (4)

          • 7.3.2.7 Enumerated Types (4)

            • 7.3.2.7.1 Enumerations (5)

            • 7.3.2.7.2 Bitmasks (5)

          • 7.3.2.8 Modules (4)

          • 7.3.2.9 Annotations (4)

        • 7.3.3 XSD Type Representation (3)

          • 7.3.3.1 Annotations (4)

            • 7.3.3.1.1 Defining Annotation Types (5)

            • 7.3.3.1.2 Applying Annotations (5)

            • 7.3.3.1.3 Built-in Annotations (5)

          • 7.3.3.2 Structures (4)

            • 7.3.3.2.1 Inheritance (5)

            • 7.3.3.2.2 Optional Members (5)

          • 7.3.3.3 Nested Types (4)

          • 7.3.3.4 Maps (4)

        • 7.3.4 Representing Types with TypeIdentifier and TypeObject (3)

          • 7.3.4.1 Plain Types (4)

          • 7.3.4.2 Type Identifier (4)

          • 7.3.4.3 Complete TypeObject (4)

          • 7.3.4.4 Minimal TypeObject (4)

          • 7.3.4.5 TypeObject serialization (4)

          • 7.3.4.6 Classification of TypeIdentifiers (4)

            • 7.3.4.6.1 Fully-descriptive TypeIdentifiers (5)

            • 7.3.4.6.2 Hash TypeIdentifiers (5)

            • 7.3.4.6.3 Direct Hash TypeIdentifiers (5)

            • 7.3.4.6.4 Indirect Hash TypeIdentifiers (5)

            • 7.3.4.6.5 Minimal Hash TypeIdentifiers (5)

            • 7.3.4.6.6 Complete Hash TypeIdentifiers (5)

          • 7.3.4.7 Type Equivalence (4)

          • 7.3.4.8 Types with mutual dependencies on other types (4)

            • 7.3.4.8.1 Background: Basic graph theory (5)

          • 7.3.4.9 Computation of Type identifiers for types with mutual dependencies (4)

            • 7.3.4.9.1 Introduction (5)

            • 7.3.4.9.2 Algorithm (5)

            • 7.3.4.9.3 Strongly Connected Components Identifier (SCCIdentifier) (5)

      • 7.4 Data Representation (2)

        • 7.4.1 Extended CDR Representation (encoding version 1) (3)

          • 7.4.1.1 PLAIN_CDR Encoding (4)

            • 7.4.1.1.1 Primitive types (5)

            • 7.4.1.1.2 Character Data (5)

            • 7.4.1.1.3 Enumerated Types (5)

              • 7.4.1.1.3.1 Enumeration Types (6)

              • 7.4.1.1.3.2 Bitmask Types (6)

            • 7.4.1.1.4 Map Types (5)

            • 7.4.1.1.5 Structures (5)

              • 7.4.1.1.5.1 Inheritance (6)

              • 7.4.1.1.5.2 Optional Members (6)

          • 7.4.1.2 Parameterized CDR Encoding (4)

            • 7.4.1.2.1 Interpretation of Parameter ID Values (5)

            • 7.4.1.2.2 Member ID-to-Parameter ID Mapping (5)

            • 7.4.1.2.3 Omission and Reordering of Members of Aggregated Types (5)

            • 7.4.1.2.4 Nested Objects (5)

        • 7.4.2 Extended CDR Representation (encoding version 2) (3)

        • 7.4.3 Extended CDR encoding virtual machine (3)

          • 7.4.3.1 Encoding version and format (4)

          • 7.4.3.2 XCDR Stream State (4)

            • 7.4.3.2.1 XCDR stream state variables (5)

            • 7.4.3.2.2 Operations that change the XCDR stream state (5)

            • 7.4.3.2.3 XCDR Stream Initialization (5)

          • 7.4.3.3 Type and Byte transformations (4)

          • 7.4.3.4 Functions related to data types and objects (4)

            • 7.4.3.4.1 Delimiter Header (DHEADER) (5)

            • 7.4.3.4.2 Member Header (EMHEADER), Length Code (LC) and NEXTINT (5)

          • 7.4.3.5 Encoding (serialization) rules (4)

            • 7.4.3.5.1 Notation used for the match criteria (5)

            • 7.4.3.5.2 Encoding of Optional Members (5)

            • 7.4.3.5.3 Complete Serialization Rules (5)

        • 7.4.4 XML Data Representation (3)

          • 7.4.4.1 Valid XML Data Representation (4)

          • 7.4.4.2 Well-formed XML Data Representation (4)

      • 7.5 Language Binding (2)

        • 7.5.1 Plain Language Binding (3)

          • 7.5.1.1 Primitive Types (4)

            • 7.5.1.1.1 C (5)

            • 7.5.1.1.2 C++ (5)

          • 7.5.1.2 Annotations and Built-in Annotations (4)

            • 7.5.1.2.1 Enumerated Literal Values (5)

              • 7.5.1.2.1.1 C (6)

              • 7.5.1.2.1.2 C++ (6)

              • 7.5.1.2.1.3 Java (6)

            • 7.5.1.2.2 Bitmask Types (5)

            • 7.5.1.2.3 External Members (5)

              • 7.5.1.2.3.1 C (6)

                • 7.5.1.2.3.1.1 External Optional Members (7)

              • 7.5.1.2.3.2 Traditional C++ (6)

                • 7.5.1.2.3.2.1 External Optional Members (7)

              • 7.5.1.2.3.3 Modern C++ (6)

                • 7.5.1.2.3.3.1 Operation: Default Constructor (7)

                • 7.5.1.2.3.3.2 Operation: Constructor from a T* (7)

                • 7.5.1.2.3.3.3 Operation: Constructor from a shared pointer to T object (7)

                • 7.5.1.2.3.3.4 Operation: Copy Constructor (7)

                • 7.5.1.2.3.3.5 Operation: Assignment Operator (7)

                • 7.5.1.2.3.3.6 Operation: Destructor (7)

                • 7.5.1.2.3.3.7 Operation: operator* (const and non-const versions) (7)

                • 7.5.1.2.3.3.8 Operation: get (const and non-const versions) (7)

                • 7.5.1.2.3.3.9 Operation: get_shared_ptr (7)

                • 7.5.1.2.3.3.10 Operation: operator-> (const and non-const versions) (7)

                • 7.5.1.2.3.3.11 Operation: operator== (7)

                • 7.5.1.2.3.3.12 Operation: operator!= (7)

                • 7.5.1.2.3.3.13 Operation: operator bool (7)

                • 7.5.1.2.3.3.14 Operation: is_locked (7)

                • 7.5.1.2.3.3.15 Operation: lock (7)

                • 7.5.1.2.3.3.16 External Optional Members (7)

              • 7.5.1.2.3.4 Java (6)

            • 7.5.1.2.4 Optional Members (5)

              • 7.5.1.2.4.1 C (6)

              • 7.5.1.2.4.2 C++ (6)

              • 7.5.1.2.4.3 Java (6)

              • 7.5.1.2.4.4 Optional Arrays in C and C++ (6)

            • 7.5.1.2.5 Nested Types (5)

            • 7.5.1.2.6 User-Defined Annotation Types (5)

              • 7.5.1.2.6.1 Java (6)

          • 7.5.1.3 Map Types (4)

            • 7.5.1.3.1 Operations (5)

            • 7.5.1.3.2 C (5)

              • 7.5.1.3.2.1 Map Type Name (6)

              • 7.5.1.3.2.2 Operation: new (6)

              • 7.5.1.3.2.3 Operation: delete (6)

              • 7.5.1.3.2.4 Operation: initialize (6)

              • 7.5.1.3.2.5 Operation: finalize (6)

              • 7.5.1.3.2.6 Operation: copy (6)

              • 7.5.1.3.2.7 Operation: get_size (6)

              • 7.5.1.3.2.8 Operation: get_max_size (6)

              • 7.5.1.3.2.9 Operation: set_max_size (6)

              • 7.5.1.3.2.10 Operation: clear (6)

              • 7.5.1.3.2.11 Operation: insert (6)

              • 7.5.1.3.2.12 Operation: insert_or_assign (6)

              • 7.5.1.3.2.13 Operation: erase (6)

              • 7.5.1.3.2.14 Operation: get_first (6)

              • 7.5.1.3.2.15 Operation: get_next (6)

              • 7.5.1.3.2.16 Operation: find_element (6)

              • 7.5.1.3.2.17 Operation: find_entry (6)

              • 7.5.1.3.2.18 Operation: get_pair (6)

              • 7.5.1.3.2.19 Example (Non-Normative) (6)

            • 7.5.1.3.3 Traditional C++ (5)

              • 7.5.1.3.3.1 Map Class Name and operations (6)

            • 7.5.1.3.4 Modern C++ (5)

            • 7.5.1.3.5 Java (5)

            • 7.5.1.3.6 Other Programming Languages (5)

          • 7.5.1.4 Structure and Union Types (4)

            • 7.5.1.4.1 Inheritance (5)

              • 7.5.1.4.1.1 C++ (6)

              • 7.5.1.4.1.2 Java (6)

              • 7.5.1.4.1.3 Other Programming Languages (6)

        • 7.5.2 Dynamic Language Binding (3)

          • 7.5.2.1 UML-to-IDL Mapping Rules (4)

          • 7.5.2.2 DynamicTypeBuilderFactory (4)

            • 7.5.2.2.1 Operation: create_array_type (5)

            • 7.5.2.2.2 Operation: create_bitmask_type (5)

            • 7.5.2.2.3 Operation: create_map_type (5)

            • 7.5.2.2.4 Operation: create_sequence_type (5)

            • 7.5.2.2.5 Operations: create_string_type, create_wstring_type (5)

            • 7.5.2.2.6 Operation: create_type (5)

            • 7.5.2.2.7 Operation: create_type_copy (5)

            • 7.5.2.2.8 Operation: create_type_w_type_object (5)

            • 7.5.2.2.9 Operation: delete_instance (5)

            • 7.5.2.2.10 Operation: delete_type (5)

            • 7.5.2.2.11 Operation: get_instance (5)

            • 7.5.2.2.12 Operation: get_primitive_type (5)

            • 7.5.2.2.13 Operation: create_type_w_uri (5)

            • 7.5.2.2.14 Operation: create_type_w_document (5)

          • 7.5.2.3 AnnotationDescriptor (4)

            • 7.5.2.3.1 Operation: copy_from (5)

            • 7.5.2.3.2 Operation: equals (5)

            • 7.5.2.3.3 Operation: is_consistent (5)

            • 7.5.2.3.4 Property: type (5)

            • 7.5.2.3.5 Property: value (5)

          • 7.5.2.4 TypeDescriptor (4)

            • 7.5.2.4.1 Property: base_type (5)

            • 7.5.2.4.2 Property: bound (5)

            • 7.5.2.4.3 Operation: copy_from (5)

            • 7.5.2.4.4 Property: discriminator_type (5)

            • 7.5.2.4.5 Property: element_type (5)

            • 7.5.2.4.6 Operation: equals (5)

            • 7.5.2.4.7 Operation: is_consistent (5)

            • 7.5.2.4.8 Property: key_element_type (5)

            • 7.5.2.4.9 Property: kind (5)

            • 7.5.2.4.10 Property: name (5)

          • 7.5.2.5 MemberId (4)

          • 7.5.2.6 DynamicTypeMember (4)

            • 7.5.2.6.1 Property: annotation (5)

            • 7.5.2.6.2 Operation: get_descriptor (5)

            • 7.5.2.6.3 Operation: equals (5)

            • 7.5.2.6.4 Operation: get_id (5)

            • 7.5.2.6.5 Operation: get_name (5)

          • 7.5.2.7 MemberDescriptor (4)

            • 7.5.2.7.1 Operation: copy_from (5)

            • 7.5.2.7.2 Property: default_label (5)

            • 7.5.2.7.3 Property: default_value (5)

            • 7.5.2.7.4 Operation: equals (5)

            • 7.5.2.7.5 Property: id (5)

            • 7.5.2.7.6 Property: index (5)

            • 7.5.2.7.7 Operation: is_consistent (5)

            • 7.5.2.7.8 Property: label (5)

            • 7.5.2.7.9 Property: name (5)

            • 7.5.2.7.10 Property: type (5)

          • 7.5.2.8 DynamicType (4)

            • 7.5.2.8.1 Property: annotation (5)

            • 7.5.2.8.2 Property: member (5)

            • 7.5.2.8.3 Property: member_by_name (5)

            • 7.5.2.8.4 Operation: equals (5)

            • 7.5.2.8.5 Operation: get_annotation (5)

            • 7.5.2.8.6 Operation: get_annotation_count (5)

            • 7.5.2.8.7 Operation: get_descriptor (5)

            • 7.5.2.8.8 Operation: get_kind (5)

            • 7.5.2.8.9 Operation: get_member (5)

            • 7.5.2.8.10 Operation: get_member_by_index (5)

            • 7.5.2.8.11 Operation: get_member_by_name (5)

            • 7.5.2.8.12 Operation: get_member_count (5)

            • 7.5.2.8.13 Operation: get_name (5)

          • 7.5.2.9 DynamicTypeBuilder (4)

            • 7.5.2.9.1 Property: annotation (5)

            • 7.5.2.9.2 Property: member (5)

            • 7.5.2.9.3 Property: member_by_name (5)

            • 7.5.2.9.4 Operation: add_member (5)

            • 7.5.2.9.5 Operation: apply_annotation (5)

            • 7.5.2.9.6 Operation: apply_annotation_to_member (5)

            • 7.5.2.9.7 Operation: build (5)

            • 7.5.2.9.8 Operation: get_descriptor (5)

            • 7.5.2.9.9 Operation: equals (5)

            • 7.5.2.9.10 Operation: get_annotation (5)

            • 7.5.2.9.11 Operation: get_annotation_count (5)

            • 7.5.2.9.12 Operation: get_kind (5)

            • 7.5.2.9.13 Operation: Operation: get_member (5)

            • 7.5.2.9.14 Operation: get_member_by_index (5)

            • 7.5.2.9.15 Operation: get_member_by_name (5)

            • 7.5.2.9.16 Operation: get_member_count (5)

            • 7.5.2.9.17 get_name (5)

          • 7.5.2.10 DynamicDataFactory (4)

            • 7.5.2.10.1 Operation: create_data (5)

            • 7.5.2.10.2 Operation: delete_data (5)

            • 7.5.2.10.3 Operation: delete_instance (5)

            • 7.5.2.10.4 Operation: get_instance (5)

          • 7.5.2.11 DynamicData (4)

            • 7.5.2.11.1 Property: value; Operations: get_member_id_by_name and get_member_id_at_index (5)

            • 7.5.2.11.2 Property: descriptor (5)

            • 7.5.2.11.3 Clearing Values: Operations clear_value, clear_all_values, and clear_nonkey_values (5)

            • 7.5.2.11.4 Operation: clone (5)

            • 7.5.2.11.5 Operation: equals (5)

            • 7.5.2.11.6 Operation: get_item_count (5)

            • 7.5.2.11.7 Operations: loan_value and return_loaned_value (5)

            • 7.5.2.11.8 Property: type (5)

            • 7.5.2.11.9 Platform-Specific Model: IDL (5)

      • 7.6 Use of the Type System by DDS (2)

        • 7.6.1 Topic Model (3)

        • 7.6.2 Types that may be associated with a DDS Topic (3)

        • 7.6.3 Discovery and Endpoint Matching (3)

          • 7.6.3.1 Data Representation QoS Policy (4)

            • 7.6.3.1.1 DataRepresentationQosPolicy: Conceptual Model (5)

            • 7.6.3.1.2 Use of the RTPS Encapsulation Identifier (5)

            • 7.6.3.1.3 DataRepresentationQosPolicy: Platform-Specific API (5)

          • 7.6.3.2 Discovery Built-in Topics (4)

            • 7.6.3.2.1 Type Information (5)

            • 7.6.3.2.2 Additional members included in discovery built-in Topics (5)

          • 7.6.3.3 Built-in TypeLookup service (4)

            • 7.6.3.3.1 Introduction (5)

            • 7.6.3.3.2 Types reused from DDS-RPC (5)

            • 7.6.3.3.3 TypeLookup Types and Endpoints (5)

            • 7.6.3.3.4 Use of the TypeLookup Service (5)

              • 7.6.3.3.4.1 Service operation getTypeDependencies (6)

              • 7.6.3.3.4.2 Service operation getTypes (6)

          • 7.6.3.4 Type Consistency Enforcement QoS Policy (4)

            • 7.6.3.4.1 TypeConsistencyEnforcementQosPolicy: Conceptual Model (5)

            • 7.6.3.4.2 Rules for Type Consistency Enforcement (5)

            • 7.6.3.4.3 TypeConsistencyEnforcementQosPolicy: Platform-Specific API (5)

        • 7.6.4 Local API Extensions (3)

          • 7.6.4.1 Operation: DomainParticipant::create_topic (4)

          • 7.6.4.2 Operation: DomainParticipant::lookup_topicdescription (4)

        • 7.6.5 Built-in Types (3)

          • 7.6.5.1 String (4)

          • 7.6.5.2 KeyedString (4)

          • 7.6.5.3 Bytes (4)

          • 7.6.5.4 KeyedBytes (4)

        • 7.6.6 Use of Dynamic Data and Dynamic Type (3)

          • 7.6.6.1 Type Support (4)

            • 7.6.6.1.1 TypeSupport Interface (5)

              • 7.6.6.1.1.1 Operation: get_type (6)

            • 7.6.6.1.2 FooTypeSupport Interface (5)

              • 7.6.6.1.2.1 Operation: create_sample (6)

              • 7.6.6.1.2.2 Operation: create_dynamic_sample (6)

            • 7.6.6.1.3 DynamicTypeSupport (5)

            • 7.6.6.1.4 Operations: register_type, get_type_name (5)

            • 7.6.6.1.5 Operation: create_type_support (5)

            • 7.6.6.1.6 Operation: delete_type_support (5)

          • 7.6.6.2 DynamicDataWriter and DynamicDataReader (4)

        • 7.6.7 DCPS Queries and Filters (3)

          • 7.6.7.1 Member Names (4)

          • 7.6.7.2 Optional Type Members (4)

          • 7.6.7.3 Grammar Extensions (4)

        • 7.6.8 Interoperability of Keyed Topics (3)

    • Annex A: XML Type Representation Schema (1)

    • Annex B: Representing Types with TypeObject (1)

    • Annex C: Dynamic Language Binding (1)

    • Annex D: DDS Built-in Topic Data Types (1)

    • Annex E: Built-in Types (1)

    • Annex F: Characterizing Legacy DDS Implementations (1)

      • F.1 Type System (2)

      • F.2 Type Representation (2)

      • F.3 Data Representation (2)

      • F.4 Language Binding (2)

  • IDL 4.2 (idl)

    • Interface Definition Language™ (1)

    • Table of Contents (1)

    • Tables (1)

    • Figures (1)

    • 1 Scope (1)

    • 2 Conformance Criteria (1)

    • 3 Normative References (1)

    • 4 Terms and Definitions (1)

    • 5 Symbols (1)

    • 6 Additional Information (1)

      • 6.1 Acknowledgments (2)

      • 6.2 Specification History (2)

    • 7 IDL Syntax and Semantics (1)

      • 7.1 Overview (2)

      • 7.2 Lexical Conventions (2)

        • 7.2.1 Tokens (3)

        • 7.2.2 Comments (3)

        • 7.2.3 Identifiers (3)

          • 7.2.3.1 Collision Rules (4)

          • 7.2.3.2 Escaped Identifiers (4)

        • 7.2.4 Keywords (3)

        • 7.2.5 Other Characters Recognized by IDL (3)

        • 7.2.6 Literals (3)

          • 7.2.6.1 Integer Literals (4)

          • 7.2.6.2 Character Literals (4)

            • 7.2.6.2.1 Wide and Non-wide Characters (5)

            • 7.2.6.2.2 Escape Sequences to Represent Character Literals (5)

          • 7.2.6.3 String Literals (4)

          • 7.2.6.4 Floating-point Literals (4)

          • 7.2.6.5 Fixed-Point Literals (4)

      • 7.3 Preprocessing (2)

      • 7.4 IDL Grammar (2)

        • 7.4.1 Building Block Core Data Types (3)

          • 7.4.1.1 Purpose (4)

          • 7.4.1.2 Dependencies with other Building Blocks (4)

          • 7.4.1.3 Syntax (4)

          • 7.4.1.4 Explanations and Semantics (4)

            • 7.4.1.4.1 IDL Specification (5)

            • 7.4.1.4.2 Modules (5)

            • 7.4.1.4.3 Constants (5)

            • 7.4.1.4.4 Data Types (5)

              • 7.4.1.4.4.1 Referencing Types (6)

              • 7.4.1.4.4.2 Basic Types (6)

                • 7.4.1.4.4.2.1 Integer Types (7)

                • 7.4.1.4.4.2.2 Floating-Point Types (7)

                • 7.4.1.4.4.2.3 Char Type (7)

                • 7.4.1.4.4.2.4 Wide Char Type (7)

                • 7.4.1.4.4.2.5 Boolean Type (7)

                • 7.4.1.4.4.2.6 Octet Type (7)

              • 7.4.1.4.4.3 Template Types (6)

                • 7.4.1.4.4.3.1 Sequences (7)

                • 7.4.1.4.4.3.2 Strings (7)

                • 7.4.1.4.4.3.3 Wstrings (7)

                • 7.4.1.4.4.3.4 Fixed Type (7)

              • 7.4.1.4.4.4 Constructed Types (6)

                • 7.4.1.4.4.4.1 Structures (7)

                • 7.4.1.4.4.4.2 Unions (7)

                • 7.4.1.4.4.4.3 Enumerations (7)

                • 7.4.1.4.4.4.4 Constructed Recursive Types and Forward Declarations (7)

              • 7.4.1.4.4.5 Arrays (6)

              • 7.4.1.4.4.6 Native Types (6)

              • 7.4.1.4.4.7 Naming Data Types (6)

          • 7.4.1.5 Specific Keywords (4)

        • 7.4.2 Building Block Any (3)

          • 7.4.2.1 Purpose (4)

          • 7.4.2.2 Dependencies with other Building Blocks (4)

          • 7.4.2.3 Syntax (4)

          • 7.4.2.4 Explanations and Semantics (4)

          • 7.4.2.5 Specific Keywords (4)

        • 7.4.3 Building Block Interfaces – Basic (3)

          • 7.4.3.1 Purpose (4)

          • 7.4.3.2 Dependencies with other Building Blocks (4)

          • 7.4.3.3 Syntax (4)

          • 7.4.3.4 Explanations and Semantics (4)

            • 7.4.3.4.1 IDL specification (5)

            • 7.4.3.4.2 Exceptions (5)

            • 7.4.3.4.3 Interfaces (5)

              • 7.4.3.4.3.1 Interface Header (6)

              • 7.4.3.4.3.2 Interface Inheritance (6)

                • 7.4.3.4.3.2.1 Inheritance Rules (7)

              • 7.4.3.4.3.3 Interface Body (6)

                • 7.4.3.4.3.3.1 Operations (7)

                • 7.4.3.4.3.3.2 Attributes (7)

              • 7.4.3.4.3.4 Forward Declaration (6)

          • 7.4.3.5 Specific Keywords (4)

        • 7.4.4 Building Block Interfaces – Full (3)

          • 7.4.4.1 Purpose (4)

          • 7.4.4.2 Dependencies with other Building Blocks (4)

          • 7.4.4.3 Syntax (4)

          • 7.4.4.4 Explanations and Semantics (4)

          • 7.4.4.5 Specific Keywords (4)

        • 7.4.5 Building Block Value Types (3)

          • 7.4.5.1 Purpose (4)

          • 7.4.5.2 Dependencies with other Building Blocks (4)

          • 7.4.5.3 Syntax (4)

          • 7.4.5.4 ‎‎‎Explanations and Semantics (4)

            • 7.4.5.4.1 Concrete (Stateful) Value Types (5)

              • 7.4.5.4.1.1 Value Header (6)

              • 7.4.5.4.1.2 Value Inheritance Specification (6)

              • 7.4.5.4.1.3 Value Element (6)

                • 7.4.5.4.1.3.1 State Members (7)

                • 7.4.5.4.1.3.2 Initializers (7)

            • 7.4.5.4.2 Forward Declarations (5)

          • 7.4.5.5 Specific Keywords (4)

        • 7.4.6 Building Block CORBA-Specific – Interfaces (3)

          • 7.4.6.1 Purpose (4)

          • 7.4.6.2 Dependencies with other Building Blocks (4)

          • 7.4.6.3 Syntax (4)

          • 7.4.6.4 Explanations and Semantics (4)

            • 7.4.6.4.1 Interface Repository Related Declarations (5)

              • 7.4.6.4.1.1 Repository Identity Declaration (6)

              • 7.4.6.4.1.2 Repository Identifier Prefix Declaration (6)

              • 7.4.6.4.1.3 Repository Id Conflict (6)

              • 7.4.6.4.1.4 Imports (6)

            • 7.4.6.4.2 Object (5)

            • 7.4.6.4.3 Local Interfaces (5)

            • 7.4.6.4.4 Use of Native types (5)

            • 7.4.6.4.5 One-way Operations (5)

            • 7.4.6.4.6 Context Expressions (5)

            • 7.4.6.4.7 CORBA Module (5)

          • 7.4.6.5 Specific Keywords (4)

        • 7.4.7 Building Block CORBA-Specific – Value Types (3)

          • 7.4.7.1 Purpose (4)

          • 7.4.7.2 Dependencies with other Building Blocks (4)

          • 7.4.7.3 Syntax (4)

          • 7.4.7.4 Explanations and Semantics (4)

            • 7.4.7.4.1 Boxed Value Types (5)

            • 7.4.7.4.2 Abstract Value Types and Interfaces (5)

              • 7.4.7.4.2.1 Abstract Value Types (6)

              • 7.4.7.4.2.2 Abstract Interfaces (6)

            • 7.4.7.4.3 Value Inheritance Rules (5)

            • 7.4.7.4.4 Custom Marshaling (5)

            • 7.4.7.4.5 Truncatable (5)

            • 7.4.7.4.6 Value Base (5)

          • 7.4.7.5 Specific Keywords (4)

        • 7.4.8 Building Block Components – Basic (3)

          • 7.4.8.1 Purpose (4)

          • 7.4.8.2 Dependencies with other Building Blocks (4)

          • 7.4.8.3 Syntax (4)

          • 7.4.8.4 Explanations and Semantics (4)

            • 7.4.8.4.1 ‎Component Header (5)

            • 7.4.8.4.2 Component Body (5)

              • 7.4.8.4.2.1 Facets (6)

              • 7.4.8.4.2.2 Receptacles (6)

              • 7.4.8.4.2.3 Attributes (6)

            • 7.4.8.4.3 Forward Declaration (5)

          • 7.4.8.5 Specific Keywords (4)

        • 7.4.9 Building Block Components – Homes (3)

          • 7.4.9.1 Purpose (4)

          • 7.4.9.2 Dependencies with Other Building Blocks (4)

          • 7.4.9.3 Syntax (4)

          • 7.4.9.4 Explanations and Semantics (4)

            • 7.4.9.4.1 ‎Home Header (5)

            • 7.4.9.4.2 Home Body (5)

          • 7.4.9.5 Specific Keywords (4)

        • 7.4.10 Building Block CCM-Specific (3)

          • 7.4.10.1 Purpose (4)

          • 7.4.10.2 Dependencies with other Building Blocks (4)

          • 7.4.10.3 Syntax (4)

          • 7.4.10.4 Explanations and Semantics (4)

            • 7.4.10.4.1 Event Support (5)

              • 7.4.10.4.1.1 Event Types (6)

                • 7.4.10.4.1.1.1 ‎Regular Event Types (7)

                • 7.4.10.4.1.1.2 Abstract Event Types (7)

                • 7.4.10.4.1.1.3 Forward Declarations (7)

                • 7.4.10.4.1.1.4 Event Type Inheritance (7)

              • 7.4.10.4.1.2 Event Ports (6)

                • 7.4.10.4.1.2.1 Event Sources – Publishers and Emitters (7)

                  • 7.4.10.4.1.2.1.1 Publishers (8)

                  • 7.4.10.4.1.2.1.2 Emitters (8)

                • 7.4.10.4.1.2.2 Event Sinks (7)

            • 7.4.10.4.2 Home Extensions (5)

              • 7.4.10.4.2.1 Supported Interfaces (6)

              • 7.4.10.4.2.2 Primary Keys (6)

              • 7.4.10.4.2.3 Finder Operations (6)

            • 7.4.10.4.3 Multiple Uses (5)

            • 7.4.10.4.4 Alignment with CORBA-specific Features related to Interfaces and Value Types (5)

              • 7.4.10.4.4.1 Supported Interfaces in Components (6)

              • 7.4.10.4.4.2 Object Root (6)

          • 7.4.10.5 Specific Keywords (4)

        • 7.4.11 Building Block Components – Ports and Connectors (3)

          • 7.4.11.1 Purpose (4)

          • 7.4.11.2 Dependencies with other Building Blocks (4)

          • 7.4.11.3 Syntax (4)

          • 7.4.11.4 Explanations and Semantics (4)

            • 7.4.11.4.1 Extended Ports (5)

              • 7.4.11.4.1.1 Port Type Declaration (6)

            • 7.4.11.4.2 Port Declaration (5)

            • 7.4.11.4.3 Connectors (5)

          • 7.4.11.5 Specific Keywords (4)

        • 7.4.12 Building Block Template Modules (3)

          • 7.4.12.1 Purpose (4)

          • 7.4.12.2 Dependencies with other Building Blocks (4)

          • 7.4.12.3 Syntax (4)

          • 7.4.12.4 Explanations and Semantics (4)

            • 7.4.12.4.1 Template Module Declaration (5)

            • 7.4.12.4.2 Template Module Instantiation (5)

            • 7.4.12.4.3 References to a Template Module (5)

          • 7.4.12.5 Specific Keywords (4)

        • 7.4.13 Building Block Extended Data-Types (3)

          • 7.4.13.1 Purpose (4)

          • 7.4.13.2 Dependencies with other Building Blocks (4)

          • 7.4.13.3 Syntax (4)

          • 7.4.13.4 Explanations and Semantics (4)

            • 7.4.13.4.1 Structures with Single Inheritance and/or Void Content (5)

            • 7.4.13.4.2 Union Discriminators (5)

            • 7.4.13.4.3 Map, Bitset and Bitmap Types (5)

              • 7.4.13.4.3.1 Maps (6)

              • 7.4.13.4.3.2 Bit Sets (including Bit Fields) (6)

              • 7.4.13.4.3.3 Bit Masks (6)

            • 7.4.13.4.4 Integers restricted to holding 8-bits of information (5)

            • 7.4.13.4.5 Explicitly-named Integer Types (5)

            • 7.4.13.4.6 Ranges for all Integer Types (5)

          • 7.4.13.5 Specific Keywords (4)

        • 7.4.14 Building Block Anonymous Types (3)

          • 7.4.14.1 Purpose (4)

          • 7.4.14.2 Dependencies with other Building Blocks (4)

          • 7.4.14.3 Syntax (4)

          • 7.4.14.4 Explanations and Semantics (4)

          • 7.4.14.5 Specific keywords (4)

        • 7.4.15 Building Block Annotations (3)

          • 7.4.15.1 Purpose (4)

          • 7.4.15.2 Dependencies with other Building Blocks (4)

          • 7.4.15.3 Syntax (4)

          • 7.4.15.4 Explanations and Semantics (4)

            • 7.4.15.4.1 Defining Annotations (5)

            • 7.4.15.4.2 Applying Annotations (5)

          • 7.4.15.5 Specific Keywords (4)

        • 7.4.16 Relationships between the Building Blocks (3)

      • 7.5 Names and Scoping (2)

        • 7.5.1 Qualified Names (3)

        • 7.5.2 Scoping Rules and Name Resolution (3)

        • 7.5.3 Special Scoping Rules for Type Names (3)

    • 8 Standardized Annotations (1)

      • 8.1 Overview (2)

      • 8.2 Introduction (2)

        • 8.2.1 Rules for Defining Standardized Annotations (3)

        • 8.2.2 Rules for Using Standardized Annotations (3)

      • 8.3 Standardized Groups of Annotations (2)

        • 8.3.1 Group of Annotations General Purpose (3)

          • 8.3.1.1 @id Annotation (4)

          • 8.3.1.2 @autoid Annotation (4)

          • 8.3.1.3 @optional Annotation (4)

          • 8.3.1.4 @position Annotation (4)

          • 8.3.1.5 @value Annotation (4)

          • 8.3.1.6 @extensibility Annotation (4)

          • 8.3.1.7 @final Annotation (4)

          • 8.3.1.8 @appendable Annotation (4)

          • 8.3.1.9 @mutable Annotation (4)

        • 8.3.2 Group of Annotations Data Modeling (3)

          • 8.3.2.1 @key Annotation (4)

          • 8.3.2.2 @must_understand Annotation (4)

          • 8.3.2.3 @default_literal Annotation (4)

        • 8.3.3 Group of Annotations: Units and Ranges (3)

          • 8.3.3.1 @default Annotation (4)

          • 8.3.3.2 @range Annotation (4)

          • 8.3.3.3 @min Annotation (4)

          • 8.3.3.4 @max Annotation (4)

          • 8.3.3.5 @unit Annotation (4)

        • 8.3.4 Group of Annotations Data Implementation (3)

          • 8.3.4.1 @bit_bound Annotation (4)

          • 8.3.4.2 @external Annotation (4)

          • 8.3.4.3 @nested Annotation (4)

        • 8.3.5 Group of Annotations Code Generation (3)

          • 8.3.5.1 @verbatim Annotation (4)

        • 8.3.6 Group of Annotations Interfaces (3)

          • 8.3.6.1 @service Annotation (4)

          • 8.3.6.2 @oneway Annotation (4)

          • 8.3.6.3 @ami Annotation (4)

    • 9 Profiles (1)

      • 9.1 Overview (2)

      • 9.2 CORBA and CCM Profiles (2)

        • 9.2.1 Plain CORBA Profile (3)

        • 9.2.2 Minimum CORBA Profile (3)

        • 9.2.3 CCM Profile (3)

        • 9.2.4 CCM with Generic Interaction Support Profile (3)

      • 9.3 DDS Profiles (2)

        • 9.3.1 Plain DDS Profile (3)

        • 9.3.2 Extensible DDS Profile (3)

        • 9.3.3 RPC over DDS Profile (3)

    • Annex A: Consolidated IDL Grammar (1)

  • IDL to C++03 1.3 (cpp03)

    • Preface (1)

    • 1 Scope (1)

      • 1.1 General (2)

      • 1.2 Alignment with CORBA (2)

    • 2 Conformance/Compliance (1)

      • 2.1 General (2)

      • 2.2 C++ Implementation Requirements (2)

      • 2.3 No Implementation Descriptions (2)

      • 2.4 Definition of CORBA Compliance (2)

    • 3 Normative References (1)

      • 3.1 General (2)

    • 4 Additional Information (1)

      • 4.1 Acknowledgements (2)

    • 5 C++ Language Mapping Specification (1)

      • 5.1 Scoped Names (2)

      • 5.2 C++ Type Size Requirements (2)

      • 5.3 CORBA Module (2)

      • 5.4 Mapping for Modules (2)

      • 5.5 Mapping for Interfaces (2)

      • 5.6 Mapping for Constants (2)

      • 5.7 Mapping for Basic Data Types (2)

      • 5.8 Mapping for Enums (2)

      • 5.9 Mapping for String Types (2)

      • 5.10 Mapping for Wide String Types (2)

      • 5.11 Mapping for Structured Types (2)

      • 5.12 Mapping for Struct Types (2)

      • 5.13 Mapping for Fixed Types (2)

      • 5.14 Mapping for Union Types (2)

      • 5.15 Mapping for Sequence Types (2)

      • 5.16 Mapping For Array Types (2)

      • 5.17 Mapping For Typedefs (2)

      • 5.18 Mapping for the Any Type (2)

      • 5.19 Mapping for Valuetypes (2)

      • 5.20 Mapping for Abstract Interfaces (2)

      • 5.21 Mapping for Exception Types (2)

      • 5.22 Mapping For Operations and Attributes (2)

      • 5.23 Implicit Arguments to Operations (2)

      • 5.24 Argument Passing Considerations (2)

      • 5.25 Mapping of Pseudo Objects to C++ (2)

      • 5.26 Usage (2)

      • 5.27 Mapping Rules (2)

      • 5.28 Relation to the C PIDL Mapping (2)

      • 5.29 Environment (2)

      • 5.30 NamedValue (2)

      • 5.31 NVList (2)

      • 5.32 Request (2)

      • 5.33 Context (2)

      • 5.34 TypeCode (2)

      • 5.35 ORB (2)

      • 5.36 Object (2)

      • 5.37 Local Object (2)

      • 5.38 Server-Side Mapping (2)

      • 5.39 Implementing Interfaces (2)

      • 5.40 Servant Memory Management Considerations (2)

      • 5.41 Implementing Operations (2)

      • 5.42 Mapping of DSI to C++ (2)

      • 5.43 PortableServer Functions (2)

      • 5.44 Mapping for PortableServer::ServantManager (2)

      • 5.45 C++ Definitions for CORBA (2)

      • 5.46 Alternative Mappings For C++ Dialects (2)

      • 5.47 C++ Keywords (2)

  • IDL to C++11 1.5 (cpp11)

    • 1 Scope (1)

    • 2 Conformance (1)

      • 2.1 C++ Implementation Requirements (2)

      • 2.2 No Implementation Descriptions (2)

    • 3 Normative References (1)

    • 4 Symbols and Abbreviated Terms (1)

    • 5 Additional Information (1)

      • 5.1 Changes to Adopted OMG Specifications (2)

      • 5.2 Acknowledgments (2)

    • 6 C++11 Language Mapping Specification (1)

      • 6.1 IDL Type Traits (2)

      • 6.2 Anonymous IDL Types (2)

      • 6.3 Scoped Names (2)

      • 6.4 C++ Type Size Requirements (2)

      • 6.5 Mapping for Modules (2)

      • 6.6 Mapping for Basic Data Types (2)

      • 6.7 Mapping for Interfaces (2)

        • 6.7.1 Reference Types (3)

        • 6.7.2 Object Reference Types (3)

        • 6.7.3 Widening Object References (3)

        • 6.7.4 Object Reference Operations (3)

        • 6.7.5 Nil Object Reference (3)

        • 6.7.6 Narrowing Object References (3)

        • 6.7.7 Mapping for Operations and Attributes (3)

        • 6.7.8 Argument Passing Considerations (3)

        • 6.7.9 Type trait (3)

      • 6.8 Mapping for Constants (2)

      • 6.9 Mapping for Enums (2)

      • 6.10 Mapping for String Types (2)

      • 6.11 Mapping for Wide String Types (2)

      • 6.12 Mapping for Sequence Types (2)

      • 6.13 Mapping for Array Types (2)

      • 6.14 Mapping for Structured Types (2)

        • 6.14.1 Mapping for Struct Types (3)

        • 6.14.2 Mapping for Union Types (3)

      • 6.15 Mapping for Fixed Types (2)

      • 6.16 Mapping for Typedefs (2)

      • 6.17 Mapping for the Any Type (2)

        • 6.17.1 Handling Typed Values (3)

        • 6.17.2 Insertion into an any (3)

        • 6.17.3 Extraction from any (3)

        • 6.17.4 TypeCode Replacement (3)

      • 6.18 Mapping for Valuetypes (2)

        • 6.18.1 Valuetype Data Members (3)

        • 6.18.2 Constructors, Assignment Operators, and Destructors (3)

        • 6.18.3 Valuetype Operations (3)

        • 6.18.4 Valuetype Example (3)

        • 6.18.5 ValueBase default methods (3)

        • 6.18.6 Valuetype trait member types (3)

        • 6.18.7 Value Boxes (3)

          • 6.18.7.1 Parameter Passing for Underlying Boxed Type (4)

          • 6.18.7.2 Provided signature (4)

        • 6.18.8 Abstract Valuetypes (3)

        • 6.18.9 Valuetype Inheritance (3)

        • 6.18.10 Valuetype Factories (3)

          • 6.18.10.1 ValueFactoryBase Class (4)

          • 6.18.10.2 Type-Specific Value Factories (4)

          • 6.18.10.3 Unmarshaling Issues (4)

        • 6.18.11 Custom Marshaling (3)

      • 6.19 Mapping for Abstract Interfaces (2)

        • 6.19.1 Abstract Interface Base (3)

        • 6.19.2 Client Side Mapping (3)

      • 6.20 Mapping for Exception Types (2)

        • 6.20.1 UnknownUserException (3)

        • 6.20.2 Any Insertion and Extraction for Exceptions (3)

      • 6.21 Mapping of Pseudo Objects to C++ (2)

      • 6.22 TypeCode (2)

        • 6.22.1 TypeCode Interface (3)

        • 6.22.2 TypeCode C++ Class (3)

      • 6.23 ORB (2)

        • 6.23.1 Mapping of ORB Initialization Operations (3)

      • 6.24 Object (2)

      • 6.25 Local Object (2)

      • 6.26 Server-Side Mapping (2)

        • 6.26.1 Implementing Interfaces (3)

        • 6.26.2 Mapping of PortableServer::Servant (3)

        • 6.26.3 Servant references (3)

        • 6.26.4 Servant argument passing (3)

        • 6.26.5 Skeleton Operations (3)

        • 6.26.6 Inheritance-Based Interface Implementation (3)

        • 6.26.7 Implementing Operations (3)

        • 6.26.8 Delegation-Based Interface Implementation (3)

      • 6.27 Mapping of DSI to C++ (2)

        • 6.27.1 Mapping of ServerRequest to C++ (3)

        • 6.27.2 Mapping of PortableServer Dynamic Implementation Routine (3)

      • 6.28 PortableServer Functions (2)

      • 6.29 Mapping for PortableServer::ServantManager (2)

        • 6.29.1 Mapping for Cookie (3)

        • 6.29.2 ServantManagers and AdapterActivators (3)

        • 6.29.3 Server Side Mapping for Abstract Interfaces (3)

      • 6.30 C++11 Protected names (2)

      • 6.31 Mapping for IDL 4 Extended Data-Types (2)

        • 6.31.1 Maps (3)

        • 6.31.2 Integers restricted to holding 8-bits of information (3)

        • 6.31.3 Structures with Single Inheritance (3)

        • 6.31.4 Bit Masks (3)

        • 6.31.5 Bit Sets (3)

  • IDL to Java 1.3 (java)

    • Preface (1)

    • 1 Scope (1)

      • 1.1 Alignment with CORBA (2)

    • 2 Conformance/Compliance (1)

      • 2.1 Definition of CORBA Compliance (2)

    • 3 Additional Information (1)

      • 3.1 Acknowledgements (2)

    • 4 IDL to Java Language Mapping Specification (1)

      • 4.1 Introduction (2)

        • 4.1.1 org.omg.* Packages (3)

      • 4.2 Names (2)

        • 4.2.1 Reserved Names (3)

      • 4.3 Mapping of Module (2)

        • 4.3.1 Example (3)

      • 4.4 Mapping for Basic Types (2)

        • 4.4.1 Introduction (3)

        • 4.4.2 Character Types (3)

        • 4.4.3 Octet (3)

        • 4.4.4 String Types (3)

        • 4.4.5 Integer Types (3)

        • 4.4.6 Floating Point Types (3)

        • 4.4.7 Fixed Point Types (3)

        • 4.4.8 Future Long Double Types (3)

      • 4.5 Helpers (2)

        • 4.5.1 Helpers for Boxed Values (3)

        • 4.5.2 Helper Classes (except Boxed Values) (3)

        • 4.5.3 Examples (3)

      • 4.6 Mapping for Constant (2)

        • 4.6.1 Constants Within An Interface (3)

        • 4.6.2 Constants Not Within An Interface (3)

      • 4.7 Mapping for Enum (2)

        • 4.7.1 Example (3)

      • 4.8 Mapping for Struct (2)

        • 4.8.1 Example (3)

      • 4.9 Mapping for Union (2)

        • 4.9.1 Example (3)

      • 4.10 Mapping for Sequence (2)

        • 4.10.1 Example (3)

      • 4.11 Mapping for Array (2)

        • 4.11.1 Example (3)

      • 4.12 Mapping for Interface (2)

        • 4.12.1 Basics (3)

        • 4.12.2 Parameter Passing Modes (3)

        • 4.12.3 Context Arguments to Operations (3)

      • 4.13 Mapping for Value Type (2)

        • 4.13.1 Java Interfaces Used For Value Types (3)

        • 4.13.2 Basics For Stateful Value Types (3)

        • 4.13.3 Abstract Value Types (3)

        • 4.13.4 CORBA::ValueBase (3)

        • 4.13.5 Example A (3)

        • 4.13.6 Example B (3)

        • 4.13.7 Parameter Passing Modes (3)

        • 4.13.8 Value Factory and Marshaling (3)

      • 4.14 Value Box Types (2)

        • 4.14.1 Generic BoxedValueHelper Interface (3)

        • 4.14.2 Boxed Primitive Types (3)

        • 4.14.3 Complex Types (3)

      • 4.15 Mapping for Exception (2)

        • 4.15.1 User Defined Exceptions (3)

        • 4.15.2 System Exceptions (3)

        • 4.15.3 Indirection Exception (3)

      • 4.16 Mapping for the Any Type (2)

      • 4.17 Mapping for Certain Nested Types (2)

        • 4.17.1 Example (3)

      • 4.18 Mapping for Typedef (2)

        • 4.18.1 Simple IDL types (3)

        • 4.18.2 Complex IDL types (3)

      • 4.19 Mapping Pseudo Objects to Java (2)

        • 4.19.1 Introduction (3)

        • 4.19.2 Certain Exceptions (3)

        • 4.19.3 Environment (3)

        • 4.19.4 NamedValue (3)

        • 4.19.5 NVList (3)

        • 4.19.6 ExceptionList (3)

        • 4.19.7 Context (3)

        • 4.19.8 Request (3)

        • 4.19.9 TypeCode (3)

        • 4.19.10 ORB (3)

        • 4.19.11 CORBA::Object (3)

        • 4.19.12 Principal (3)

      • 4.20 Server-Side Mapping (2)

        • 4.20.1 Introduction (3)

        • 4.20.2 Implementing Interfaces (3)

        • 4.20.3 Mapping for PortableServer::ServantManager (3)

      • 4.21 Java ORB Portability Interfaces (2)

        • 4.21.1 Introduction (3)

        • 4.21.2 Overall Architecture (3)

        • 4.21.3 Streamable APIs (3)

        • 4.21.4 Streaming APIs (3)

        • 4.21.5 Custom Streaming APIs (3)

        • 4.21.6 Portability Stub and Skeleton Interfaces (3)

        • 4.21.7 Delegate Stub (3)

        • 4.21.8 Servant Delegate (3)

        • 4.21.9 ORB Initialization (3)

      • 4.22 Java Mapping for CORBA Messaging (2)

        • 4.22.1 Introduction (3)

        • 4.22.2 Mapping of Native Types (3)

    • Index (1)

Copyright © 2023, OpenDDS Foundation
Made with Sphinx and @pradyunsg's Furo