OpenDDS的GUID是如何构造的?
1、GUID、RepoID、GUID_t概念和关系
- GUID(Global Unique IDentifiers)是RTPS规范约定的DDS对象的唯一性ID;
- RepoId(Repository IDentifiers)是Repo服务约定的DDS对象的唯一性ID;
- GUID和RepoId,都是基于GUID_t结构体定义,名称不同,但实质上是一样的。
题外话:
无论是GUID还是RepoId,都可以根据自己的环境、业务和代码需要,自定义GUID_t结构体(共16个字节位)的组成部分,实现自己的特定需要。
1.1 基本定义
typedef ::CORBA::Octet GuidPrefix_t[12];
typedef ::CORBA::Octet EntityKey_t[3];
struct OpenDDS_Dcps_Export EntityId_t
{OpenDDS::DCPS::EntityKey_t entityKey;::CORBA::Octet entityKind;
}
struct OpenDDS_Dcps_Export GUID_t
{OpenDDS::DCPS::GuidPrefix_t guidPrefix;OpenDDS::DCPS::EntityId_t entityId;
};
typedef GUID_t RepoId;