首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用openDDS传递任何对象?

如何使用openDDS传递任何对象?
EN

Stack Overflow用户
提问于 2014-11-06 10:50:41
回答 3查看 574关注 0票数 1

我正在使用openDDS发布/sun中间件。我使用复杂的结构测试了openDDS。

例如:

代码语言:javascript
复制
typedef struct DSMD
    {
          string a;           
          long b;

    } StandByModeData;

   struct DSMCD{        
    string SessionId;       
    DSMD Data;
  };

但是现在我有不同的structure.which是通过openDDS。

如何在idl结构中使用模板?

我需要这样的东西。

代码语言:javascript
复制
template <struct T> 
struct array { 
  T typr;
};
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-06 18:07:54

这是目前OpenDDS不可能做到的事情。IDL3+确实定义了模板化模块,这就像您的例子一样,但据我所知,OpenDDS或任何其他DDS供应商都不支持模板化模块。

票数 1
EN

Stack Overflow用户

发布于 2020-03-14 03:45:36

来自eProsima的快速RTPS可以支持多种数据类型,也就是动态类型生成器,一些示例动态构建器可以引用这里,github回购指的是https://github.com/eProsima/Fast-RTPS。IMHO,当数据类型支持std::string类型时,它可以支持任何类型的数据类型,因为std::string是一个通用的选择。对于不确定的数据类型,可以将数据转换为json格式的字符串来传递DDS。我一直在做这样的事情,以后还会有进一步的进展。

票数 0
EN

Stack Overflow用户

发布于 2021-02-16 14:41:56

您可以自己创建VMF (可变消息格式)消息类型。我正在编写的代码现在使用这个概念使用eprosima FastDDS在节点/参与者之间传递消息。同样的idl文件可以用于OpenDDS和FastDDS。在某些情况下,我们同时使用这两种DDS实现。

代码语言:javascript
复制
@topic
struct VariableMessageType
{
   /* Message id */
   long msg_id; 

   /* Number of bytes in the data vector */
   /* units: none */
   long num_bytes; 

   /* num_bytes sized array of bytes */
   /* units: none */
   sequence<octet> data; 
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26777584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档