OpenDDS  Snapshot(2023/04/07-19:43)
Public Member Functions | Protected Attributes | List of all members
OpenDDS::DCPS::GuidConverter Class Reference

Conversion processing and value testing utilities for RTPS GUID_t types. More...

#include <GuidConverter.h>

Inheritance diagram for OpenDDS::DCPS::GuidConverter:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::GuidConverter:
Collaboration graph
[legend]

Public Member Functions

 GuidConverter (const GUID_t &guid)
 Construct from a GUID_t. More...
 
virtual ~GuidConverter ()
 Virtual destructor (this is a base class). More...
 
long checksum () const
 Calculate the CRC32 checksum. More...
 
long vendorId () const
 Extract the VendorId value. More...
 
long entityId () const
 Extract the EntityId value. More...
 
long entityKey () const
 Extract the EntityKey value. More...
 
EntityKind entityKind () const
 Extract the EntityKind value. More...
 
bool isBuiltinDomainEntity () const
 Returns true if the GUID represents a builtin type domain entity. More...
 
bool isUserDomainEntity () const
 Returns true if the GUID represents a user defined type domain entity. More...
 
bool isWriter () const
 Returns true if the GUID represents a writer entity. More...
 
bool isReader () const
 Returns true if the GUID represents a reader entity. More...
 
bool isTopic () const
 Returns true if the GUID represents a topic entity. More...
 
 operator OPENDDS_STRING () const
 Convert to diagnostic string. More...
 
OPENDDS_STRING uniqueParticipantId () const
 

Protected Attributes

const GUID_t guid_
 

Detailed Description

Conversion processing and value testing utilities for RTPS GUID_t types.

This class encapsulates the conversion of a GUID_t value to and from other types used within OpenDDS. This class handles opaque GUID_t values only. For specific access, the appropriate subclass must instead be used.

Since the GUID_t type is formed of octets in network order, we do all processing byte by byte to avoid any endian issues.

Currently the GUID_t is mapped from various internal values. These mappings are:

byte structure reference content


0 GUID_t.guidPrefix[ 0] == VendorId_t == 0x01 for OCI (used for OpenDDS) 1 GUID_t.guidPrefix[ 1] == VendorId_t == 0x03 for OCI (used for OpenDDS) 2 GUID_t.guidPrefix[ 2] == 0x00 3 GUID_t.guidPrefix[ 3] == 0x00

4 GUID_t.guidPrefix[ 4] == <private> (MS byte) 5 GUID_t.guidPrefix[ 5] == <private> 6 GUID_t.guidPrefix[ 6] == <private> 7 GUID_t.guidPrefix[ 7] == <private> (LS byte)

8 GUID_t.guidPrefix[ 8] == <private> (MS byte) 9 GUID_t.guidPrefix[ 9] == <private> 10 GUID_t.guidPrefix[10] == <private> 11 GUID_t.guidPrefix[11] == <private> (LS byte)

12 GUID_t.entityId.entityKey[ 0] == entity id[0] (MS byte) 13 GUID_t.entityId.entityKey[ 1] == entity id[1] 14 GUID_t.entityId.entityKey[ 2] == entity id[2] (LS byte) 15 GUID_t.entityId.entityKind == entity kind

Definition at line 62 of file GuidConverter.h.

Constructor & Destructor Documentation

◆ GuidConverter()

OpenDDS::DCPS::GuidConverter::GuidConverter ( const GUID_t guid)

Construct from a GUID_t.

Definition at line 24 of file GuidConverter.cpp.

25  : guid_(guid)
26 {}

◆ ~GuidConverter()

OpenDDS::DCPS::GuidConverter::~GuidConverter ( )
virtual

Virtual destructor (this is a base class).

Definition at line 28 of file GuidConverter.cpp.

29 {}

Member Function Documentation

◆ checksum()

long OpenDDS::DCPS::GuidConverter::checksum ( ) const

Calculate the CRC32 checksum.

Definition at line 32 of file GuidConverter.cpp.

References ACE::crc32(), and guid_.

Referenced by Update::PersistenceUpdater::IdType_ExtId::hash(), and operator OPENDDS_STRING().

33 {
34  return ACE::crc32(reinterpret_cast<const void*>(&guid_), sizeof(guid_));
35 }
ACE_UINT32 crc32(const char *str)

◆ entityId()

long OpenDDS::DCPS::GuidConverter::entityId ( ) const

Extract the EntityId value.

Definition at line 45 of file GuidConverter.cpp.

References OpenDDS::DCPS::GUID_t::entityId, entityKey(), OpenDDS::DCPS::EntityId_t::entityKind, and guid_.

46 {
47  return entityKey() << 8
49 }
key EntityId_t entityId
Definition: DdsDcpsGuid.idl:59
long entityKey() const
Extract the EntityKey value.

◆ entityKey()

