最近也是一直在看fast-dds的源码,基本都是看的一些框架和业务逻辑相关的东西。也碰到了个关于guid的问题,正好总结下guid的组成。
- guid:在dds domain中全局标识RTPS entity,guid由两部分组成:prefix和entityid。
- prefix:在domain中唯一标识participant
- entityid:在participant中唯一标识entity
可以看下这个图:
也可以看下RTPS协议中对prefix和entityid的描述:
在fast-dds中有两个角色有guid的概念:分别是rtps participant和rtps endpoint。
-
RTPS Participant GUID:
每个participant都有GUID<prefix, entityid_participant>,其中常量entityid_participant是一个RTPS协议定义的特殊值。它的实际值取决于PSM。PSM相关的概念大家可以看下rtps的文档:https://www.omg.org/spec/DDSI-RTPS/2.2/PDF -
The GUIDs of the RTPS Endpoints within a Participant:
- participant内所有端点的guid都具有相同的前缀
- 一旦端点的guid已知,包含端点的参与者guid也已知
- 任何端点的guid可以从它所属的参与者的guid和它的实体id推导出来。