DDS-PSM-Cxx 1.1 RTF Avatar
  1. OMG Issue

DDSPSMC11_ — dds::topic::TBuiltinTopicKey should be completely customizable.

  • Key: DDSPSMC11_-24
  • Status: open  
  • Source: ADLINK Technology Ltd ( Erik Hendriks)
  • Summary:

    In the DDS 1.4 specification, the IDL file describing the builtin topics consists of two parts:

    • A section with #define statements where certain datatypes may be customized by the different vendors.
    • A section where these customized datatypes are actually embedded in the builtin topic declarations.

    All builtin topics contain a key field of type BuiltinTopicKey_t that is defined in the following way:

    #define BUILTIN_TOPIC_KEY_TYPE_NATIVE long
    
    module DDS {
        struct BuiltinTopicKey_t {
            BUILTIN_TOPIC_KEY_TYPE_NATIVE value[3];
        };
    };
    

    This implies that vendors may specify part of the key (the array element type), but they may not specify it to be anything else than an array of three of those vendor specific datatypes.

    Right now, different vendors have specified the BuiltinTopicKey_t in various different ways: some uses an array of 16 octets to directly reflect the RTPS GUID, but the official DDS spec does not allow for this.

    For the DDS 1.4 specification, this has been files as a separate issue (see DDS15-206). For the Cxx PSM for DDS, this also needs to be addressed which is the purpose of this ticket. Right now, for the Cxx PSM specifies the dds::topic::BuiltinTopicKey as a vendor spefic instantiation of the dds::topic::TBuiltinTopicKey template in the following way:

    template <typename D>
    class dds::topic::TBuiltinTopicKey : public ::dds::core::Value<D>
    {
    public:
        /**
         * Gets the BuiltinTopicKey.
         *
         * @return the BuiltinTopicKey
         */
        const int32_t* value() const;
    
        /**
         * Sets the BuiltinTopicKey.
         *
         * @param v the value to set
         */
        void value(const int32_t v[]);
    };
    

    It is clear from this description that although the size of the array is unspecified, it is still implied that the key is an array of int32_t. This conflicts with the original DDS specification that explicitly allows for the builtin topic key type to be customizable by the user.

  • Reported: DDS-PSM-Cxx 1.0b2 — Tue, 5 Dec 2017 19:29 GMT
  • Updated: Sun, 30 Sep 2018 23:28 GMT