long OpenDDS::DCPS::GuidConverter::entityKey ( ) const

◆ entityKind()

EntityKind OpenDDS::DCPS::GuidConverter::entityKind ( ) const

Extract the EntityKind value.

Definition at line 60 of file GuidConverter.cpp.

References OpenDDS::DCPS::GUID_t::entityId, OpenDDS::DCPS::EntityId_t::entityKind, OpenDDS::DCPS::ENTITYKIND_BUILTIN_PARTICIPANT, OpenDDS::DCPS::ENTITYKIND_BUILTIN_READER_NO_KEY, OpenDDS::DCPS::ENTITYKIND_BUILTIN_READER_WITH_KEY, OpenDDS::DCPS::ENTITYKIND_BUILTIN_TOPIC, OpenDDS::DCPS::ENTITYKIND_BUILTIN_UNKNOWN, OpenDDS::DCPS::ENTITYKIND_BUILTIN_WRITER_NO_KEY, OpenDDS::DCPS::ENTITYKIND_BUILTIN_WRITER_WITH_KEY, OpenDDS::DCPS::ENTITYKIND_OPENDDS_NIL_WRITER, OpenDDS::DCPS::ENTITYKIND_OPENDDS_PUBLISHER, OpenDDS::DCPS::ENTITYKIND_OPENDDS_SUBSCRIBER, OpenDDS::DCPS::ENTITYKIND_OPENDDS_TOPIC, OpenDDS::DCPS::ENTITYKIND_OPENDDS_USER, OpenDDS::DCPS::ENTITYKIND_USER_READER_NO_KEY, OpenDDS::DCPS::ENTITYKIND_USER_READER_WITH_KEY, OpenDDS::DCPS::ENTITYKIND_USER_UNKNOWN, OpenDDS::DCPS::ENTITYKIND_USER_WRITER_NO_KEY, OpenDDS::DCPS::ENTITYKIND_USER_WRITER_WITH_KEY, guid_, OpenDDS::DCPS::KIND_BUILTIN_READER, OpenDDS::DCPS::KIND_BUILTIN_TOPIC, OpenDDS::DCPS::KIND_BUILTIN_WRITER, OpenDDS::DCPS::KIND_PARTICIPANT, OpenDDS::DCPS::KIND_PUBLISHER, OpenDDS::DCPS::KIND_SUBSCRIBER, OpenDDS::DCPS::KIND_UNKNOWN, OpenDDS::DCPS::KIND_USER, OpenDDS::DCPS::KIND_USER_READER, OpenDDS::DCPS::KIND_USER_TOPIC, and OpenDDS::DCPS::KIND_USER_WRITER.

Referenced by OpenDDS::DCPS::DomainParticipantImpl::get_discovered_participant_data(), OpenDDS::DCPS::DomainParticipantImpl::get_discovered_participants(), isReader(), isTopic(), and isWriter().

