This specification is a response to the OMG RFP "eXtremely Resource Constrained Environments DDS (DDS- XRCE)"
It defines a DDS-XRCE Service based on a client-server protocol between a resource constrained, low-powered device (client) and an Agent (the server) that enables the device to communicate with a DDS network and publish and subscribe to topics in a DDS domain. The specifications purpose and scope is to ensure that applications based on different vendor’ implementations of the DDS-XRCE Service are compatible and interoperable.
This is the Joint submission by RTI, TwinOaks, and eProsima. Updated September 2017, OMG document number mars/2017-09-18.
This specification provides the following additional facilities to DDS [DDS] implementations and users:
* Type System. The specification defines a model of the data types that can be used for DDS Topics. The type system is formally defined using UML. The Type System is de- fined in section 7.2 and its subsections. The structural model of this system is defined in the Type System Model in section 7.2.2. The framework under which types can be modi- fied over time is summarized in section 7.2.3, “Type Extensibility and Mutability.” The concrete rules under which the concepts from 7.2.2 and 7.2.3 come together to define compatibility in the face of such modifications are defined in section 7.2.4, “Type Com- patibility.”
* Type Representations. The specification defines the ways in which types described by the Type System may be externalized such that they can be stored in a file or communi- cated over a network. The specification adds additional Type Representations beyond the
DDS-XTypes version 1.2 1
one (IDL [IDL41]) already implied by the DDS specification. Several Type Representa- tions are specified in the subsections of section 7.3. These include IDL (7.3.1), XML (7.3.2), XML Schema (XSD) (7.3.3), and TypeObject (7.3.4).
* Data Representation. The specification defines multiple ways in which objects of the types defined by the Type System may be externalized such that they can be stored in a file or communicated over a network. (This is also commonly referred as “data serializa- tion” or “data marshaling.”) The specification extends and generalizes the mechanisms already defined by the DDS Interoperability specification [RTPS]. The specification in- cludes Data Representations that support data type evolution, that is, allow a data type to change in certain well-defined ways without breaking communication. Two Data Repre- sentations are specified in the subsections of section 7.4. These are Extended CDR (7.4.1, 7.4.2, and 7.4.3) and XML (7.4.4).
* Language Binding. The specification defines multiple ways in which applications can access the state of objects defined by the Type System. The submission extends and gen- eralizes the mechanism currently implied by the DDS specification (“Plain Language Binding”) and adds a Dynamic Language Binding that allows application to access data without compile-time knowledge of its type. The specification also defines an API to de- fine and manipulate data types programmatically. Two Language Bindings are specified in the subsections of section 7.5. These are the Plain Language Binding and the Dynamic Language Binding.
This document describes the Interface Definition Language (IDL) version 4.2 specification published by the Object Management Group (OMG). It defines the syntax and semantics of IDL, which is used to define interfaces, data types, exceptions, modules and other elements used in CORBA, CCM, and other OMG specifications. The document includes sections on lexical conventions, grammar, scoping rules, standardized annotations, and CORBA/CCM profiles supported by IDL. It is intended to provide a standard way to define interfaces that are independent of specific programming languages.
The document describes version 1.1 of the DDS Security specification which defines a security model and plugin architecture to provide information assurance capabilities to DDS implementations, including defining builtin plugins for authentication, access control, encryption, and logging; it also lists normative references and provides an overview of the specification's scope and conformance points.
NOTE: This document has been obsoleted by the Adopted DDS Specification
This is the September 2013 Draft Submission to the OMG DDS Security Specification
The OMG Application Instrumentation Specification provides a simple way to instrument applications so that their internal state can be accessed by remote applications and tools in order to supervise the correct operation of the system. All this with minimal impact on the application so that it can be used even within real-time threads. The Application Instrumentation API is available in C and Java.
This specification was adopted (in Beta form) by the OMG in September 2013
NOTE: This document has been obsoleted by the Adopted DDS Specification
OMG DDS Security Draft Specification. This is the 5th Revised Submission to the DDS Security Specification.
Also accessible from the OMG at:
http://www.omg.org/members/cgi-bin/doc?mars/13-05-17.pdf
NOTE: This document has been obsoleted by the Adopted DDS Specification
OMG DDS Security Draft Specification. This is the 4th Revised Submission to the DDS Security Specification.
Also accessible from the OMG at:
http://www.omg.org/members/cgi-bin/doc?mars/13-02-15.pdf
Draft submission to the OMG RPC over DDS RPF.
This draft standard defines a Remote Procedure Call (RPC) framework using the basic building blocks of DDS, such as topics, types, and entities (e.g., DataReader, DataWriter) to provide request/reply semantics. It defines distributed services, characterized by a service interface, which serves as a shareable contract between service provider and a service consumer. It supports synchronous and asynchronous method invocation.
This specification provides the following additional facilities to DDS [DDS] implementations and users:
* Type System. The specification defines a model of the data types that can be used for DDS Topics. The type system is formally defined using UML. The Type System is de- fined in section 7.2 and its subsections. The structural model of this system is defined in the Type System Model in section 7.2.2. The framework under which types can be modi- fied over time is summarized in section 7.2.3, “Type Extensibility and Mutability.” The concrete rules under which the concepts from 7.2.2 and 7.2.3 come together to define compatibility in the face of such modifications are defined in section 7.2.4, “Type Com- patibility.”
* Type Representations. The specification defines the ways in which types described by the Type System may be externalized such that they can be stored in a file or communi- cated over a network. The specification adds additional Type Representations beyond the
DDS-XTypes version 1.2 1
one (IDL [IDL41]) already implied by the DDS specification. Several Type Representa- tions are specified in the subsections of section 7.3. These include IDL (7.3.1), XML (7.3.2), XML Schema (XSD) (7.3.3), and TypeObject (7.3.4).
* Data Representation. The specification defines multiple ways in which objects of the types defined by the Type System may be externalized such that they can be stored in a file or communicated over a network. (This is also commonly referred as “data serializa- tion” or “data marshaling.”) The specification extends and generalizes the mechanisms already defined by the DDS Interoperability specification [RTPS]. The specification in- cludes Data Representations that support data type evolution, that is, allow a data type to change in certain well-defined ways without breaking communication. Two Data Repre- sentations are specified in the subsections of section 7.4. These are Extended CDR (7.4.1, 7.4.2, and 7.4.3) and XML (7.4.4).
* Language Binding. The specification defines multiple ways in which applications can access the state of objects defined by the Type System. The submission extends and gen- eralizes the mechanism currently implied by the DDS specification (“Plain Language Binding”) and adds a Dynamic Language Binding that allows application to access data without compile-time knowledge of its type. The specification also defines an API to de- fine and manipulate data types programmatically. Two Language Bindings are specified in the subsections of section 7.5. These are the Plain Language Binding and the Dynamic Language Binding.
This document describes the Interface Definition Language (IDL) version 4.2 specification published by the Object Management Group (OMG). It defines the syntax and semantics of IDL, which is used to define interfaces, data types, exceptions, modules and other elements used in CORBA, CCM, and other OMG specifications. The document includes sections on lexical conventions, grammar, scoping rules, standardized annotations, and CORBA/CCM profiles supported by IDL. It is intended to provide a standard way to define interfaces that are independent of specific programming languages.
The document describes version 1.1 of the DDS Security specification which defines a security model and plugin architecture to provide information assurance capabilities to DDS implementations, including defining builtin plugins for authentication, access control, encryption, and logging; it also lists normative references and provides an overview of the specification's scope and conformance points.
NOTE: This document has been obsoleted by the Adopted DDS Specification
This is the September 2013 Draft Submission to the OMG DDS Security Specification
The OMG Application Instrumentation Specification provides a simple way to instrument applications so that their internal state can be accessed by remote applications and tools in order to supervise the correct operation of the system. All this with minimal impact on the application so that it can be used even within real-time threads. The Application Instrumentation API is available in C and Java.
This specification was adopted (in Beta form) by the OMG in September 2013
NOTE: This document has been obsoleted by the Adopted DDS Specification
OMG DDS Security Draft Specification. This is the 5th Revised Submission to the DDS Security Specification.
Also accessible from the OMG at:
http://www.omg.org/members/cgi-bin/doc?mars/13-05-17.pdf
NOTE: This document has been obsoleted by the Adopted DDS Specification
OMG DDS Security Draft Specification. This is the 4th Revised Submission to the DDS Security Specification.
Also accessible from the OMG at:
http://www.omg.org/members/cgi-bin/doc?mars/13-02-15.pdf
Draft submission to the OMG RPC over DDS RPF.
This draft standard defines a Remote Procedure Call (RPC) framework using the basic building blocks of DDS, such as topics, types, and entities (e.g., DataReader, DataWriter) to provide request/reply semantics. It defines distributed services, characterized by a service interface, which serves as a shareable contract between service provider and a service consumer. It supports synchronous and asynchronous method invocation.
This is the DDS Security adopted specification.
It was adopted as an OMG standard in June 2014.
The official URL is http://www.omg.org/spec/DDS-SECURITY/
This the the formal version 1.0 of the DDS Security specification released September 2016. OMG document number formal/2016-08-01.
DDS-Security defines the Security Model and Service Plugin Interface (SPI) architecture for compliant DDS implementations.
The DDS Security Model is enforced by the invocation of these SPIs by the DDS implementation. This specification also defines a set of builtin implementations of these SPIs.
* The specified builtin SPI implementations enable out-of-the box security and interoperability between compliant DDS applications.
* The use of SPIs allows DDS users to customize the behavior and technologies that the DDS implementations use for Information Assurance, specifically customization of Authentication, Access Control, Encryption, Message Authentication, Digital Signing, Logging and Data Tagging.
This document describes a specification for performing remote procedure calls over the Data Distribution Service (DDS). It provides machine-readable files for C++ and Java implementations and replaces an earlier beta 1 version. The document outlines copyrights and licensing for using the specification and contacting representatives from companies involved in its development. It also details OMG's issue reporting process for providing feedback.
This document provides a C++ language mapping specification for CORBA. It defines how CORBA IDL constructs like modules, interfaces, constants, data types etc. are mapped to equivalent C++ constructs. It covers mapping rules for basic types, structured types, exceptions, operations and other CORBA core components. The document also specifies how CORBA services like the ORB, object references and portable servants are mapped to C++. It aims to provide an interoperable mapping standard for CORBA implementations and applications developed in the C++ language.
This document provides the UML 2.0 Superstructure Specification. It defines the syntax and semantics of various UML constructs such as classes, components, associations, interfaces, etc. through a set of normative references, terms and definitions, class descriptions and diagrams. The specification is published by the Object Management Group for industry practitioners to standardize on a common modeling language.
This document describes release notes and terms of use for CADWorx Plant Professional software. It provides fixes and improvements to database sync performance, legacy keywords, specification editor size range list synchronization, and OAL handling for modeling router. The document also outlines copyright, license agreement terms, limitations of liability, export controls, and trademarks related to the software.
Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...Remedy IT
Remedy IT revised submission for the Unified Component Model (UCM) for Distributed, Real-Time and Embedded Systems.
Change of address Remedy IT:
Melkrijder 11
3861 SG Nijkerk
tel. +31 (0)88 053 0000
This document provides a performance tuning guide for Informatica PowerCenter Version 9.0.1. It discusses identifying and eliminating different types of bottlenecks, including thread bottlenecks, target bottlenecks, source bottlenecks, mapping bottlenecks, and session bottlenecks. The guide explains how to use thread statistics to find bottlenecks and provides examples of eliminating bottlenecks by optimizing threads, targets, sources, mappings, and sessions. It is intended to help users optimize PowerCenter performance.
This document is the user guide for CADWorx Plant version 2012 R1. It contains information about copyright, terms of use, warranties and liabilities for the software. The guide discusses startup defaults, support directories, and setup options for sizes, specifications, borders, layers and configuration files. It provides instructions for adding, editing and changing components and specifications in CADWorx Plant. It also covers optional items, local editing and accessing ISOGEN data. The document is intended to instruct users on the proper use and settings for CADWorx Plant 2012 R1.
This document is the user manual for NI Multisim. It provides support information for technical support and product information. It also includes important information such as the warranty, copyright, trademarks, and patents. The manual contains information to help users install, operate, and troubleshoot NI Multisim. It also contains legal and safety information for the software.
The document provides legal and contact information for AccessData software. It includes legal disclaimers, copyright information, trademark information, contact details for AccessData headquarters and various departments, and customer support contact information. It also discusses software registration, subscriptions, and conventions used in AccessData documentation.
This document outlines the terms and conditions for use of the JAX-RS: Java API for RESTful Web Services Specification Version 1.0. It grants licenses for evaluation and distribution of compliant implementations. It also defines key terms, disclaims warranties, limits liability, and notes that the specification is subject to export control laws. The specification was finalized and released on September 8, 2008.
Pivotal Cloud Foundry 2.3 introduces several new features to improve speed, stability, scalability, security and cost savings for operators and developers. Key updates include service instance sharing between spaces, multi-buildpack support for .NET applications, an embedded operating system for tiles, enhanced health monitoring and alerting tools, and improved scalability for OpenStack deployments. The release also strengthens security with mutual TLS application verification and centralized credential management.
This is the DDS-XRCE 1.0 Beta specification adopted by the OMG March 2018.
The purpose of DDS-XRCE is to enable resource-constrained devices to participate in DDS communication, while at the same time allowing those devices to be disconnected for long periods of time but still be discoverable by other DDS applications.
DDS-XRCE defines a wire protocol, the DDS-XRCE protocol, to be used between an XRCE Client and XRCE Agent. The XRCE Agent is a DDS Participant in the DDS Global Data Space. The DDS-XRCE protocol allows the client to use the XRCE Agent as a proxy in order to produce and consume data in the DDS Global Data Space.
This document defines an OPC UA/DDS gateway specification. It specifies how to bridge the OPC UA and DDS protocols by defining mappings between their data models, type systems and core services. This includes mapping OPC UA data types, services and subscriptions to DDS data types and topics as well as mapping DDS data types and the global data space to OPC UA address space objects. Configuration formats are also defined to allow configuration of OPC UA to DDS and DDS to OPC UA bridges.
The document provides several small BPMN examples to introduce core concepts such as using pools and message flows to model collaborations, and using sub-processes and call activities to decompose process models, though the examples do not contain executable process models.
Business Process Model and Notation,BPMN2.0(Beta1)BPC流程社区
This document provides an overview of the Business Process Model and Notation (BPMN) Beta 1 specification for Version 2.0. It introduces BPMN as a standard for business process modeling and outlines the key elements and concepts in BPMN including processes, collaboration, choreography, activities, events, gateways, data, and more. The document also establishes the conformance requirements and references for BPMN and provides copyright and usage information.
This document specifies the mapping of the CORBA programming language-independent objects to Python. It defines how CORBA data types like basic types, templates, exceptions and TypeCodes are represented in Python. It also covers how Python represents CORBA concepts like scoped names and uses the mapping to define CORBA compliant Python objects. The specification is published by the Object Management Group for industry members to implement CORBA compatible Python libraries and applications.
The user guide covers phone features, requirements, installation, startup screens, the idle screen, and an overview of key descriptions and customization methods. It provides instructions for making calls, handling calls, managing directories and lists, and configuring additional features. Expansion modules and troubleshooting are also addressed.
This is the DDS Security adopted specification.
It was adopted as an OMG standard in June 2014.
The official URL is http://www.omg.org/spec/DDS-SECURITY/
This the the formal version 1.0 of the DDS Security specification released September 2016. OMG document number formal/2016-08-01.
DDS-Security defines the Security Model and Service Plugin Interface (SPI) architecture for compliant DDS implementations.
The DDS Security Model is enforced by the invocation of these SPIs by the DDS implementation. This specification also defines a set of builtin implementations of these SPIs.
* The specified builtin SPI implementations enable out-of-the box security and interoperability between compliant DDS applications.
* The use of SPIs allows DDS users to customize the behavior and technologies that the DDS implementations use for Information Assurance, specifically customization of Authentication, Access Control, Encryption, Message Authentication, Digital Signing, Logging and Data Tagging.
This document describes a specification for performing remote procedure calls over the Data Distribution Service (DDS). It provides machine-readable files for C++ and Java implementations and replaces an earlier beta 1 version. The document outlines copyrights and licensing for using the specification and contacting representatives from companies involved in its development. It also details OMG's issue reporting process for providing feedback.
This document provides a C++ language mapping specification for CORBA. It defines how CORBA IDL constructs like modules, interfaces, constants, data types etc. are mapped to equivalent C++ constructs. It covers mapping rules for basic types, structured types, exceptions, operations and other CORBA core components. The document also specifies how CORBA services like the ORB, object references and portable servants are mapped to C++. It aims to provide an interoperable mapping standard for CORBA implementations and applications developed in the C++ language.
This document provides the UML 2.0 Superstructure Specification. It defines the syntax and semantics of various UML constructs such as classes, components, associations, interfaces, etc. through a set of normative references, terms and definitions, class descriptions and diagrams. The specification is published by the Object Management Group for industry practitioners to standardize on a common modeling language.
This document describes release notes and terms of use for CADWorx Plant Professional software. It provides fixes and improvements to database sync performance, legacy keywords, specification editor size range list synchronization, and OAL handling for modeling router. The document also outlines copyright, license agreement terms, limitations of liability, export controls, and trademarks related to the software.
Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...Remedy IT
Remedy IT revised submission for the Unified Component Model (UCM) for Distributed, Real-Time and Embedded Systems.
Change of address Remedy IT:
Melkrijder 11
3861 SG Nijkerk
tel. +31 (0)88 053 0000
This document provides a performance tuning guide for Informatica PowerCenter Version 9.0.1. It discusses identifying and eliminating different types of bottlenecks, including thread bottlenecks, target bottlenecks, source bottlenecks, mapping bottlenecks, and session bottlenecks. The guide explains how to use thread statistics to find bottlenecks and provides examples of eliminating bottlenecks by optimizing threads, targets, sources, mappings, and sessions. It is intended to help users optimize PowerCenter performance.
This document is the user guide for CADWorx Plant version 2012 R1. It contains information about copyright, terms of use, warranties and liabilities for the software. The guide discusses startup defaults, support directories, and setup options for sizes, specifications, borders, layers and configuration files. It provides instructions for adding, editing and changing components and specifications in CADWorx Plant. It also covers optional items, local editing and accessing ISOGEN data. The document is intended to instruct users on the proper use and settings for CADWorx Plant 2012 R1.
This document is the user manual for NI Multisim. It provides support information for technical support and product information. It also includes important information such as the warranty, copyright, trademarks, and patents. The manual contains information to help users install, operate, and troubleshoot NI Multisim. It also contains legal and safety information for the software.
The document provides legal and contact information for AccessData software. It includes legal disclaimers, copyright information, trademark information, contact details for AccessData headquarters and various departments, and customer support contact information. It also discusses software registration, subscriptions, and conventions used in AccessData documentation.
This document outlines the terms and conditions for use of the JAX-RS: Java API for RESTful Web Services Specification Version 1.0. It grants licenses for evaluation and distribution of compliant implementations. It also defines key terms, disclaims warranties, limits liability, and notes that the specification is subject to export control laws. The specification was finalized and released on September 8, 2008.
Pivotal Cloud Foundry 2.3 introduces several new features to improve speed, stability, scalability, security and cost savings for operators and developers. Key updates include service instance sharing between spaces, multi-buildpack support for .NET applications, an embedded operating system for tiles, enhanced health monitoring and alerting tools, and improved scalability for OpenStack deployments. The release also strengthens security with mutual TLS application verification and centralized credential management.
This is the DDS-XRCE 1.0 Beta specification adopted by the OMG March 2018.
The purpose of DDS-XRCE is to enable resource-constrained devices to participate in DDS communication, while at the same time allowing those devices to be disconnected for long periods of time but still be discoverable by other DDS applications.
DDS-XRCE defines a wire protocol, the DDS-XRCE protocol, to be used between an XRCE Client and XRCE Agent. The XRCE Agent is a DDS Participant in the DDS Global Data Space. The DDS-XRCE protocol allows the client to use the XRCE Agent as a proxy in order to produce and consume data in the DDS Global Data Space.
This document defines an OPC UA/DDS gateway specification. It specifies how to bridge the OPC UA and DDS protocols by defining mappings between their data models, type systems and core services. This includes mapping OPC UA data types, services and subscriptions to DDS data types and topics as well as mapping DDS data types and the global data space to OPC UA address space objects. Configuration formats are also defined to allow configuration of OPC UA to DDS and DDS to OPC UA bridges.
The document provides several small BPMN examples to introduce core concepts such as using pools and message flows to model collaborations, and using sub-processes and call activities to decompose process models, though the examples do not contain executable process models.
Business Process Model and Notation,BPMN2.0(Beta1)BPC流程社区
This document provides an overview of the Business Process Model and Notation (BPMN) Beta 1 specification for Version 2.0. It introduces BPMN as a standard for business process modeling and outlines the key elements and concepts in BPMN including processes, collaboration, choreography, activities, events, gateways, data, and more. The document also establishes the conformance requirements and references for BPMN and provides copyright and usage information.
This document specifies the mapping of the CORBA programming language-independent objects to Python. It defines how CORBA data types like basic types, templates, exceptions and TypeCodes are represented in Python. It also covers how Python represents CORBA concepts like scoped names and uses the mapping to define CORBA compliant Python objects. The specification is published by the Object Management Group for industry members to implement CORBA compatible Python libraries and applications.
The user guide covers phone features, requirements, installation, startup screens, the idle screen, and an overview of key descriptions and customization methods. It provides instructions for making calls, handling calls, managing directories and lists, and configuring additional features. Expansion modules and troubleshooting are also addressed.
This document provides an introduction to advanced reporting features in MicroStrategy Desktop, including:
- Filters, derived metrics, dynamic aggregation, view filters, subtotals, shortcut metrics, formatting, deployment, evaluation order, and finding and replacing objects.
- It describes how reports are executed and how different features interact, with examples to illustrate concepts like levels, qualifications, and exceptions to dynamic aggregation.
- The document also covers creating freeform SQL reports from various data sources, as well as creating OLAP cube reports by connecting to SAP BW servers and mapping cube objects.
- Advanced techniques are presented for customizing reports through filters, prompts, drilling, authentication, and managed objects. Formatting and styles
This document provides an overview and reference for the AllFusion ProcessModeler API. It describes the key components of the API, including objects, interfaces, and collections used to access and modify process models programmatically. It also provides examples and instructions for common tasks like opening a model, accessing objects and properties, creating and deleting objects, and saving changes using transactions.
The document is the specification license agreement for Version 1.0 of the Web Services for J2EE specification from IBM. It grants a non-exclusive, non-transferable license to use the specification internally for developing Java applications and clean room implementations. However, IBM provides the specification as-is without any warranties and limits its liability. The recipient must not redistribute the specification and agrees to indemnify IBM against certain legal claims regarding their use of the specification.
This document provides a programmer's manual for Dialogic's DSI Signaling Software Sigtran Monitor program. It describes the program's functionality for monitoring M2PA and SCTP messages on an IP network by receiving them from a configured message source. It can filter and selectively present the received messages, collect statistics on throughput, and provide tracing and other OAM functions. The document outlines installation, configuration, message formats and status codes used for communication between the monitoring program and management systems.
The document is the SCCP Programmer's Manual for Dialogic's SCCP software implementation. It provides an overview of the SCCP module's operation and defines all messages that can be sent to or received from the module. The manual describes the module's configuration parameters and interfaces to MTP, user applications, and management. It also covers global title translation procedures, message segmentation/reassembly, and other SCCP functions.
Multisim Instruction Manual - Electric circuitsvimala elumalai
This document contains the user manual for NI Multisim. It includes sections on support and contact information, important information such as warranty and copyright, and conventions used in the manual. The manual provides information to help users understand and customize the interface, perform schematic capture basics such as placing components and wiring them, and add labels and annotations. It also describes preferences, sheet properties, and the design toolbox.
This document provides instructions and reference material for using Primavera P6 Project Management software; it includes copyright information and licensing details for the software and its components. The document contains tables of contents, descriptions of the software's features and functions, and guidelines for customizing views, updating schedules, and other project management tasks in Primavera P6.
This document provides an overview of the Primavera P6 Project Management software. It discusses why project portfolio management is important, the roles users may have, and an overview of the project management process. It also provides a quick tour of the software, explaining how to get started, select a language, customize the workspace and displays, and use wizards. It describes how to define administrative preferences and categories to configure the system.
This document provides an overview of the Primavera P6 Project Management software. It describes the copyright and license information, as well as terms of use. It also provides contact information for Primavera and instructions for sending feedback. The document lists various third party software copyrights that may be required by Primavera P6.
This document provides an overview of the Primavera P6 Project Management software. It discusses why project portfolio management is important, the roles users may have, and an overview of the project management process. It also provides a quick tour of the software, explaining how to get started, select a language, customize the workspace and displays, and use wizards. It describes how to define administrative preferences and categories to configure the system.
This document is the user manual for the IC-3116W camera. It contains information about package contents, hardware installation, camera setup using the EdiView app and EdiView Finder software, as well as details on the web-based management interface for configuring camera settings like video, events, storage, system settings and more. The manual provides step-by-step instructions and screenshots to guide users through setup and configuration of the camera.
This document is the Junos OS Logical Systems Configuration Guide for Release 11.1. It includes copyright information for Juniper Networks and various third party software included in the product. It also includes a revision history, year 2000 compliance statement, and end user license agreement governing the use of the software.
Similar to DDS for eXtremely Resource Constrained Environments (20)
DDS Security Version 1.2 was adopted in 2024. This revision strengthens support for long runnings systems adding new cryptographic algorithms, certificate revocation, and hardness against DoS attacks.
From its first use case that enabled distributed communications for US Navy ships to the autonomous systems of today, the DDS family of standards has enabled new generations of applications to run reliably, rapidly and securely, regardless of distance or scale.
To commemorate the 20th year milestone, the DDS Foundation is creating presentations that highlight the 14 specifications in the DDS standard, along with selected real-world use cases.
This presentation introduces some of the original use-cases and experiments, along with a brief history of the Standards.
A recorded video of the presentation is available at this URL
https://www.brighttalk.com/webcast/12231/602966
Introduction to DDS: Context, Information Model, Security, and Applications.Gerardo Pardo-Castellote
Introduction to the Data-Distribution Service (DDS): Context and Applications.
This 50 minute presentation summarizes the main features of DDS including the information model, the type system, and security as well as how typical applications use DDS.
It was presented at the Canadian Government Information Day in Ottawa on September 2018.
There is also a video of this presentation at https://www.youtube.com/watch?v=6iICap5G7rw.
This Object Management Group (OMG) RFP solicits submissions identifying and defining mechanisms to achieve integration between DDS infrastructures and TSN networks. The goal is to provide all artifacts needed to support the design, deployment and execution of DDS systems over TSN networks.
The DDS-TSN integration specification sought shall realize the following functionality:
● Define mechanisms that provide the information required for TSN-enabled networks to calculate any network schedules needed to deploy a DDS system.
OMG RFP
● Identify those parts of the set of the IEEE TSN standards that are relevant for a DDS-TSN integration and indicate how the DDS aspects are mapped onto, or related to, the associated TSN aspects. Examples include TSN- standardized information models for calculating system-wide schedules and configuring network equipment.
● Identify and specify necessary extensions to the [DDSI-RTPS] and [DDS- SECURITY] specifications, if any, to allow DDS infrastructures to use TSN- enabled networks as their transport while maintaining interoperability between different DDS implementations.
● Identify and specify necessary extensions to the DDS and DDS- XML specification, if any, to allow declaration of TSN-specific properties or quality of service attributes.
A NEW ARCHITECTURE PROPOSAL TO INTEGRATE OPC UA, DDS & TSN.
Suppliers and end users need a complete solution to address the complexity of future industrial automation systems. These systems require:
• Interoperability to allow devices and independent software applications from multiple suppliers to work together seamlessly
• Extensibility to incorporate future large or intelligent systems
• Performance and flexibility to handle challenging deployments and use cases
• Robustness to guarantee continuity of operation despite partial failures
• Integrity and fine-grained security to protect against cyber attacks
• Widespread support for an industry standard
This document proposes a new technical architecture to build this future. The design combines the best of the OPC Unified Architecture (OPC UA), Data Distribution Service (DDS), and Time-Sensitive Networking (TSN) standards. It will connect the factory floor to the enterprise, sensors to cloud, and real-time devices to work cells. This proposal aims to define and standardize the architecture to unify the industry.
The document provides an overview of the DDS-XRCE specification, which defines an Agent-Client communication model to enable the use of the DDS data distribution service (DDS) in extremely resource-constrained networks. It describes the motivation for DDS-XRCE and its key aspects, including the message structure, interaction model, supported deployment scenarios, and how it provides security through the use of a client key.
The document describes a demonstration of interoperability between 5 vendor DDS security implementations using a shapes demo application. The demo consists of 6 scenarios that illustrate different aspects of DDS security configuration and functionality, including controlling access to the domain, enabling open access to selected topics, comparing data integrity vs encryption, protecting metadata, securing discovery, and fine-grained access control at the topic level. Each scenario varies the security governance and permission files to achieve the desired access control configuration.
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and SimulinkGerardo Pardo-Castellote
This document summarizes a presentation about applying model-based systems engineering (MBSE) to industrial internet of things (IIoT) systems using the SysML modeling language, Connext DDS middleware, and Simulink. It discusses how SysML can be used to design interfaces, applications, and quality of service policies for DDS-connected systems. The presentation also provides examples of integrating MagicDraw, Simulink, and Connext DDS to enable translating SysML models into implementations and deployments of distributed IIoT applications and components.
One of the most important challenges that system designers and system integrators face when deploying complex Industrial Internet of Things (IoT) systems is the integration of different connectivity solutions and standards. At RTI, we are constantly working to accelerate the Industrial IoT revolution. Over the past few years, we have developed standard connectivity gateways to ensure that DDS systems can easily integrate with other core connectivity frameworks.
This year, we developed a standard OPC UA/DDS Gateway, a bridge between two of the most well-known Industrial IoT connectivity frameworks. We are excited to announce that the gateway was just adopted by the Object Management Group (OMG).
In this webinar, we will dive deeper into the importance of choosing a baseline core connectivity standard for the Industrial IoT and how to ensure all system components are fully integrated. Attendees will also learn:
How the OPC UA/DDS Gateway specification was developed and how it works
How to leverage the Gateway to enable DDS and OPC UA applications to interoperate transparently
About the first standard connectivity gateway released with RTI Web Integration Service in Connext DDS 5.3
Gateways are a critical component of system interoperability and we will keep working to help companies accelerate Industrial IoT adoption.
Demonstrates interoperability of 5 independent products that implement the Data-Distribution Service (DDS) Security Standard
(https://www.omg.org/spec/DDS-SECURITY/).
Tests the following implementations: RTI Connext DDS, Twin Oaks Computing CoreDX DDS, Kongsberg InterComm DDS, ADLink Vortex DDS Cafe, and Object Computing Inc OpenDDS.
Demonstrates interoperability of 3 independent products that implement the Data-Distribution Service (DDS) Security Standard
(https://www.omg.org/spec/DDS-SECURITY/).
Tests the following implementations: RTI Connext DDS, Twin Oaks Computing CoreDX DDS, and Kongsberg InterComm DDS.
DDS - The Proven Data Connectivity Standard for the Industrial IoT (IIoT)Gerardo Pardo-Castellote
The document discusses DDS (Data Distribution Service) as the proven data connectivity standard for industrial IoT (IIoT). It notes that DDS addresses the key characteristics of reliability, scalability, safety, security and resiliency required for large, heterogeneous IIoT systems. The document also discusses the Industrial Internet Consortium's efforts to develop a common architecture connecting sensors to the cloud across industries. It highlights RTI's role in numerous projects and standards efforts related to IIoT.
Presentation at the 2016 IIOT Challenges and Opportunities Workshop.
The next wave of Industrial Internet applications will connect machines and devices together into functioning, intelligent systems with capabilities beyond anything possible today. These systems fundamentally depend on connectivity and information exchange to derive knowledge and make "smart decisions". They require a much higher level of reliability and security than "Consumer" IoT applications. OMG's Data-Distribution Service for Real-Time Systems (DDS) is the premier open middleware standard directly addressing publish-subscribe communications for Industrial IoT applications. It provides a protocol that meets the demanding security, scalability, performance, and Quality of Service requirements of IIoT applications spanning connected machines, enterprise systems, and mobile devices.This presentation will use concrete use cases to introduce DDS and examine why energy, advanced medical, asset-tracking, transportation, and military systems choose to base their designs on DDS.
The Industrial IoT depends on connectivity and information exchange. Much of the business value derives from the ability to have independent systems share information in order to derive knowledge, make "smart decisions", and offer behavior and functionality never before possible.
Many industrial systems were designed with a focus on reliability and safety at a time were implicit trust of all components and communication was the norm. Restricting physical access is currently the only practical method for protecting this existing critical infrastructure. This includes the electrical power grid, process control, transportation, or manufacturing systems. This is changing with increased connectivity to the Internet and personal computers as well as awareness of malicious insider threats. Many industrial systems are being (or want to be) connected to external networks using standard technologies like Ethernet and the Internet Protocol Suite (TCP/UDP/IP). These technologies make systems more functional and efficient, unfortunately they also open the critical infrastructure to cyber attacks.
New IIoT Systems are being designed with security as a key concern. New systems can leverage a solid set of security technologies and building blocks for Authentication, Cryptography, Integrity, etc. However these security technologies must be used correctly and in ways that do not disrupt the performance or access to the legitimate applications/devices, yet limit legitimate access to just the needed information (to minimize the insider threats) and denies access to all others. Adding to this difficulties the new systems need to co-exist and (securely) exchange information with the already-deployed legacy systems which were built without such security elements.
Secure DDS (a recent standard from the OMG) is a "secure connectivity middleware" technology that can be used to address these three needs: (1) Build modern secure IIoT systems, (2) Secure legacy Industrial systems being connected on the Internet, and (3) Securely bridge between new and legacy systems. Secure DDS extends the proven Data-Distribution Service (DDS) and Real-Time Publish-Subscribe Protocol (DDS-RTPS) standards with enterprise-grade authentication, encryption and fine-grained security controls while maintaining the peer-to-peer, robustness and scalability features (including secure multicast) that have made DDS a clear choice for critical infrastructure systems.
This presentation introduces the DDS Security specification and provide describe several use-cases that exemplify how these standards are deployed in real-world applications.
This document provides an overview of the Industrial Internet of Things (IIoT) and Data Distribution Service (DDS) as a platform for IIoT integration. It discusses how many industries are facing disruption from trends like decentralized energy and software-driven transportation. The key challenge for IIoT is reducing the exponential increase in integration costs as systems scale up in size and complexity. DDS provides a standardized, data-centric integration approach for real-time IIoT applications and services.
This document discusses Web-Enabled DDS, which allows real-time data from DDS applications to be accessed from web-based applications. It provides a gateway that connects DDS applications to web clients using standard HTTP protocols. This allows for scenarios like mobile data access, web UIs/dashboards, and access across firewalls. It presents the WebDDS object model and RESTful API for accessing DDS entities like topics, publishers, and data writers from web clients.
The document discusses RPC (remote procedure call) over DDS (Data Distribution Service). It outlines goals of providing a standard and interoperable way to support RPC communication patterns in DDS. Key points covered include supporting request/reply and remote method invocation patterns, leveraging DDS qualities of service, and language bindings. The status of the work as an OMG standard is also summarized.
DDS Security for the Industrial Internet - London Connext DDS ConferenceGerardo Pardo-Castellote
The document discusses security considerations for data-centric publish-subscribe systems like the Data Distribution Service (DDS). It describes how DDS can implement security features like authentication, access control, confidentiality and integrity without conflicting with its global data space model. A pluggable security architecture is proposed that uses authentication, access control and cryptography plugins to enforce security policies while remaining decoupled.
Unveiling the Advantages of Agile Software Development.pdfbrainerhub1
Learn about Agile Software Development's advantages. Simplify your workflow to spur quicker innovation. Jump right in! We have also discussed the advantages.
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
WhatsApp offers simple, reliable, and private messaging and calling services for free worldwide. With end-to-end encryption, your personal messages and calls are secure, ensuring only you and the recipient can access them. Enjoy voice and video calls to stay connected with loved ones or colleagues. Express yourself using stickers, GIFs, or by sharing moments on Status. WhatsApp Business enables global customer outreach, facilitating sales growth and relationship building through showcasing products and services. Stay connected effortlessly with group chats for planning outings with friends or staying updated on family conversations.
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemPeter Muessig
Learn about the latest innovations in and around OpenUI5/SAPUI5: UI5 Tooling, UI5 linter, UI5 Web Components, Web Components Integration, UI5 2.x, UI5 GenAI.
Recording:
https://www.youtube.com/live/MSdGLG2zLy8?si=INxBHTqkwHhxV5Ta&t=0
What is Augmented Reality Image Trackingpavan998932
Augmented Reality (AR) Image Tracking is a technology that enables AR applications to recognize and track images in the real world, overlaying digital content onto them. This enhances the user's interaction with their environment by providing additional information and interactive elements directly tied to physical images.
What is Master Data Management by PiLog Groupaymanquadri279
PiLog Group's Master Data Record Manager (MDRM) is a sophisticated enterprise solution designed to ensure data accuracy, consistency, and governance across various business functions. MDRM integrates advanced data management technologies to cleanse, classify, and standardize master data, thereby enhancing data quality and operational efficiency.
SMS API Integration in Saudi Arabia| Best SMS API ServiceYara Milbes
Discover the benefits and implementation of SMS API integration in the UAE and Middle East. This comprehensive guide covers the importance of SMS messaging APIs, the advantages of bulk SMS APIs, and real-world case studies. Learn how CEQUENS, a leader in communication solutions, can help your business enhance customer engagement and streamline operations with innovative CPaaS, reliable SMS APIs, and omnichannel solutions, including WhatsApp Business. Perfect for businesses seeking to optimize their communication strategies in the digital age.
Microservice Teams - How the cloud changes the way we workSven Peters
A lot of technical challenges and complexity come with building a cloud-native and distributed architecture. The way we develop backend software has fundamentally changed in the last ten years. Managing a microservices architecture demands a lot of us to ensure observability and operational resiliency. But did you also change the way you run your development teams?
Sven will talk about Atlassian’s journey from a monolith to a multi-tenanted architecture and how it affected the way the engineering teams work. You will learn how we shifted to service ownership, moved to more autonomous teams (and its challenges), and established platform and enablement teams.
Measures in SQL (SIGMOD 2024, Santiago, Chile)Julian Hyde
SQL has attained widespread adoption, but Business Intelligence tools still use their own higher level languages based upon a multidimensional paradigm. Composable calculations are what is missing from SQL, and we propose a new kind of column, called a measure, that attaches a calculation to a table. Like regular tables, tables with measures are composable and closed when used in queries.
SQL-with-measures has the power, conciseness and reusability of multidimensional languages but retains SQL semantics. Measure invocations can be expanded in place to simple, clear SQL.
To define the evaluation semantics for measures, we introduce context-sensitive expressions (a way to evaluate multidimensional expressions that is consistent with existing SQL semantics), a concept called evaluation context, and several operations for setting and modifying the evaluation context.
A talk at SIGMOD, June 9–15, 2024, Santiago, Chile
Authors: Julian Hyde (Google) and John Fremlin (Google)
https://doi.org/10.1145/3626246.3653374
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsPeter Muessig
The UI5 tooling is the development and build tooling of UI5. It is built in a modular and extensible way so that it can be easily extended by your needs. This session will showcase various tooling extensions which can boost your development experience by far so that you can really work offline, transpile your code in your project to use even newer versions of EcmaScript (than 2022 which is supported right now by the UI5 tooling), consume any npm package of your choice in your project, using different kind of proxies, and even stitching UI5 projects during development together to mimic your target environment.
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
Do you want Software for your Business? Visit Deuglo
Deuglo has top Software Developers in India. They are experts in software development and help design and create custom Software solutions.
Deuglo follows seven steps methods for delivering their services to their customers. They called it the Software development life cycle process (SDLC).
Requirement — Collecting the Requirements is the first Phase in the SSLC process.
Feasibility Study — after completing the requirement process they move to the design phase.
Design — in this phase, they start designing the software.
Coding — when designing is completed, the developers start coding for the software.
Testing — in this phase when the coding of the software is done the testing team will start testing.
Installation — after completion of testing, the application opens to the live server and launches!
Maintenance — after completing the software development, customers start using the software.
3. DISCLAIMER OF WARRANTY
WHILE THIS PUBLICATION IS BELIEVED TO BE ACCURATE, IT IS PROVIDED "AS IS" AND MAY
CONTAIN ERRORS OR MISPRINTS. THE OBJECT MANAGEMENT GROUP AND THE COMPANIES
LISTED ABOVE MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO
THIS PUBLICATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR
OWNERSHIP, IMPLIED WARRANTY OF MERCHANTABILITY OR WARRANTY OF FITNESS FOR A
PARTICULAR PURPOSE OR USE. IN NO EVENT SHALL THE OBJECT MANAGEMENT GROUP OR
ANY OF THE COMPANIES LISTED ABOVE BE LIABLE FOR ERRORS CONTAINED HEREIN OR FOR
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, RELIANCE OR COVER DAMAGES,
INCLUDING LOSS OF PROFITS, REVENUE, DATA OR USE, INCURRED BY ANY USER OR ANY
THIRD PARTY IN CONNECTION WITH THE FURNISHING, PERFORMANCE, OR USE OF THIS
MATERIAL, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
The entire risk as to the quality and performance of software developed using this specification is borne by you.
This disclaimer of warranty constitutes an essential part of the license granted to you to use this specification.
RESTRICTED RIGHTS LEGEND
Use, duplication or disclosure by the U.S. Government is subject to the restrictions set forth in subparagraph (c)
(1) (ii) of The Rights in Technical Data and Computer Software Clause at DFARS 252.227-7013 or in
subparagraph (c)(1) and (2) of the Commercial Computer Software - Restricted Rights clauses at 48 C.F.R.
52.227-19 or as specified in 48 C.F.R. 227-7202-2 of the DoD F.A.R. Supplement and its successors, or as
specified in 48 C.F.R. 12.212 of the Federal Acquisition Regulations and its successors, as applicable. The
specification copyright owners are as indicated above and may be contacted through the Object Management
Group, 109 Highland Avenue, Needham, MA 02494, U.S.A.
TRADEMARKS
IMM®, MDA®, Model Driven Architecture®, UML®, UML Cube logo®, OMG Logo®, CORBA® and
XMI® are registered trademarks of the Object Management Group, Inc., and Object Management Group™,
OMG™ , Unified Modeling Language™, Model Driven Architecture Logo™, Model Driven Architecture
Diagram™, CORBA logos™, XMI Logo™, CWM™, CWM Logo™, IIOP™ , MOF™ , OMG Interface
Definition Language (IDL)™ , and OMG SysML™ are trademarks of the Object Management Group. All other
products or company names mentioned are used for identification purposes only, and may be trademarks of their
respective owners.
COMPLIANCE
The copyright holders listed above acknowledge that the Object Management Group (acting itself or through its
designees) is and shall at all times be the sole entity that may authorize developers, suppliers and sellers of
computer software to use certification marks, trademarks or other special designations to indicate compliance
with these materials.
Software developed under the terms of this license may claim compliance or conformance with this
specification if and only if the software compliance is of a nature fully matching the applicable compliance
points as stated in the specification. Software developed only partially matching the applicable compliance
points may claim only that the software was based on this specification, but may not claim compliance or
conformance with this specification. In the event that testing suites are implemented or approved by Object
Management Group, Inc., software developed using this specification may claim compliance or conformance
with the specification only if the software satisfactorily completes the testing suites.
4. OMG’s Issue Reporting Procedure
All OMG specifications are subject to continuous review and improvement. As part of this process we
encourage readers to report any ambiguities, inconsistencies, or inaccuracies they may find by completing the
Issue Reporting Form listed on the main web page http://www.omg.org, under Documents, Report a Bug/Issue
(http://www.omg.org/report_issue.)
5. Table of Contents
1 Scope........................................................................................................................................................ 3
1.1 General.......................................................................................................................................... 3
2 Overview.................................................................................................................................................. 5
2.1.1 DDS-XRCE Client.......................................................................................................... 5
2.1.2 XRCEAgent 6
3 Conformance ............................................................................................................................................ 7
4 References................................................................................................................................................ 8
4.1 Normative References.................................................................................................................... 8
4.2 Non-normative References............................................................................................................. 8
5 Terms and Definitions............................................................................................................................... 9
6 Symbols.................................................................................................................................................. 10
7 Additional Information............................................................................................................................ 11
7.1 Changes to Adopted OMG Specifications..................................................................................... 11
7.2 Acknowledgements...................................................................................................................... 11
8 DDS-XRCE Object Model ...................................................................................................................... 12
8.1 General........................................................................................................................................ 12
8.2 Model Overview.......................................................................................................................... 14
8.3 XRCE DDS Proxy Objects........................................................................................................... 15
8.4 XRCE Object Identification ......................................................................................................... 15
8.5 Data types used to model operations on XRCE Objects................................................................. 16
8.5.1 Data and Samples ......................................................................................................... 16
8.5.2 DataRepresentation....................................................................................................... 16
8.5.3 ObjectVariant 17
8.6 XRCE Object operations.............................................................................................................. 21
8.6.1 Use of the ClientKey..................................................................................................... 21
8.6.2 DDSXRCE::Root.......................................................................................................... 21
8.6.3 DDSXRCE::ProxyClient............................................................................................... 23
8.6.4 DDSXRCE::DataWriter................................................................................................ 29
8.6.5 DDSXRCE::DataReader ............................................................................................... 30
9 The DDS-XRCE Protocol ....................................................................................................................... 32
9.1 General........................................................................................................................................ 32
9.2 The DDS-XRCE Protocol Transport Model.................................................................................. 32
9.3 Overview..................................................................................................................................... 32
6. 9.3.1 Message 32
9.3.2 Session 33
9.3.3 Stream 33
9.3.4 Client 33
9.3.5 Agent 33
9.4 Message Structure........................................................................................................................ 33
9.4.1 General 33
9.4.2 Header Structure........................................................................................................... 33
9.4.3 Submessage Structure................................................................................................... 35
9.4.4 Submessage Header ...................................................................................................... 35
9.4.5 Submessages 36
9.4.6 RESET 43
9.4.7 FRAGMENT 43
9.5 Interaction Model......................................................................................................................... 44
9.5.1 General 44
9.5.2 Sending data using a pre-configured DataWriter............................................................ 44
9.5.3 Receiving data using a pre-configured DataReader........................................................ 44
9.5.4 Creating a DataWriter ................................................................................................... 45
9.5.5 Getting Information on a Resource................................................................................ 46
9.5.6 Updating a Resource..................................................................................................... 47
9.5.7 Reliable Communication............................................................................................... 47
Annex A. IDL Types ................................................................................................................................. 55
Annex B. EXAMPLES .............................................................................................................................. 68
CREATE_CLIENT message example ................................................................................................... 68
READ_DATA message examples ......................................................................................................... 70
Reading a single data sample..................................................................................................... 70
Reading a sequence of data samples .......................................................................................... 71
DATA message examples...................................................................................................................... 74
Receiving a single data sample.................................................................................................. 74
Receiving a sequence of samples without SampleInfo................................................................ 75
Receiving a sequence of samples that includes SampleInfo........................................................ 77
Receiving a sequence of packed samples ................................................................................... 79
7. DDS-XRCE, Revised Submission 1
Preface
OMG
Founded in 1989, the Object Management Group, Inc. (OMG) is an open membership, not-for-profit computer industry
standards consortium that produces and maintains computer industry specifications for interoperable, portable, and
reusable enterprise applications in distributed, heterogeneous environments. Membership includes Information
Technology vendors, end users, government agencies, and academia.
OMG member companies write, adopt, and maintain its specifications following a mature, open process. OMG’s
specifications implement the Model Driven Architecture® (MDA®), maximizing ROI through a full-lifecycle approach
to enterprise integration that covers multiple operating systems, programming languages, middleware and networking
infrastructures, and software development environments. OMG’s specifications include: UML® (Unified Modeling
Language™); CORBA® (Common Object Request Broker Architecture); CWM™ (Common Warehouse Metamodel);
and industry-specific standards for dozens of vertical markets.
More information on the OMG is available at http://www.omg.org/.
OMG Specifications
As noted, OMG specifications address middleware, modeling and vertical domain frameworks. All OMG Specifications
are available from the OMG website at:
http://www.omg.org/spec
Specifications are organized by the following categories:
Business Modeling Specifications
Middleware Specifications
• CORBA/IIOP
• Data Distribution Services
• Specialized CORBA
IDL/Language Mapping Specifications
Modeling and Metadata Specifications
• UML, MOF, CWM, XMI
• UML Profile
Modernization Specifications
Platform Independent Model (PIM), Platform Specific Model (PSM), Interface Specifications
• CORBAServices
• CORBAFacilities
CORBA Embedded Intelligence Specifications
CORBA Security Specifications
OMG Domain Specifications
8. 2 DDS XRCE Revised Submission
Signal and Image Processing Specifications
All of OMG’s formal specifications may be downloaded without charge from our website. (Products implementing
OMG specifications are available from individual suppliers.) Copies of specifications, available in PostScript and PDF
format, may be obtained from the Specifications Catalog cited above or by contacting the Object Management Group,
Inc. at:
OMG Headquarters
109 Highland Avenue
Needham, MA 02494
USA
Tel: +1-781-444-0404
Fax: +1-781-444-0320
Email: pubs@omg.org
Certain OMG specifications are also available as ISO standards. Please consult http://www.iso.org
Typographical Conventions
The type styles shown below are used in this document to distinguish programming statements from ordinary English.
However, these conventions are not used in tables or section headings where no distinction is necessary.
Times/Times New Roman - 10 pt.: Standard body text
Helvetica/Arial - 10 pt. Bold: OMG Interface Definition Language (OMG IDL) and syntax elements.
Courier - 10 pt. Bold: Programming language elements.
Helvetica/Arial - 10 pt: Exceptions
NOTE: Terms that appear in italics are defined in the glossary. Italic text also represents the name of a document,
specification, or other publication.
Issues
The reader is encouraged to report any technical or editing issues/problems with this specification to
http://www.omg.org/report_issue.htm.
9. DDS-XRCE, Revised Submission 3
1 Scope
This specification is a response to the OMG RFP « eXtremely Resource Constrained Environments DDS (DDS-
XRCE) » (mars/16-03-21). It defines a DDS-XRCE Service based on a client-server protocol between a resource
constrained, low-powered device (client) and an Agent (the server) that enables the device to communicate with a DDS
network and publish and subscribe to topics in a DDS domain. The specifications purpose and scope is to ensure that
applications based on different vendor’ implementations of the DDS-XRCE Service are compatible and interoperable.
Figure 1— Scope of DDS-XRCE Protocol
The DDS-XRCE protocol is a client-server protocol between resource constrained devices (clients) and an XRCE
Agent (server) allowing the resource contrained devices with sleep/wake cycles to have access to the DDS Global
Data Space over limited-bandwith networks.
1.1 General
DDS offers a rich set of API and QoS policies to develop distributed applications for highly complex, mission critical
systems. However, these features come at relatively high cost in terms of memory, CPU and bandwidth usage. A large
number of devices on the edge of the network, such as actuators and sensors, do not need these types of features. Instead,
being at the edge of the network, it is sufficient to be able to publish and subscribe to data while at the same time appear
as a first-class participant in the DDS Global Data Space.
While the DDS programming API can be avoided by an application, it is still necessary to implement the DDS-RTPS
wire protocol to be able to participate in DDS communication. However, the RTPS protocol, whilst featuring a wire
efficiency comparable to that of MQTT and other IoT standards, is designed for situations where:
- The underlying network transport has reasonably large MTUs exceeding those available in LowPANs, such as
802.15.4 and ZigBee.
- The protocol endpoints are assumed to have continuous and simultaneous presence on the network rather than
operating on independent sleep/wake cycles.
This peer-to-peer and broker-less nature of DDS has significant advantages in many situations but it also has drawbacks
in extremely resource-constrained environments (XRCEs). Specifically, the complexity of a DDS peer and the discovery
and presence traffic is in general higher than that of a client in broker-based technologies, thus making it harder for DDS
implementations to be extremely small.
10. 4 DDS XRCE Revised Submission
In order to enable resource-constrained devices to participate in DDS communication and allow devices to be
disconnected for long periods of time, but still be discoverable by other DDS applications, there is a need for a client-
agent architecture where the agent acts on behalf of the device and makes the device discoverable in the larger DDS
network while isolating the device from the complexity of DDS itself.
The goal of this specification is to define a service, the XRCEAgent, which enables resource-constrained devices, a
DDS-XRCE Client, to participate as a first-class DDS publisher and subscriber in the DDS Global Data Space. This
Service is described in terms of a DDS-XRCE Object Model and a set of operations to manipulate the object model in
the XRCEAgent for the DDS Global Data Space.
11. DDS-XRCE, Revised Submission 5
2 Overview
DDS-XRCE defines an object model that acts as a façade to the Standard DDS Object model. The purpose of this
simplified object model is to expose to the client a simpler interaction model with the DDS data-space, when compared
to the Standard DDS and RTPS protocols, but still enable a DDS-XRCE client to participate in the DDS data-space as a
first class principal.
Because the target environment is a resource-constrained device, the goal with the DDS-XRCE object model is not to
expose the complete Standard DDS object model. It is understood that much of the configuration can be performed
directly on the Agent and therefore does not require explicit interaction from the client. Instead, the focus is on the core
set of features required to enable DDS-XRCE clients to participate in a meaningful way in the DDS data-space. In
addition to the exposed object from the Standard DDS Object model, the DDS-XRCE object model defines new objects
needed to manage disconnected clients, as well as enable access control and access rights.
2.1.1 DDS-XRCE Client
The DDS-XRCE Client (XRCEClient) is exposed to the DDS-XRCE Object Model and the façade object. Logically one
can think of this as logical equivalent to the “DDS Object Model”. However, a client never interacts directly with objects
in the Standard Object Model, and there is not a one-to-one mapping between the operations on the DDS-XRCE Object
Model and the “DDS Object Model”. This specification does not simply reuse the standard “DDS Object Model” and
operations for three reasons:
1. The DDS Object Model is intended for use with a local programming API. For this reason, the DDS Object
Model contains many objects and methods with strongly typed parameters, as well as a direct callback interface
by means of listener objects that the application registers with the middleware. Such an API is not suitable for
resource constrained, low-power clients that typically prefer more “resource-oriented interfaces” and also
expect a simplified interface with no callbacks and where all parameters are encoded in text.
2. The XRCEClient connectivity is assumed to be inherently intermittent due to potentially aggressive use of low-
power mode and deep sleep to conserve battery or loss of radio connectivity. Therefore, the DDS-XRCE DDS
Object Model must overcome this by introducing a “session,” which can exist across repeated sleep-wakeup
cycles by a device.
3. The XRCEClient can access a DDS Service from any location, and therefore it is desirable to have an access
control model that authenticates each client application/principal, controls whether the principal can access the
DDS Global Data Space, and controls which operations each principal can perform (e.g., which DDS Topics it
can publish and subscribe).
This specification recognizes that XRCEClient entities may have very different needs, and supports clients with a wide
range of requirements:
Simple devices may not need to perform any discovery interaction with the XRCEAgent other then having their
presence detected by the agent, and hence establish a presence in the DDS data-space, and be able to publish
data of a well-known DDS Topic, using a DDS QoS policy. Such a client does not need any of the QoS
configuration and dynamic entity creation capabilities of DDS.
More capable devices may need to publish and subscribe to well-known Topics, however a XRCEClient may
not want the data to be pushed by the XRCEAgent at an arbitrary time, for example due to network constraints.
Thus, the DDS model of “pushing” data from Writers to Readers may not work well. This specification
addresses this by enabling a device to activate/deactivate “data push” from the Agent.
Advanced clients may choose to utilize DDS concepts, and create their own XRCEAgent resources that map to
DDS Objects with client-controlled QoS. This specification enables these types of Clients by exposing a set of
operations to dynamically create/update/delete Agent objects. This is as opposed to the first two cases, where all
resources are known in advance and pre-configured on the Agent.
Finally, complex clients may need to be aware of advanced concepts, such as sequence-numbers (or sample
IDs), timestamp, DDS sources etc.
12. 6 DDS XRCE Revised Submission
As shown by this list, this specification enables simple devices with little to no configuration ability to fully capable
DDS devices.
2.1.2 XRCEAgent
The purpose of the DDS-XRCE Agent (XRCEAgent) is to establish and maintain the presence of the XRCEClient in the
DDS data-space. This specification does not dictate any particular implementation; instead the required behavior is
described as a set of logical operations on the DDS-XRCE Object Model.
An important feature of this specification is the simplified interaction with the XRCEAgent. The agent presents an
Object Model that describes resources. At a high-level, a resource is an object that can be accessed with a name and has
properties and behavior. Resources may be preconfigured with well-known names, or dynamically created by a
XRCEClient.
Examples of named resources in the XRCEAgent are:
DDS-XRCE Type
DDS-XRCE DataWriter
DDS-XRCE DataReader
Any XRCEClient that is allowed to communicate with the XRCEAgent and has the required access rights can refer to
these resources by name. Thus, if an XRCEAgent is preconfigured with a name “FooPublisher::FooWriter” resource that
can publish a type “Foo”, a Client that has access to this resource and write data using this resource simply by referring
to the existing “FooPublisher::FooWriter”. It does not have to create a resource.
The implementation of a resource is outside the scope of this specification. For example, a resource
“FooPublisher::FooWriter” may be associated with a DDS DataWriter shared by many DDS-XRCE clients, or an
XRCEClient may have its own dedicated “FooWriter”, as long as the DDS DataWriter supports the client’s required QoS
policies.
An important feature of the DDS-XRCE Object Model is the ability for a Client to query it, as opposed to the typical
behavior in the Standard DDS Object Model where changes are updated and pushed in real-time. This model is vey
likely not suitable for the target environment where disconnected devices is expected to be the normal behavior. This
specification enables Clients to be in charge of when data is received, and can ask the XRCEAgent to return data that
matches a set of constraints. Thus, a XRCEClient that is disconnected will not be woken up by an XRCEAgent (it may
not be possible), instead a XRCEClient queries the XRCEAgent when it wakes up.
It is important to distinguish between the operations on the DDS-XRCE Object Model and the Standard DDS Object
Model. There is not a 1-to-1 mapping between the operations. Specifically, any reference to the Standard DDS Object
Model refers to the behavior and semantics defined in the DDS specification. The DDS operations on the Standard DDS
Object Model are not necessarily exposed or have an equivalent in the DDS-XRCE Object Model. The XRCEAgent is
not required to expose any programming APIs; the only standard interactions occur with the XRCEClient using the
DDS-XRCE protocol and with other DDS domain participants using the DDS-RTPS protocol.
13. DDS-XRCE, Revised Submission 7
3 Conformance
This specification defines five profiles. Each constitutes a separate conformance point:
Read Access profile. Provides the clients the ability to read data on pre-configured Topics with pre-configured
QoS policies. Requires implementation of all sub-message types except for CREATE, INFO, WRITE_DATA,
and DELETE, including the associated behaviors.
Write Access profile. Provides the clients the ability to write data on pre-configured Topics with pre-
configured QoS policies. Requires implementation of all sub-message types except for CREATE, INFO,
READ_DATA, DATA, and DELETE, including the associated behaviors.
Define Entities profile. Provides the clients the ability define DomainParticipant, Topic, Publisher, Subscriber,
DataWriter, and DataReader entities using pre-configured QoS policies and data-types. Requires
implementation of the DELETE submessage and the associated behaviors.
Define QoS profile. Provides client the ability to define QoS profiles to be used by DDS entities. Requires
implementation of the CREATE submessage and the associated behaviors for object kind
OBJK_QOSPROFILE.
Define types profile. Provides client the ability to explicitly define data types to be used for DDS Topics.
Requires implementation of the CREATE submessage and the associated behaviors for object kind
OBJK_TYPE.
Discovery access profile. Provides the clients the ability to discover the Topics and Types available on the
DDS Global Data Space. Requires implementation of the INFO submessage and the associated behaviors.
Complete profile. Requires implementation of the complete specification.
14. 8 DDS XRCE Revised Submission
4 References
4.1 Normative References
The following normative documents contain provisions that, through reference in this text, constitute provisions of this
specification. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply.
[IETF RFC-1982] Serial Number Arithmetic. https://tools.ietf.org/html/rfc1982
[IDL] Interface Definition Language (IDL), version 4.1, http://www.omg.org/spec/IDL/4.1/
[DDS] Data Distribution Service for Real-Time Systems Specification, version 1.2
http://www.omg.org/spec/DDS/1.2
[DDS-XML] DDS Consolidated XML Syntax, version 1.0, http://www.omg.org/spec/DDS-XML/1.0/
[DDS-XTYPES] Extensible And Dynamic Topic Types for DDS, version 1.2, http://www.omg.org/spec/DDS-
XTypes/1.2/
[UML] Unified Modeling Language, version 2.5, http://www.omg.org/spec/UML/2.5
4.2 Non-normative References
15. DDS-XRCE, Revised Submission 9
5 Terms and Definitions
For the purposes of this specification, the following terms and definitions apply.
Data Distribution Service (DDS)
An OMG distributed data communications specification that allows Quality of Service policies to be specified for data
timeliness and reliability. It is independent of implementation languages.
DDS data-space
A “DDS data-space” consists of a collection of peers communicating over the Data Distribution Service and the
collection of data observable by those peers.
GUID
Globally Unique Identifier
17. DDS-XRCE, Revised Submission 11
7 Additional Information
7.1 Changes to Adopted OMG Specifications
This specification does not change any adopted OMG specification.
7.2 Acknowledgements
The following companies submitted this specification:
Real-Time Innovations, Inc.
eProsima
TwinOaks Computing
18. 12 DDS XRCE Revised Submission
8 DDS-XRCE Object Model
8.1 General
This specification defines a wire protocol, the DDS-XRCE protocol, to be used between an XRCE Client and an XRCE
Agent. The XRCE Agent is a DDS Participant in the DDS Global Data Space. The DDS-XRCE protocol allows the
client to use the XRCE Agent as a proxy in order to produce and consume data in the DDS Global Data Space.
To model the interaction between the XRCE Client and the XRCEAgent this specification defines a UML model for the
XRCEAgent. This model, called the DDS-XRCE Object Model, defines the objects, interfaces, and operations to be
implemented by the agent and how they relate to operations on the Standard DDS Object Model as defined in the OMG
Data-Distribution Service Specification [DDS].
The DDS-XRCE protocol is defined as a set of logical messages exchanged between the XRCE Client and the DDS-
XRCEAgent. These messages perform logical actions on the DDS-XRCE Object Model that result in corresponding
actions on the Standard DDS Object Model. The specification of these logical actions fully describes the observable
behavior of the XRCE Agent and its interactions both with the Client and the DDS Global Data Space.
The DDS-XRCE Object Model both extends and simplifies the Standard DDS Object Model. It extends it to provide an
access control model and application management model that support disconnected clients. It simplifies it to reduce the
number of objects and operations and make it more suitable for resource constrained, low-power clients. Despite this
DDS-XRCE offers complete access to the DDS Global Data space. Any DDS Topic may be published or subscribed on
any DDS with any QoS. This is illustrated in Figure 2.
Figure 2— DDS-XRCE Object Model Overview
pkg PIM Overview
XRCEClient
DDSXRCE
+AccessController
+Application
+DataReader
+DataWriter
+DomainParticipant
+EntityName
+ProxyClient
+Publisher
+Qos
+QosLibrary
+QosProfile
+RegisteredType
+ReturnStatus
+Root
+SessionId
+Status
+Submessage
+Subscriber
+Topic
+Type
+Entity
+Submessages
DDS
+Condition
+ContentFilteredTopic
+DataReader
+DataReaderListener
+DataWriter
+DataWriterListener
+DomainEntity
+DomainParticipant
+DomainParticipantFactory
+DomainParticipantListener
+Entity
+GuardCondition
+Listener
+Publisher
+PublisherListener
+QosPolicy
+QueryCondition
+ReadCondition
+SampleInfo
+Status
+StatusCondition
+Subscriber
+SubscriberListener
+Topic
+TopicDescription
+TopicListener
+TypeSupport
+WaitSet
+Qos
Qos
+DataReaderQos
+DataWriterQos
+DomainParticipantQos
+PublisherQos
+SubscriberQos
+TopicQos
(from DDS)
«use»
«use»
«use»
19. DDS-XRCE, Revised Submission 13
The DDS-XRCE Object Model is contained in the package DDS-XRCE and acts as a façade to the Standard DDS
Object Model (from the DDS specification, contained in the DDS package).
All the operations described in the DDS-XRCE PIM pertain to the interaction of a client application with a single DDS-
XRCE agent. The scope of all the operations is therefore limited to the interactions with that one DDS-XRCE agent.
Notwithstanding that, client applications may interact with each other despite connecting to different DDS-XRCE agents.
These interactions would happen as a consequence of the DDS-XRCE agents creating and performing operations on
DDS DomainParticipant entities, which exchange information in accordance to the DDS specification.
The specification does not preclude DDS-XRCE agents from proxying for other DDS-XRCE agents and therefore create
a network of DDS-XRCE agents supporting store-and-forward deployment scenarios. This is transparent to the DDS-
XRCE client applications. This is illustrated in Figure 3.
Figure 3— DDS-XRCE Agents operating in relay mode
The XRCEAgents can communicate with each other using the same DDS-XRCE protocol. These enables store-and-
forward dataflows. This type of deployment is transparent to the XRCEClient applications and the DDS applications.
20. 14 DDS XRCE Revised Submission
8.2 Model Overview
At the highest-level DDS-XRCE Object Model consists of 5 classes: The Root singleton, ProxyClient,
Application, AccessController, and DomainParticipant.
Figure 4 — DDS-XRCE Object Model Overview
The Root singleton is the entry point for the service and functions as a factory for all the Objects managed by the
XRCEAgent.
The ProxyClient class models the client application that interacts with the Agent using the XRCE protocol. Each
Application object is associated with a single Client and gets its access rights from those assigned to the Client.
The Application class models a software application that connects with the DDS-XRCE Client and manages the
DDS objects needed to publish and subscribe data on one or more DDS Domains. An Application can be associated
with zero of more DomainParticipant objects.
The AccessController is responsible for making decisions regarding the resources and operations a particular
Client is allowed to perform. It contains rules that associate a Client with privileges which determine which DDS domain
an application executing on behalf of a client may join, the DDS Topics it can read and write, etc.
The DDS-XRCE DomainParticipant is a proxy for a DDS DomainParticipant and models the association
with a DDS domain and the capability of the Application to publish and subscribe to Topics on that domain.
classOverview
DDSXRCE::Application
DDSXRCE::ProxyClient «singleton»
DDSXRCE::Root
DDSXRCE::
DomainParticipant
DDSXRCE::AccessController
DDSXRCE::QosLibrary
- name: string
«value»
DDSXRCE::Type
- name: string
«use»
0..*
1
0..*
0..*
«use»
21. DDS-XRCE, Revised Submission 15
8.3 XRCE DDS Proxy Objects
Several of the DDS-XRCE objects act as proxy to corresponding DDS objects. These proxy objects allow the client
application to participate as first-class citizens on the DDS network by delegating the actual DDS behavior and DDS-
RTPS protocol implementation to the proxy DDS objects.
This relationship is shown in Figure 5.
Figure 5 -- DDSXRCE objects that proxy DDS Entities
8.4 XRCE Object Identification
Each XRCE Object managed by the XRCEAgent on behalf of a specific XRCEClient is identified by means of an
ObjectId. This implies that the ObjectId shall be unique within the scope of an Agent and a ClientKey. The
value of the ObjectId for a particular object be configured on the XRCEAgent or specified by the XRCEClient at the
time the object is created.
classDDS-Mapping
DDSXRCE::
DomainParticipant
DDSXRCE::Publisher
DDSXRCE::Subscriber
DDSXRCE::
DataWriter
DDSXRCE::DataReader
DDSXRCE::Topic
DDS::DomainParticipantFactory
DDS::DomainParticipant
DDS::Publisher
DDS::Subscriber
DDS::TopicDescription
DDS::Topic
DDS::ContentFilteredTopic
DDS::DataReader
DDS::DataWriter
«value»
DDSXRCE::Qos
«value»
DDSXRCE::
QosProfile
Qos
+DataReaderQos
+DataWriterQos
+DomainParticipantQos
+PublisherQos
+SubscriberQos
+TopicQos
(from DDS)
DDSXRCE::Application
«use»
«use»
«use»
«use»
«use»
«use»
0..*
«use»
«use»
«use»
«use»
«use»
22. 16 DDS XRCE Revised Submission
There are two reserved values for ObjectId. The value {0x00, 0x00} is referred as OBJECTID_INVALID and
represents an invalid object. The value {0xFF, 0xFF} is referred as OBJECTID_CLIENT and represents the
DDSXRCE::ProxyClient object.
Alternatively, objects may also be identified by a string resourceName. The format of this name depends on the resource
and provides a way to refer to a resource configured on the agent using a configuration file or similar means.
8.5 Data types used to model operations on XRCE Objects
The operations on the XRCE objects accept parameters. The format of these parameters is described as a set of IDL data
types. These IDL descriptions are used both in the description of the XRCE Object operations as well as to define the
wire representation of the messages exchanged between the Client and the Agent.
The IDL definitions for the data types shall be as specified in Annex A IDL Types.
The following sub clauses provide explanations for some of the key data types specified in Annex A IDL Types.
8.5.1 Data and Samples
When the XRCEAgent sends data to the XRCEClient it may use one of four possible formats. The difference is whether
the data is sent by itself, or accompanied with meta-data such as timestamp and sequence numbers. Another difference is
whether the message contains a single sample or a sequence of those.
While it would be possible to combine all these representations into a single type (e.g. a union) this would introduce
additional bytes in the serialization which is undesirable in extremely resource-constrained environments.
The five possible representation are: SampleData, Sample, SampleDataSeq, SampleSeq, and
SamplePackedData. They respectively correspond to the DataFormat values FORMAT_DATA,
FORMAT_DATA_SEQ, FORMAT_SAMPLE, FORMAT_SAMPLE_SEQ, and FORMAT_PACKED. Their IDL
definition shall be as specified in Annex A IDL Types.
All these representations serialize the data XCDR representation defined in [DDS-XTYPES]. For example, the definition
of the SampleData is given by the IDL:
@extensibility(FINAL)
struct SampleData {
XCDRSerializedBuffer serialized_data;
};
In this structure the XCDRSerializedBuffer represents the bytes resulting from serializing the specific application
data type being sent using the XCDR rules defined in clause 7.4 of [DDS-XTYPES].
Other representations end up including a SampleData to hold the serialized application data. For example Sample is
defined as:
@extensibility(FINAL)
struct Sample {
SampleInfo info;
SampleData data;
};
8.5.2 DataRepresentation
The DataRepresentation type is used to hold values of data samples as well as additional sample information such
23. DDS-XRCE, Revised Submission 17
as sequence number or timestamps. It is used by the DDSXRCE::ProxyClient write operation.
The DataRepresentation is defined as a union discriminated by a DataFormat. Depending on the discriminator
it selects one of the formats defined in clause 8.5.1.
The possible values for the DataFormat and the resulting representation are described in Table 1 below.
Table 1 Interpretation of the DataFormat
DataFormat Selected DataRepresentation union member
FORMAT_DATA The selected member shall be data of type SampleData.
This member contains a single sample, not a sequence and shall contain
only the data without additional sample information.
FORMAT_DATA_SEQ The selected member shall be data_seq of type SampleDataSeq.
This member contains a sequence of samples. Each sample shall
contain only the data without additional sample information.
FORMAT_SAMPLE The selected member shall be sample of type Sample.
This member contains a single sample, not a sequence and shall contain
both the data and the additional sample information.
FORMAT_SAMPLE_SEQ The selected member shall be sample_seq of type SampleSeq.
This member contains a sequence of samples, each containing both the
data and the additional sample information.
FORMAT_PACKED The selected member shall be packed_samples of type
SamplePackedSeq.
This member contains a sequence of samples, each containing both the
data and the additional sample information but using a more compact
representation than for FORMAT_SAMPLE_SEQ.
8.5.3 ObjectVariant
The ObjectVariant type is used to hold the representation of a DDSXRCE Object. It is used by the
DDSXRCE::ProxyClient create, update, and get_info operations.
The ObjectVariant is defined as a union discriminated by ObjectKind, each value of the discriminator selects an
appropriate object representation for that specific object kind.
Objects may have multiple representations each using a different RepresentationFormat. The reason is that some formats
are optimized for expressiveness and ease of configuration whereas others minimize the size used to transmit the
representation.
24. 18 DDS XRCE Revised Submission
There are three supported RepresentationFormat values: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
The REPRESENTATION_BY_REFERENCE uses a string_reference. This string refers by name to a
description already known to the XRCEAgent. This can be used to represent any object in an extremely
compact manner. But requires pre-configuration of the XRCEAgent. The rules for referring to objects
preconfigured in the XRCEAgent follow the for object references in the [DDS-XML] specification.
The REPRESENTATION_AS_XML_STRING represents the object using XML. This can be used to
dynamically represent any object at the expense of the verbosity introduced by the XML format. The XML
format follows the standard defined in [DDS-XML].
The REPRESENTATION_IN_BINARY represents objects using a binary representation obtained by serializing
using XCDR an IDL-defined data-structure that depends on the kind of object. This representation is very
compact but it can only be used to represent a subset of the objects. For example not all DDS QoS can be
expressed using the binary representation.
The following subsections provide details of the ObjectVariant representation for each kind of object.
8.5.3.1 DDSXRCE::QosProfile
The OBJK_QOSPROFILE_Representation supports only the REPRESENTATION_BY_REFERENCE and
REPRESENTATION_AS_XML_STRING.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
QosProfile known to the XRCEAgent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a QosProfile as defined in [DDS-XML].
The REPRESENTATION_BY_REFERENCE XML representation may reference other QoS profiles already known to
the Agent. This includes profiles were pre-configured or pre-loaded to the Agent. This feature allows a compact
representation of a QosProfile that simply references an existing one as in:
<qos_profile base_name=”MyQosLib:MyQosProfile”/>
This feature also allows a compact way to represent a QosProfile that differs slightly from an existing one:
<qos_profile base_name=”MyQosLib:MyQosProfile”>
<data_reader_qos>
<reliability><kind>RELIABLE_RELIABILITY_QOS</kind><reliability>
<data_reader_qos>
</qos_profile>
8.5.3.2 DDSXRCE::Type
The OBJK_TYPE_Representation supports the three representations: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE::Type known to the XRCEAgent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of the DDS Type as defined in [DDS-XML] and [DDS-XTYPES].
25. DDS-XRCE, Revised Submission 19
When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of
the structure OBJK_Type_Binary defined in Annex A IDL Types. This representation uses the TypeIdentifier defined in
and [DDS-XTYPES] to uniquely identify the type. However it does not describe the structure of the type.
Independent of the representation format, the additional members in OBJK_TYPE_Representation shall be interpreted as
specified below.
The participant_id contains the ObjectId of a DDSXRCE DomainParticipant object that proxies for the DDS
DomainParticipant used to register the DDS data-type with DDS.
The registered_type_name contains the name passed to the DDS TypeSupport register_type operation.
8.5.3.3 DDSXRCE::Application
The OBJK_APPLICATION_Representation supports only the REPRESENTATION_BY_REFERENCE and
REPRESENTATION_AS_XML_STRING.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE Application definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation shall contain the XML
representation of an Application as defined in [DDS-XML].
8.5.3.4 DDSXRCE::DomainParticipant
The OBJK_PARTICIPANT_Representation supports only the REPRESENTATION_BY_REFERENCE and
REPRESENTATION_AS_XML_STRING.
The OBJK_PARTICIPANT_Representation contains s string field named as_string.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE DomainParticipant definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a DomainParticipant as defined by [DDS-XML].
8.5.3.5 DDSXRCE::Topic
The OBJK_TOPIC_Representation supports the three representations: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE Topic definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a Topic as defined by [DDS-XML]
When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of
the structure OBJK_Topic_Binary defined in Annex A IDL Types.
Independent of the representation format, the additional members in OBJK_TYPE_Representation shall be interpreted as
specified below.
The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the
DDS DomainParticipant used to create the DDS Topic.
8.5.3.6 DDSXRCE::Publisher
The OBJK_PUB_Representation supports the three representations: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
26. 20 DDS XRCE Revised Submission
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE Publisher definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a Publisher as defined by [DDS-XML].
When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of
the structure OBJK_Publisher_Binary defined in Annex A IDL Types.
Independent of the representation format, the additional members in OBJK_PUB_Representation shall be interpreted as
specified below.
The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the
DDS DomainParticipant used to create the DDS Publisher.
8.5.3.7 DDSXRCE::Subscriber
The OBJK_SUB_Representation supports the three representations: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE Subscriber definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a Subscriber as defined by [DDS-XML].
When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of
the structure OBJK_Subscriber_Binary defined in Annex A IDL Types.
Independent of the representation format, the additional members in OBJK_SUB_Representation shall be interpreted as
specified below.
The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the
DDS DomainParticipant used to create the DDS Subscriber.
8.5.3.8 DDSXRCE::DataWriter
The OBJK_DW_Representation supports the three representations: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE DataWriter definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a DataWriter as defined by [DDS-XML].
When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of
the structure OBJK_DataWriter_Binary defined in Annex A IDL Types.
Independent of the representation format, the additional members in OBJK_DW_Representation shall be interpreted as
specified below.
The publisher_id shall contain the ObjectId of a DDSXRCE Publisher object that proxies for the DDS
Publisher used to create the DDS DataWriter.
The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the
DDS DomainParticipant to whom the aforementioned DDS Publisher belongs.
27. DDS-XRCE, Revised Submission 21
8.5.3.9 DDSXRCE::DataReader
The OBJK_DR_Representation supports the three representations: REPRESENTATION_BY_REFERENCE,
REPRESENTATION_AS_XML_STRING, and REPRESENTATION_IN_BINARY.
When using the REPRESENTATION_BY_REFERENCE the object_reference field shall contain the name of a
DDSXRCE DataReader definition known to the Agent.
When using the REPRESENTATION_AS_XML_STRING the string_representation field shall contain the XML
representation of a DataReader as defined by [DDS-XML].
When using the REPRESENTATION_IN_BINARY the binary_representation shall contain the XCDR serialization of
the structure OBJK_DataReader_Binary defined in Annex A IDL Types.
Independent of the representation format, the additional members in OBJK_DR_Representation shall be interpreted as
specified below.
The subscriber_id shall contain the ObjectId of a DDSXRCE Subscriber object that proxies for the DDS
Subscriber used to create the DDS DataReader.
The participant_id shall contain the ObjectId of a DDSXRCE DomainParticipant object that proxies for the
DDS DomainParticipant to whom the aforementioned DDS Subscriber belongs.
8.6 XRCE Object operations
8.6.1 Use of the ClientKey
All operations are performed within the context of a ClientKey with is used both to authenticate and identify the
client:
The ClientKey is assigned to each client. The ClientKey uniquely identifies the client to a particular
agent. The ClientKey is associated with a set of permissions for the client within the agent.
The ClientKey shall be considered secret. It needs to be configured both on the Client and in the Agent. The
creation and configuration is outside the scope of this specification.
The ClientKey shall not be interpreted.
With the exception of the operation DDSXRCE::Root create_client all other operations expect that the ClientKey
references an already exiting DDSXRCE::ProxyClient. If this is not the case the operation shall fail.
To avoid information leakage that could compromise security, the failure to locate a ClientKey may in some cases
result in a returnValue having STATUS_ERR_NOCLIENT while in others it may silently drop the connection to the
client.
The Agent shall maintain a counter on the number of times the STATUS_ERR_NOCLIENT was sent on an established
connection and once a certain threshold is crossed it shall close the connection. The agent may subsequently refuse or
throttle new connections originating from the same client transport endpoint that was previously closed. The specific
details of this behavior are implementation specific and left outside the scope of this specification.
8.6.2 DDSXRCE::Root
The DDSXRCE::Root object represents the Agent. An DDSXRCE::Agent is a singleton object that all agents shall have.
The DDSXRCE::Root is responsible for authenticating client applications and creating the DDSXRCE::ProxyClient
object associated with each client.
The logical operations on the DDSXRCE::Root are shown in Table 2.
28. 22 DDS XRCE Revised Submission
Table 2-- DDSXRCE::Root operations
create_client ResultStatus
object_representation OBJK_CLIENT_Representation
delete_client ResultStatus
8.6.2.1 Operation create_client
Inputs
object_representation (OBJK_CLIENT_Representation) a representation of the Client.
Outputs
returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The
object_id in the returnValue shall be set to match the object_id input parameter.
The object_representation shall contain an OBJK_CLIENT_Representation which is used to initialize the
DDSXRCE::ProxyClient. The XRCEAgent shall perform the following checks and actions based on the information
found within the The object_representation:
Check the xrce_cookie to ensure it matches the predefined XRCE_COOKIE constant. If it does not match the
creation shall fail and set the returnValue to{STATUS_LAST_OP_CREATE,
STATUS_ERR_INVALID_DATA}.
Check that the major version (xrce_version[0]) matches the XRCE_VERSION_MAJOR. If it does not match,
the creation shall fail and set the returnValue to {STATUS_LAST_OP_CREATE,
STATUS_ERR_INCOMPATIBLE}.
Check the client_key is authorized to connect to the XRCEAgent. If this check fails the operation shall fail and
set the returnValue to {STATUS_LAST_OP_CREATE, STATUS_ERR_DENIED}.
Check if there is an existing DDSXRCE::ProxyClient object associated with the same ClientKey and if
so compare the session_id of the existing ProxyClient with the one in the object_representation:
o If a ProxyClient exists and has the same session_id then the operation shall not perform any action
and shall set the returnValue to {STATUS_LAST_OP_CREATE,STATUS_OK}.
o If a ProxyClient exist and has a different session_id then the operation shall delete the existing
DDSXRCE::ProxyClient object and shall proceed as if the ProxyClient did not exist.
Check there are sufficient internal resources to complete the create operation. If there are not, then the operation
shall fail and set the returnValue to {STATUS_LAST_OP_CREATE, STATUS_ERR_RESOURCES}.
All communication state between a client and an Agent is managed by the associated ProxyClient. Therefore
deletion of an existing ProxyClient resets any prior communication state between the client and the agent. Any
messages that were cached pending acknowledgments shall be discarded.
The Agent shall create a ProxyClient object and shall:
Initialize its state to have the specified session_id.
Initialize the builtin streams with sequence number 0.
Set the returnValue to {STATUS_LAST_OP_CREATE, STATUS_OK}.
The Agent may use the client’s_timestamp to detect time-synchronization differences between the XRCEClient and the
XRCEAgent. The use of this information is left outside the scope of this specification.
29. DDS-XRCE, Revised Submission 23
8.6.2.2 Operation delete_client
Outputs
returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The
object_id in the returnValue shall be set to match the object_id input parameter.
The Agent shall check the ClientKey to locate an existing DDSXRCE:ProxyClient. If the object is not found the
operation shall fail and returnValue shall be set to {STATUS_LAST_OP_DELETE, STATUS_ERR_INVALID}. If the
object is found it shall be delete and returnValue shall be set to {STATUS_LAST_OP_DELETE, STATUS_OK}.
8.6.3 DDSXRCE::ProxyClient
The DDSXRCE::ProxyClient object represents a specific XRCEClient inside a concrete XRCEAgent. The
ProxyClient object is identified by the clientKey.
The logical operations on the ProxyClient are shown in Table 3.
Table 3 DDSXRCE::ProxyClient operations
create ResultStatus
creation_mode CreationMode
objectid_prefix ObjectIdPrefix
object_representation ObjectVariant
update ResultStatus
objectid_prefix ObjectIdPrefix
object_representation ObjectVariant
get_info ResultStatus
out: info ActivityInfoVariant
out: config ObjectVariant
info_mask InfoMask
objectid_prefix ObjectIdPrefix
delete ResultStatus
objectid_prefix ObjectIdPrefix
30. 24 DDS XRCE Revised Submission
8.6.3.1 Operation create
Inputs
creation_mode (CreationMode) controls the behavior of the operation when there is an existing object that
partially matches the description of the object that the client wants to create.
objectid_prefix (ObjectIdPrefix) the desired ObjectId for the created object.
object_representation (ObjectVariant) a representation of the object that the client wants to create.
Outputs
returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The
object_id in the returnValue shall be set to match the object_id input parameter.
This operation attempts to create a DDSXRCE object according to the specification provided in the
object_representation parameter. The ObjectVariant is a union discriminated by the ObjectKind that is used to
define the kind of DDSXRCE object being created. We will refer to this ObjectKind as the “input_objectkind”.
The object_prefix parameter contains the desired ObjectId for the object.
The combination of the objectid_prefix and the ObjectKind contained in the object_representation discriminator
shall be used to construct the “input” ObjectId. We shall refer to this ObjectId as the “input_objectid”.
The selected member of the ObjectVariant contains the information required to construct an object of
ObjectKind input_objectkind.
The creation_mode affects the behavior of the create operation as specified in Table 4.
31. DDS-XRCE, Revised Submission 25
Table 4 -- CreationMode influence on create operation
creation
mode
reuse
creation
mode
replace
input
objectid
exists
Result
* * NO Create object according to Table 5.
FALSE FALSE YES No action taken. Set returnValue to:
{ STATUS_LAST_OP_CREATE,
STATUS_ERR_ALREADY_EXISTS }
FALSE TRUE YES Delete existing object as specified by the delete operation.
Create object according to Table 5.
TRUE FALSE YES Check if object_representation matches the existing Object:
If it matches no action is taken. Set returnValue to:
{ STATUS_LAST_OP_CREATE , STATUS_OK_MATCHES }
If it does not match no action is taken. Set returnValue to:
{ STATUS_LAST_OP_CREATE , STATUS_ERR_MISMATCH }
TRUE TRUE YES Check if object_representation matches the existing Object:
If it matches no action is taken. Set returnValue to:
{ STATUS_LAST_OP_CREATE , STATUS_OK_MATCHES }
If it does not match delete existing object as specified by the delete
operation and then create a new object according to Table 5.
All DDS-XRCE object representations that derive from OBJK_CommonString_Representation use a string field
as_string to describe the DDS-XRCE object being created. This version of the speciation supports two formats for the
string:
Strings that start with the prefix “ref:”
Strings that start with the prefix “xml:”
32. 26 DDS XRCE Revised Submission
If the string starts with the prefix “ref:” then OBJK_CommonString_Representation references a DDSXRCE
definition that must already be known to the Agent. In this case the agent shall locate that definition and use that to
construct the object. If the definition is not found the create operation shall fail and set returnStatus
{STATUS_LAST_OP_CREATE,STATUS_ERR_DDS_ERROR }
If the string starts with the prefix “xml:” then the Agent shall use that definition to create the DDSXRCE object of the
type selected by the ObjectVariant.
In either situation the creation of the DDSXRCE object may create additional DDSXRCE objects nested within, for
example the description of a DDSXRCE DomainParticipant may contain Topics, Publishers, Subscribers, DataWriters,
DataReaders, etc. In this case the failure to create any nested entity shall be considered a failure to create the contained
entity as well.
Some of the DDSXRCE objects may be defined by this specification as proxies for DDS Entities. In this case the
creation of the DDSXRCE Object will automatically trigger the creation of the proxy DDS Entity. Failure to create a
DDS Entity shall be considered a failure to create the proxy DDSXRCE object as well.
If the creation of the DDSXRCE object fails then there should be no associated DDS-RTPS discovery traffic generated
by the Agent. This means that all DDS entities shall be created disabled, such that the creation does not result on DDS-
RTPS discovery traffic and enabled (if so configured by their QoS) only after it has been determined that the creation has
succeeded.
If the creation succeeds the Agent shall set returnStatus {STATUS_LAST_OP_CREATE, STATUS_OK} .
The creation of DDSXRCE Objects is done in accordance to the object_representation parameter. The specific behavior
depends on the ObjectKind. See Table 5.
33. DDS-XRCE, Revised Submission 27
Table 5 Behavior of the create operation according to the ObjectKind
ObjectKind Create behavior
OBJK_QOSPROFILE The ObjectVariant is a OBJK_QOSPROFILE_Representation which references or contains
a QosProfile definition.
The agent shall use that definition to create a DDSXRCE QosProfile and an associated the
QoS Profile definitions interpreted in accordance to the representation defined in 8.5.3.1.
OBJK_PARTICIPANT The ObjectVariant is a OBJK_PARTICIPANT_Representation which references or
contains a DomainParticipant definition.
The agent shall use that definition to create a DDSXRCE DomainParticipant and an
associated DDS DomainParticipant with all the contained entities found within the
definition in accordance to the representation defined in 8.5.3.4.
OBJK_TYPE The ObjectVariant is a OBJK_TYPE_Representation which references or contains a Type
definition.
The agent shall use that definition to create a DDSXRCE Type in accordance to the
representation defined in 8.5.3.2.
The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id.
If this object is not found the operation shall fail and return
{ STATUS_LAST_OP_CREATE , STATUS_ ERR_UNKNOWN_REFERENCE }
OBJK_TOPIC The ObjectVariant is a OBJK_TOPIC_Representation which references or contains a Topic
definition.
The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id.
If this object is not found the operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall use the definition to create a DDSXRCE Topic in accordance with the
representation defined in 8.5.3.5. The DDS Topic shall be created using the
DomainParticipant identified by the participant_id.
OBJK_PUBLISHER The ObjectVariant is a OBJK_PUBLISHER_Representation which references or contains a
Publisher definition.
The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id.
If this object is not found the operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall use the definition to create a DDSXRCE Publisher in accordance with the
representation defined in 8.5.3.6. The DDS Publisher shall be created using the
DomainParticipant identified by the participant_id.
OBJK_SUBSCRIBER The ObjectVariant is a OBJK_SUBSCRIBER_Representation which references or contains
a Subscriber definition.
The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id.
If this object is not found the operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall use the definition to create a DDSXRCE Subscriber in accordance with the
representation defined in 8.5.3.7. The DDS Subscriber shall be created using the
DomainParticipant identified by the participant_id.
OBJK_DATAWRITER The ObjectVariant is a OBJK_DW_Representation which references or contains a
DataWriter definition.
34. 28 DDS XRCE Revised Submission
The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id.
If this object is not found the operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall locate the DDSXRCE Publisher identified by the publisher_id. If this
object is not found or if it does not belong to the previously-located DomainParticipant the
operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall use the definition to create a DDSXRCE DataWriter in accordance with the
representation defined in 8.5.3.8. The DDS DataWriter shall be created using the Publisher
identified by the publisher_id.
OBJK_DATEREADER The ObjectVariant is a OBJK_DW_Representation which references or contains a
DataReader definition.
The agent shall locate the DDSXRCE DomainParticipant identified by the participant_id.
If this object is not found the operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall locate the DDSXRCE Subscriber identified by the subscriber_id. If this
object is not found or if it does not belong to the previously-located DomainParticipant the
operation shall fail and return
{STATUS_LAST_OP_CREATE, STATUS_ ERR_UNKNOWN_REFERENCE}
The agent shall use the definition to create a DDSXRCE DataReader in accordance with the
representation defined in 8.5.3.9. The DDS DataReader shall be created using the
Subscriber identified by the subscriber_id.
8.6.3.2 Operation update
Inputs
objectid_prefix (ObjectIdPrefix) the object being updated.
object_representation (ObjectVariant) of the updated object.
Outputs
returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The
object_id in the returnValue shall be set to match the object_id input parameter.
This operation attempts to update an existing object in the Agent. If the object exists and the update is successful
STATUS_OK is returned, otherwise a status indicating an error is returned:
If the object does not already exist STATUS_ERR_UNKNOWN_REFERENCE is returned.
If the update was unsuccessful due to invalid parameters, STATUS_ERR_INVALID_DATA is returned. If an
update is unsuccessful the referenced object shall returns to its previous configuration.
If the object cannot be updated due to permission restrictions, STATUS_ERR_DENIED is returned.
8.6.3.3 Operation get_info
Inputs
objectid_prefix (ObjectIdPrefix) the object queried.
info_mask (InfoMask) selects the kind of information to retrieve.
35. DDS-XRCE, Revised Submission 29
Outputs
returnValue (ResultStatus): Indicates whether the operation succeeded. The object_id in the returnValue shall
be set to match the object_id input parameter.
activity (ActivityInfo): Contains the current activity of the specified object.
config (ObjectVariant): Contains the current configuration of the specified object.
This operation returns the configuration and activity data for an existing object.
If the object does not already exist STATUS_ERR_UNKNOWN_REFERENCE is returned.
If the object cannot be accessed due to permission restrictions STATUS_ERR_DENIED is returned.
8.6.3.4 Operation delete
Inputs
objectid_prefix (ObjectIdPrefix) the object being deleted.
Outputs
returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The
object_id in the returnValue shall be set to match the object_id input parameter.
This operation deletes an existing object. If the object is successfully deleted STATUS_OK is returned.
If the object does not exist STATUS_ERR_UNKNOWN_REFERENCE is returned.
If the object cannot be deleted due to permission restrictions, STATUS_ERR_DENIED is returned.
8.6.4 DDSXRCE::DataWriter
The operations are defined in Table 6.
Table 6 DDSXRCE::DataWriter operations
write ResultStatus
object_id ObjectId
data DataRepresentation
8.6.4.1 Operation write
Inputs
object_id (ObjectId) the object that shall publish the data.
data (SampleDataRepresentation) data to be written.
Outputs
returnValue (ResultStatus): Indicates whether the operation succeeded and the current status of the object. The
object_id in the returnValue shall be set to match the object_id input parameter.
This operation writes one or more samples using the DDSXRCE::DataWriter identified by the object_id.
If the data is successfully written STATUS_OK shall be returned.
If the DDSXRCE::DataWriter object identified by the object_id does not exist, the ResultStatus
STATUS_ERR_UNKNOWN_REFERENCE shall be returned.
36. 30 DDS XRCE Revised Submission
If the client is not allowed to write data using the referenced object_id due to permission restrictions, the
ResultStatus STATUS_ERR_DENIED shall be returned.
If the data could not be written successfully due, for example invalid data format, the ResultStatus
STATUS_ERR_INVALID_DATA shall be returned.
8.6.5 DDSXRCE::DataReader
The operations are defined in Table 7 .
Table 7 DDSXRCE::DataReader operations
read ResultStatus
out: read_data DataRepresentation
object_id ObjectId
read_spec ReadSpecification
8.6.5.1 Operation read
Inputs
object_id (ObjectId) the object to read data from.
read_spec (ReadSpecification) Read specification. The operation will only return data that matches the
constraint.
Outputs
returnValue (ResultStatus): Indicates whether the operation succeeded.
data_read (SampleDataRepresentation): Data matching the read_spec or nil if there was an error.
This operation reads one or more samples from the DDSXRCE::DataReader identified by the object_id. If the data is
successfully read STATUS_OK shall be returned.
If the object does not exist STATUS_ERR_UNKNOWN_REFERENCE shall be returned.
If the client is not allowed to read data using the referenced object_id due to permission restrictions,
STATUS_ERR_DENIED shall be returned.
The read_spec parameter controls the data returned by this operation. The fields of this structure shall be interpreted as
described in Table 8.
Table 8 Interpretation of the ReadSpecification
field type interpretation
data_format DataFormat Selects one the data formats. See 8.5.1
max_samples unsigned
short
Maximum number of samples to return as a result of the
read.
max_elapsed_time long Maximum amount of time in seconds that may be spent
delivering the samples from the read operation.
37. DDS-XRCE, Revised Submission 31
max_rate long Maximum rate in bytes per second at which the data may
be returned to the read operation.
content_filter_expression string A content filter expression selecting which data to read.
The syntax shall be as specified in Annex B (Syntax for
Queries and Filters) of the DDS specification [DDS].
38. 32 DDS XRCE Revised Submission
9 The DDS-XRCE Protocol
9.1 General
The XRCEAgent implements the operations specified in the DDS-XRCE Object Model as a messaging protocol between
the XRCEClient and XRCEAgent. The DDS-XRCE protocol is designed specifically to address the limited CPU, power
and network bandwidth found in many types of low-powered devices and enable the device to be discoverable in the
larger DDS network. Specifically, it is designed to meet the unique challenges posed by these types of devices and the
main features include:
Operate over networks with bandwidth limited to 40-100Kbps.
Work with devices that may be active only every few minutes, days, months or even years.
Programming API independence, supporting devices that are programmed in a highly specialized language or
framework.
Minimal discovery protocol.
A message protocol that can send updates to multiple DDS Topics efficiently.
Supports secure communication at the transport level.
Full read/write access to any data in the DDS Global Data Space (subject to access control limits).
A full implementation requiring less than 100KB of code.
In contrasts to applications that use the DDS API directly, DDX-XRCE clients:
Do not have a standard API, so they are not portable across vendor implementations.
Cannot operate without infrastructure support. They need a DDS-XRCE Agent to be reachable to them.
Cannot communicate directly peer-to-peer. All communications are brokered (relayed) by one or more DDS-
XRCE Agents.
9.2 The DDS-XRCE Protocol Transport Model
DDS-XRCE is not limited to a particular transport. However, as a minimum it is expected that the transport support the
following functionality:
(1) It can deliver messages of at least 64 bytes.
(2) It handles the integrity of messages dropping any ones that are corrupted.
(3) It provides the size of the received message as well as the source address.
(4) It supports bi-directional communication.
(5) It provides transport-level security. Specifically the means for Client to authenticate the Agent and for secure
(encrypted and authenticated) message exchange.
The following functionality is explicitly not required from the transport:
(1) It does not need to provide reliability. Messages may be dropped.
(2) It does not need to provide ordering. Messages may arrive out of order.
(3) It does not need to provide notification of dropped messages.
9.3 Overview
XRCEClients and XRCEAgents exchange messages to execute operations and return results. The DDS-XRCE Protocol
defines a client, agent, session, and message. A client communicates with an agent using the DDS-XRCE protocol,
exchanging messages on a stream belonging to a session.
9.3.1 Message
A message is the unit of information sent via the transport and is a structured sequence of bytes sent on a DDS-XRCE
transport. A message has a sequence number that is used for ordering of messages, or to identify messages that have been
dropped by the transport.
39. DDS-XRCE, Revised Submission 33
The underlying XRCE Transport shall transfer messages as a unit. A single XRCE Transport may transport one or more
XRCE messages streams.
9.3.2 Session
A session defines a bi-directional connection between a client and an agent that has been established with a handshake.
The session is needed to exchange messages with the XRCEAgent. An XRCEClient may send messages over multiple
sessions, for example if it communicates with multiple XRCEAgents.
A session can contain, independent reliable and best-effort message streams.
9.3.3 Stream
A stream represents an independent ordered flow of messages within a session. Messages are ordered within a stream by
means of a sequence number. The sequence numbers used by different streams are independent from each other.
Streams can be reliable or best efforts. Each stream uses a constant endianess to encode the data in the
message/submessage headers and payload.
9.3.4 Client
A XRCEClient initiates the establishment of a session with an XRCEAgent. A XRCEClient may send and receive
messages to the agent on streams belonging to an established session.
9.3.5 Agent
An XRCEAgent listens to and accepts requests to establish sessions from XRCEClients. An XRCEAgent may send and
receive messages to a XRCEClient on streams belonging to an established session.
9.4 Message Structure
9.4.1 General
A message is composed of a message header followed by one or more Submessages and is transferred as a unit by the
underlying XRCE Transport.
Figure 6 — Message structure
9.4.2 Header Structure
The header is structured as follows:
40. 34 DDS XRCE Revised Submission
0 8 16 24 31
+----------------+--------+-------+----------------+----------------+
| sessionId | streamId | sequenceNr |
+----------------+----------------+----------------+----------------+
| clientKey (if sessionId >= 128) |
+----------------+--------+-------+----------------+----------------+
9.4.2.1 Sessions and the sessionId
A session is established between the XRCEClient and XRCEAgent to establish an initial context for the
communications. This includes the exchange of protocol versions, vendor identification, and other information needed to
correctly process messages.
A sessionId is scoped by the clientKey and is unique to an XRCEAgent for a given XRCEClient. Its value also
determines whether the Header includes a clientKey or not.
If the sessionId is between 0 and 127, both included, then the Header shall include the clientKey and the
sessionId is scoped by the clientKey.
If the sessionId is between 128 and 255, both included, then the Header shall not include the clientKey and the
sessionId is scoped by the source address of the message.
If the clientKey does not appear explicitly in the message header, the XRCEAgent must be able to locate it from the
source address of the message (see clause 9.2 and 9.4.2.4).
Three values of the sessionId are reserved:
The value 0 used to indicate the lack of a session within a Header containing a clientKey. This referred to as
SESSION_ID_NONE_WITH_CLIENT_KEY.
The value 128 (0x80) used to indicate the lack of a session within a Header that does not contain a clientKey.
This referred to as SESSION_ID_NONE_WITHOUT_CLIENT_KEY.
9.4.2.2 Streams and the streamId
A stream represents an independent flow of information between a XRCEClient and a XRCEAgent. Each message
belongs to a single stream. Messages belonging to the same stream must be delivered in the order they are sent.
Messages belonging to different streams are ordered relative to each other.
Streams are scoped by the session they belong to.
The streamId with value 0 is referred as STREAMID_NONE. This stream is used for messages exclusively containing
sub-messages that do not belong to any stream, such as HEARTBEAT and ACKNAK sub-messages. This messages still
contain a sequenceNr that can be ignored. Implementations may take advantage of the sequenceNr to discard duplicate
messages arriving within a short time window.
The streams with streamId between 1 and 127 (both included) are best-effort streams. The stream with streamId
between 128 and 255 are reliable streams. In other words if the streamId is not STREAMID_NONE, then the leading bit
of the streamId can be interpreted as a flag that indicates the reliability of the stream.
There are two built-in streams that are created whenever a session is created:
A built-in best-effort stream identified by a streamId with value 1. This is referred as
STREAMID_BUILTIN_BEST_EFFORTS.
A built-in reliable stream identified by a streamId with value 128. This is referred as
STREAMID_BUILTIN_RELIABLE.
41. DDS-XRCE, Revised Submission 35
9.4.2.3 sequenceNr
The sequenceNr is used to order messages within a stream and it is scoped by the stream. Messages belonging to
different streams are unordered relative to each other:
For the stream with streamId STREAMID_NONE value of the sequenceNr does not impose any order,
however it still may be used to discard duplicate messages.
For the stream with streamId different from STREAMID_NONE, the sequenceNr imposes an order. Messages
within a stream shall not be delivered out of order. In addition duplicate messages shall also be discarded.
Addition and comparison of sequence numbers shall use Serial Number Arithmetic as defined by [IETF RFC-1982] with
SERIAL_BITS set to 16. This implies that the maximum number of outstanding messages for a specific client session
stream is limited to 2^15, that is 32768.
The sequenceNr shall be encoded using little endian format.
9.4.2.4 clientKey
The clientKey uniquely identifies and authenticates an XRCEClient to the XRCEAgent.
The clientKey shall be present on the Header if the sessionId is between 0 and 127. See clause 9.4.2.1:
If the clientKey is present, it shall contain the ClientKey associated with the XRCEClient.
If the clientKey is not present, the XRCEAgent shall be able to derive the ClientKey associated with the
XRCEClient from the source address of the message (see clause 9.2). This means that the ClientKey has
either been pre-configured on the XRCEAgent for that particular source address, or else it has been exchanged
as part of the session establishment, see clause 8.6.2.1.
Any exchange if the clientKey is protected by the security mechanisms provided by the XRCE transport. These security
mechanisms are transport specific and may involve a pairing of each device with the agent or some initial handshake
used to establish a secure transport connection. The specific transport security mechanisms are outside the scope of this
specification.
9.4.3 Submessage Structure
Following the message header there shall be one or more Submessages. A Submessage shall be composed of a
submessage header and a payload.
0 4 8 16 24 31
+-------+-------+----------------+----------------+----------------+
| submessageHeader (4 Bytes) |
+---------------+----------------+----------------+----------------+
~ payload (up to to 32KB) ~
+---------------+----------------+----------------+----------------+
The ability to place multiple of Submessages within a single message reduces bandwidth by enabling multiple resources
to be operated on with a single message.
Submessages shall start at an offset that is a multiple of 4 relative to the beginning of the Message. This means that
additional padding may be added between the end of a submessage and the beginning of the next submessage.
9.4.4 Submessage Header
Every Submessage shall start with a Submessage header. The Submessage Header shall be structured as follows:
42. 36 DDS XRCE Revised Submission
0 4 8 16 24 31
+-------+-------+----------------+----------------+----------------+
| submessageId | flags | submessageLength |
+-------+-------+----------------+----------------+----------------+
9.4.4.1 submessageId
The submessageId identifies the kind of Submessage. The kinds of sub-messages are defined in 9.4.5.
9.4.4.2 flags
The flags field contains information about the content of the Submessage.
Bit 0, the ‘Endianness’ bit, indicates the endianness used to encode the submessage header and payload. If the Endianess
bit is set to 0 the encoding shall be big endian and otherwise little endian.
The flags field for all submessage kinds shall have the Endianness bit. Specific submessage kinds may define additional
flag bits.
9.4.4.3 submessageLength
The submessageLength indicates the length of the Submessage (excluding the Submessage header).
The submessageLength shall be encoded using little endian format, independent of value of the flags.
9.4.4.4 payload
The payload contains information specific to the submessage whose format depends on the kind of submessage
identified by the submessageId.
The definition of the payload shall use the data types defined in clause 8.5. See clause 9.4.5 and its subclauses.
9.4.5 Submessages
DDS-XRCE defines the 13 kinds of Submessages shown in the figure below:
Figure 7 — DDS-XRCE submessages
classSubmessages
DDSXRCE::Submessage
DDSXRCE::
Submessage::
CREATE
DDSXRCE::
Submessage::
GET_INFO
DDSXRCE::
Submessage::
DELETE
DDSXRCE::
Submessage::INFO
DDSXRCE::
Submessage::
STATUS
DDSXRCE::
Submessage::
ACKNACK
DDSXRCE::
Submessage::
HEARTBEAT
DDSXRCE::Submessage::
SubmessageHeader
- submessageId: byte
- flags: byte
- submessageLength: short
DDSXRCE::
Submessage::
DATA
DDSXRCE::
Submessage::
FRAGMENT
DDSXRCE::
Submessage::
READ_DATA
DDSXRCE::
Submessage::
WRITE_DATA
DDSXRCE::
Submessage::
RESET
DDSXRCE::
Submessage::
CREATE_CLIENT
1
43. DDS-XRCE, Revised Submission 37
Each submessage is identified by the submessageId. Some submessages may only be sent in one direction (e.g. only
XRCEClient to XRCEAgent or only XRCEAgent to XRCEClient) whereas others are bi-directional.
Table 9 -- SubmesageId values
SubmessageId Value Note
CREATE_CLIENT 0 Client to Agent.
CREATE 1 Client to Agent.
GET_INFO 2 Client to Agent.
DELETE 3 Client to Agent.
STATUS 4 Agent to Client; typically in response to CREATE, UPDATE or DELETE. Contains
information about the status of an Xrce object.
INFO 5 Agent to Client. Typically sent in response to a GET_INFO. Contains detailed
information about an Xrce: Object.
WRITE_DATA 6 Client to Agent. Used to write data using a Xrce::DataWriter.
READ_DATA 7 Client to Agent. Used to read data using a Xrce::DataReader.
DATA 8 Agent to Client in response to a READ_DATA provides data received by a
Xrce::DataReader.
ACKNACK 9 Bi-directional.
HEARTBEAT 10 Bi-directional.
RESET 11 Bi-directional.
FRAGMENT 12 Bi-directional
FRAGMENT_END 13 Bi-directional
9.4.5.1 CREATE_CLIENT
The CREATE_CLIENT submessage is sent by the XRCEClient to create a DDSXRCE::ProxyClient.
Reception of this sub-message shall result in the XRCEAgent calling the create_client operation on the
DDSXRCE::Root object, see 8.6.2.1. The parameters to this operation are obtained from the sub-message header flags
and payload.
The XRCEAgent shall send a STATUS message in response to this message, see 9.4.5.4.
9.4.5.1.1 payload
The payload shall contain the XCDR representation of the CREATE_Payload object below:
44. 38 DDS XRCE Revised Submission
@extensibility(FINAL)
struct CREATE_Payload : BaseObjectRequest {
OBJK_CLIENT_Representation object_representation;
};
9.4.5.2 CREATE
The CREATE submessage is sent by the XRCEClient to create a DDSXRCE Object. An example is creating an
DDSXRCE:DataWriter with a QoS profile.
Reception of this sub-message shall result in the XRCEAgent calling the create operation on the
DDSXRCE::ProxyClient object, see 8.6.3.1. The parameters to this operation are obtained from the sub-message header
flags and payload.
The XRCEAgent shall send a STATUS sub-message in response to this message, see 9.4.5.4.
9.4.5.2.1 flags
The create submessage defines two additional flag bits:
Bit 1, the ‘Reuse’ bit, encodes the value of the CreationMode reuse field.
Bit 2, the ‘Replace’ bit, encodes the value of the CreationMode replace field.
These flag bits modify the behavior of the Agent receiving the CREATE message. See clause 8.6.3.1.
9.4.5.2.2 payload
The payload shall contain the XCDR representation of the CREATE_Payload object below.
@extensibility(FINAL)
struct CREATE_Payload : BaseObjectRequest {
ObjectVariant object_representation;
};
9.4.5.3 DELETE
This submessage is sent by the XRCEClient to delete either a DDSXRCE Object. An example is deleting a
DDSXRCE:ProxyClient or a DDSXRCE:DataWriter.
Reception of this sub-message shall result in the XRCEAgent calling either the delete_client operation on the
DDSXRCE::Root (see 8.6.2.2), or else the delete operation on the DDSXRCE::ProxyClient object (see 8.6.3.4).
If the ObjectVariant contained within the payload has ObjectKind set to OBJK_CLIENT, then the XRCEAgent
shall call the delete_client operation. Otherwise it shall call the delete operation.
The parameters to the delete_client or the delete operation are obtained from the payload.
The XRCEAgent shall send a STATUS sub-message in response to this message, see 9.4.5.4.
9.4.5.3.1 payload
The payload shall contain the XCDR representation of the DELETE_RESOURCE_Payload object below.
@extensibility(FINAL)
struct DELETE_RESOURCE_Payload : BaseObjectRequest {
45. DDS-XRCE, Revised Submission 39
};
9.4.5.4 STATUS
The STATUS submessage is sent by the XRCEAgent in response to a CREATE_CLIENT, CREATE or DELETE
submessage.
The submessage contains the returnStatus to the operation that was triggered by the corresponding request message. For
example if the request message was a CREATE_CLIENT, the STATUS payload shall contain the returnStatus to the
create_client operation.
9.4.5.4.1 payload
The payload shall contain the XCDR representation of the RESOURCE_STATUS_Payload object below.
The request_id and object_id within the RESOURCE_STATUS_Payload shall match the identically named fields in the
corresponding request message.
@extensibility(FINAL)
struct RESOURCE_STATUS_Payload : BaseObjectReply {
};
9.4.5.5 GET_INFO
This submessage is sent by the XRCEClient to get information about a resource.
Reception of this sub-message shall result in the XRCEAgent calling the get_info operation on the
DDSXRCE::ProxyClient object (see 8.6.3.3). The parameters to this operation are obtained from the payload.
The XRCEAgent shall send a INFO sub-message in response to this message, see 9.4.5.4.
9.4.5.5.1 payload
The payload shall contain the XCDR representation of the GET_INFO_Payload object below.
@extensibility(FINAL)
struct GET_INFO_Payload : BaseObjectRequest {
InfoMask info_mask;
};
9.4.5.6 INFO
This submessage is sent by the XRCEAgent to the XRCEClient in response to a GET_INFO message.
The submessage contains the returnStatus and output parameters of the get_info operation that was triggered by the
corresponding request message.
9.4.5.6.1 payload
The payload shall contain the XCDR representation of the INFO_Payload object below.
The request_id and object_id within the RESOURCE_STATUS_Payload shall match the identically named fields in the
corresponding GET_INFO message.
@extensibility(FINAL)
struct INFO_Payload : BaseObjectReply {
46. 40 DDS XRCE Revised Submission
ActivityInfo activity;
ObjectVariant config;
};
9.4.5.7 READ_DATA
This submessage is used by the XRCEClient to initiate a reception (read) of cached data from a DDSXRCE::DataReader
object within the XRCEAgent.
Reception of this sub-message shall result in the XRCEAgent calling the read operation on a DDSXRCE::DataReader
object (see 8.6.5.1). The parameters to this operation are obtained from the payload.
The XRCEAgent shall one or more DATA sub-messages in response to this message, see 9.4.5.8.
The related Xrce::DataReader is identified by the object_id field in the payload.
After reception of this message the XRCEAgent will “stream” the data to the client until either the “end criteria”
specified in the payload read_specification is attained or else an explicit CANCEL_READ message is received from the
client.
The READ_DATA operation allows a XRCEClient to control when data can be sent by the XRCEAgent so that the
Agent does not unnecessarily wake up the client during its sleep cycle.
9.4.5.7.1 payload
The payload shall contain the XCDR representation of the READ_DATA_Payload object below.
@extensibility(FINAL)
struct READ_DATA_Payload : BaseObjectRequest {
ReadSpecification read_specification;
};
9.4.5.8 DATA
This submessage is sent by the XRCEAgent to the XRCEClient in response to a READ_DATA message.
The submessage contains the returnStatus and output parameters of the read operation on the DDSXRCE::DataReader
that was triggered by the READ_DATA message.
A single READ_DATA message can result on multiple, possible an open-ended sequence, of DATA submessages sent
as a response by the XRCEAgent. The DATA messages will continue to be sent until the terminating conditions on the
CONFIG_READ operation are reached, or until it is explicitly cancelled.
The request_id and object_id within the DATA payload shall match the identically named fields in the corresponding
READ_DATA message.
9.4.5.8.1 payload
The format the payload depends on the DataFormat of the ReadSpecification for the READ_DATA request. There are
four possible formats:
DATA_Payload_Data. This format shall be used when the corresponding ReadSpecification had DataFormat
set to the value FORMAT_DATA.
DATA_Payload_Sample This format shall be used when the corresponding ReadSpecification had DataFormat
set to the value FORMAT_SAMPLE.
47. DDS-XRCE, Revised Submission 41
DATA_Payload_DataSeq. This format shall be used when the corresponding ReadSpecification had
DataFormat set to the value FORMAT_DATA_SEQ.
DATA_Payload_SampleSeq. This format shall be used when the corresponding ReadSpecification had
DataFormat set to the value FORMAT_SAMPLE_SEQ.
DATA_Payload_PackedSamples. This format shall be used when the corresponding ReadSpecification had
DataFormat set to the value FORMAT_PACKED_SAMPLES.
For each of these formats the payload shall contain the XCDR representation of the equally named structure defined in
the IDL below.
@extensibility(FINAL)
struct DATA_Payload_Data : BaseObjectReply {
SampleData data;
};
@extensibility(FINAL)
struct DATA_Payload_Sample : BaseObjectReply {
Sample sample;
@extensibility(FINAL)
struct DATA_Payload_DataSeq : BaseObjectReply {
sequence<SampleData> data_seq;
};
@extensibility(FINAL)
struct DATA_Payload_SampleSeq : BaseObjectReply {
sequence<Sample> sample_seq;
};
@extensibility(FINAL)
struct DATA_Payload_PackedSamples : BaseObjectReply {
PackedSamples packed_samples;
};
48. 42 DDS XRCE Revised Submission
All the DATA payload representation derive from BaseObjectReply. The XRCEClient may use the request_id and
object_id of in the BaseObjectReply to locate the corresponding READ_DATA message and determine the DataFormat
of the ReadSpecification specified in the request.
As specified in
9.4.5.9 WRITE_DATA
This submessage is used by the XRCEClient to write data using a DDSXRCE::DataWriter inside the XRCEAgent.
Reception of this sub-message shall result in the XRCEAgent calling the write operation on a DDSXRCE::DataWriter
object (see 8.6.4.1). The parameters to this operation are obtained from the payload.
The related DDSXRCE::DataWriter is identified by the object_id field in the payload.
9.4.5.9.1 payload
The payload shall contain the XCDR representation of the WRITE_DATA_Payload object below.
struct WRITE_DATA_Payload {
DataRepresentation data_to_write;
};
9.4.5.10 ACKNACK
This Submessage is used to enable a transport independent reliability protocol to be implemented.
This specification does not limit a session to use a particular type of transport. If a session transport is able to reliably
send messages in case of disconnection or a wakeup/sleep cycle then these messages may not be required.
If these Submessages are used, this specification does not dictate how reliable a session shall be. However, in general it
is expected that it is the Client that initiates any synchronization. This is because a Client may not be continually
available as it goes on sleep cycles.
The ACKNACK message is directed to the same session and stream indicated in the Message header. For this reason it
does not have a objectId.
9.4.5.10.1 payload
The ACKNACK submessage payload contains a information about the state of the session and stream.
struct ACKNACK_Payload {
short firstUnackedSeqNr;
octet[2] nackBitmap;
};
The firstUnackedSeqNr indicates that all sequence numbers up to but not including it has been received.
The nackBitmap indicates missing sequence numbers, starting from firstUnackedSequenceNr.