我正在使用openDDS发布/sun中间件。我使用复杂的结构测试了openDDS。
例如:
typedef struct DSMD
{
string a;
long b;
} StandByModeData;
struct DSMCD{
string SessionId;
DSMD Data;
};但是现在我有不同的structure.which是通过openDDS。
如何在idl结构中使用模板?
我需要这样的东西。
template <struct T>
struct array {
T typr;
};发布于 2014-11-06 18:07:54
这是目前OpenDDS不可能做到的事情。IDL3+确实定义了模板化模块,这就像您的例子一样,但据我所知,OpenDDS或任何其他DDS供应商都不支持模板化模块。
发布于 2020-03-14 03:45:36
来自eProsima的快速RTPS可以支持多种数据类型,也就是动态类型生成器,一些示例动态构建器可以引用这里,github回购指的是https://github.com/eProsima/Fast-RTPS。IMHO,当数据类型支持std::string类型时,它可以支持任何类型的数据类型,因为std::string是一个通用的选择。对于不确定的数据类型,可以将数据转换为json格式的字符串来传递DDS。我一直在做这样的事情,以后还会有进一步的进展。
发布于 2021-02-16 14:41:56
您可以自己创建VMF (可变消息格式)消息类型。我正在编写的代码现在使用这个概念使用eprosima FastDDS在节点/参与者之间传递消息。同样的idl文件可以用于OpenDDS和FastDDS。在某些情况下,我们同时使用这两种DDS实现。
@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;
};https://stackoverflow.com/questions/26777584
复制相似问题