61 {
62  switch (guid_.entityId.entityKind) {
64  return KIND_USER_TOPIC;
65 
67  return KIND_BUILTIN_TOPIC;
68 
71  return KIND_USER_READER;
72 
76  return KIND_USER_WRITER;
77 
80  return KIND_BUILTIN_READER;
81 
84  return KIND_BUILTIN_WRITER;
85 
87  return KIND_PARTICIPANT;
88 
90  return KIND_PUBLISHER;
91 
93  return KIND_SUBSCRIBER;
94 
96  return KIND_USER;
97 
100  default:
101  return KIND_UNKNOWN;
102  }
103 }
const octet ENTITYKIND_BUILTIN_READER_WITH_KEY
Definition: DdsDcpsGuid.idl:36
ENTITYKIND_BUILTIN_PARTICIPANT.
Definition: GuidUtils.h:68
For creating custom GUIDs for things that are not DDS entities (OpenDDS-specific) ...
Definition: GuidUtils.h:77
key EntityId_t entityId
Definition: DdsDcpsGuid.idl:59
const octet ENTITYKIND_BUILTIN_TOPIC
Definition: DdsDcpsGuid.idl:37
const octet ENTITYKIND_OPENDDS_TOPIC
Definition: DdsDcpsGuid.idl:49
const octet ENTITYKIND_BUILTIN_WRITER_NO_KEY
Definition: DdsDcpsGuid.idl:34
ENTITYKIND_USER_WRITER_WITH_KEY and ENTITYKIND_USER_WRITER_NO_KEY.
Definition: GuidUtils.h:69
ENTITYKIND_BUILTIN_TOPIC.
Definition: GuidUtils.h:74
ENTITYKIND_BUILTIN_WRITER_WITH_KEY and ENTITYKIND_USER_WRITER_NO_KEY.
Definition: GuidUtils.h:72
const octet ENTITYKIND_USER_READER_WITH_KEY
Definition: DdsDcpsGuid.idl:43
const octet ENTITYKIND_USER_WRITER_NO_KEY
Definition: DdsDcpsGuid.idl:41
const octet ENTITYKIND_BUILTIN_WRITER_WITH_KEY
Definition: DdsDcpsGuid.idl:33
const octet ENTITYKIND_USER_UNKNOWN
Definition: DdsDcpsGuid.idl:39
const octet ENTITYKIND_OPENDDS_NIL_WRITER
Definition: DdsDcpsGuid.idl:53
const octet ENTITYKIND_OPENDDS_USER
Definition: DdsDcpsGuid.idl:50
ENTITYKIND_OPENDDS_TOPIC.
Definition: GuidUtils.h:71
const octet ENTITYKIND_OPENDDS_PUBLISHER
Definition: DdsDcpsGuid.idl:47
ENTITYKIND_USER_READER_WITH_KEY and ENTITYKIND_USER_READER_NO_KEY.
Definition: GuidUtils.h:70
const octet ENTITYKIND_BUILTIN_READER_NO_KEY
Definition: DdsDcpsGuid.idl:35
Publisher (OpenDDS-specific)
Definition: GuidUtils.h:75
ENTITYKIND_USER_UNKNOWN and ENTITYKIND_BUILTIN_UNKNOWN.
Definition: GuidUtils.h:67
Subscriber (OpenDDS-specific)
Definition: GuidUtils.h:76
const octet ENTITYKIND_USER_READER_NO_KEY
Definition: DdsDcpsGuid.idl:42
const octet ENTITYKIND_USER_WRITER_WITH_KEY
Definition: DdsDcpsGuid.idl:40
ENTITYKIND_BUILTIN_READER_WITH_KEY and ENTITYKIND_USER_READER_NO_KEY.
Definition: GuidUtils.h:73
const octet ENTITYKIND_BUILTIN_PARTICIPANT
Definition: DdsDcpsGuid.idl:32
const octet ENTITYKIND_OPENDDS_SUBSCRIBER
Definition: DdsDcpsGuid.idl:46
const octet ENTITYKIND_BUILTIN_UNKNOWN
Definition: DdsDcpsGuid.idl:31

◆ isBuiltinDomainEntity()

bool OpenDDS::DCPS::GuidConverter::isBuiltinDomainEntity ( ) const

Returns true if the GUID represents a builtin type domain entity.

Definition at line 105 of file GuidConverter.cpp.

References OpenDDS::DCPS::GUID_t::entityId, OpenDDS::DCPS::EntityId_t::entityKind, OpenDDS::DCPS::ENTITYKIND_BUILTIN_READER_NO_KEY, OpenDDS::DCPS::ENTITYKIND_BUILTIN_READER_WITH_KEY, OpenDDS::DCPS::ENTITYKIND_BUILTIN_TOPIC, OpenDDS::DCPS::ENTITYKIND_BUILTIN_WRITER_NO_KEY, OpenDDS::DCPS::ENTITYKIND_BUILTIN_WRITER_WITH_KEY, and guid_.

Referenced by OpenDDS::RTPS::Sedp::populate_origination_locator(), and OpenDDS::RTPS::Sedp::remote_knows_about_local_i().

106 {
107  switch (guid_.entityId.entityKind) {
108 
114  return true;
115 
116  default:
117  return false;
118  }
119 }
const octet ENTITYKIND_BUILTIN_READER_WITH_KEY
Definition: DdsDcpsGuid.idl:36
key EntityId_t entityId
Definition: DdsDcpsGuid.idl:59
const octet ENTITYKIND_BUILTIN_TOPIC
Definition: DdsDcpsGuid.idl:37
const octet ENTITYKIND_BUILTIN_WRITER_NO_KEY
Definition: DdsDcpsGuid.idl:34
const octet ENTITYKIND_BUILTIN_WRITER_WITH_KEY
Definition: DdsDcpsGuid.idl:33
const octet ENTITYKIND_BUILTIN_READER_NO_KEY
Definition: DdsDcpsGuid.idl:35

◆ isReader()

bool OpenDDS::DCPS::GuidConverter::isReader ( ) const

◆ isTopic()

bool OpenDDS::DCPS::GuidConverter::isTopic ( ) const

Returns true if the GUID represents a topic entity.

Definition at line 149 of file GuidConverter.cpp.

References entityKind(), OpenDDS::DCPS::KIND_BUILTIN_TOPIC, and OpenDDS::DCPS::KIND_USER_TOPIC.

Referenced by OpenDDS::DCPS::DomainParticipantImpl::get_discovered_topic_data(), and OpenDDS::DCPS::DomainParticipantImpl::get_discovered_topics().

150 {
151  EntityKind kind = entityKind();
152  return kind == KIND_USER_TOPIC || kind == KIND_BUILTIN_TOPIC;
153 }
ENTITYKIND_BUILTIN_TOPIC.
Definition: GuidUtils.h:74
ENTITYKIND_OPENDDS_TOPIC.
Definition: GuidUtils.h:71
EntityKind entityKind() const
Extract the EntityKind value.

◆ isUserDomainEntity()

bool OpenDDS::DCPS::GuidConverter::isUserDomainEntity ( ) const

Returns true if the GUID represents a user defined type domain entity.

Definition at line 121 of file GuidConverter.cpp.

References OpenDDS::DCPS::GUID_t::entityId, OpenDDS::DCPS::EntityId_t::entityKind, OpenDDS::DCPS::ENTITYKIND_OPENDDS_TOPIC, OpenDDS::DCPS::ENTITYKIND_USER_READER_NO_KEY, OpenDDS::DCPS::ENTITYKIND_USER_READER_WITH_KEY, OpenDDS::DCPS::ENTITYKIND_USER_WRITER_NO_KEY, OpenDDS::DCPS::ENTITYKIND_USER_WRITER_WITH_KEY, and guid_.

Referenced by OpenDDS::RTPS::Sedp::resend_user_crypto_tokens().

122 {
123  switch (guid_.entityId.entityKind) {
124 
130  return true;
131 
132  default:
133  return false;
134  }
135 }
key EntityId_t entityId
Definition: DdsDcpsGuid.idl:59
const octet ENTITYKIND_OPENDDS_TOPIC
Definition: DdsDcpsGuid.idl:49
const octet ENTITYKIND_USER_READER_WITH_KEY
Definition: DdsDcpsGuid.idl:43
const octet ENTITYKIND_USER_WRITER_NO_KEY
Definition: DdsDcpsGuid.idl:41
const octet ENTITYKIND_USER_READER_NO_KEY
Definition: DdsDcpsGuid.idl:42
const octet ENTITYKIND_USER_WRITER_WITH_KEY
Definition: DdsDcpsGuid.idl:40

◆ isWriter()

bool OpenDDS::DCPS::GuidConverter::isWriter ( ) const

◆ operator OPENDDS_STRING()

OpenDDS::DCPS::GuidConverter::operator OPENDDS_STRING ( ) const

Convert to diagnostic string.

Definition at line 155 of file GuidConverter.cpp.

References checksum(), guid_, OPENDDS_STRING, OpenDDS::DCPS::to_dds_string(), and OpenDDS::DCPS::to_string().

156 {
158  ret += "(";
159  ret += to_dds_string((unsigned long) checksum(), true);
160  ret += ")";
161  return ret;
162 }
#define OPENDDS_STRING
const char * to_string(MessageId value)
long checksum() const
Calculate the CRC32 checksum.
String to_dds_string(unsigned short to_convert)

◆ uniqueParticipantId()

OPENDDS_STRING OpenDDS::DCPS::GuidConverter::uniqueParticipantId ( ) const

Definition at line 192 of file GuidConverter.cpp.

References guid_, OpenDDS::DCPS::GUID_t::guidPrefix, OPENDDS_END_VERSIONED_NAMESPACE_DECL, and ACE_OS::snprintf().

Referenced by OpenDDS::DCPS::TransportRegistry::bind_config(), OpenDDS::DCPS::DomainParticipantImpl::get_unique_id(), and OpenDDS::RTPS::Sedp::init().

193 {
194  char id[64];
195  ACE_OS::snprintf(id, sizeof id,
196  "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
197  guid_.guidPrefix[ 0],
198  guid_.guidPrefix[ 1],
199  guid_.guidPrefix[ 2],
200  guid_.guidPrefix[ 3],
201  guid_.guidPrefix[ 4],
202  guid_.guidPrefix[ 5],
203  guid_.guidPrefix[ 6],
204  guid_.guidPrefix[ 7],
205  guid_.guidPrefix[ 8],
206  guid_.guidPrefix[ 9],
207  guid_.guidPrefix[10],
208  guid_.guidPrefix[11]);
209  return id;
210 }
key GuidPrefix_t guidPrefix
Definition: DdsDcpsGuid.idl:58
int snprintf(char *buf, size_t maxlen, const char *format,...) ACE_GCC_FORMAT_ATTRIBUTE(printf

◆ vendorId()

long OpenDDS::DCPS::GuidConverter::vendorId ( ) const

Extract the VendorId value.

Definition at line 38 of file GuidConverter.cpp.

References guid_, and OpenDDS::DCPS::GUID_t::guidPrefix.

39 {
40  return guid_.guidPrefix[0] << 8
41  | guid_.guidPrefix[1];
42 }
key GuidPrefix_t guidPrefix
Definition: DdsDcpsGuid.idl:58

Member Data Documentation

◆ guid_

const GUID_t OpenDDS::DCPS::GuidConverter::guid_
protected

The documentation for this class was generated from the following files: