OpenDDS  Snapshot(2023/04/28-20:55)
GuidBuilder.cpp
Go to the documentation of this file.
1 /*
2  *
3  *
4  * Distributed under the OpenDDS License.
5  * See: http://www.opendds.org/license.html
6  */
7 
8 #include "DCPS/DdsDcps_pch.h" //Only the _pch include should start with DCPS/
9 
10 #include "GuidBuilder.h"
11 
12 #ifndef __ACE_INLINE__
13 # include "GuidBuilder.inl"
14 #endif /* __ACE_INLINE__ */
15 
16 namespace {
17 
18 inline void
19 fill_guid(CORBA::Octet* begin, long value, std::size_t len)
20 {
21  for (std::size_t i = 0; i < len; ++i) {
22  size_t shift = (len - i - 1) << 3;
23  begin[i] = static_cast<CORBA::Octet>(0xff & (value >> shift));
24  }
25 }
26 
27 } // namespace
28 
30 
31 namespace OpenDDS {
32 namespace DCPS {
33 
35  : guid_cxx_(create())
36  , guid_(guid_cxx_)
37 {
38 }
39 
41  : guid_cxx_()
42  , guid_(guid)
43 {
44 }
45 
47 {
48 }
49 
50 GUID_t
52 {
53  GUID_t guid = {
54  { VENDORID_OCI[0],
55  VENDORID_OCI[1],
56  0,
57  0,
58  0,
59  0,
60  0,
61  0,
62  0,
63  0,
64  0,
65  0
67  };
68  return guid;
69 }
70 
71 void
73 {
74  fill_guid(guid_.guidPrefix, p0, 4);
75 }
76 
77 void
79 {
80  fill_guid(guid_.guidPrefix + 4, p1, 4);
81 }
82 
83 void
85 {
86  fill_guid(guid_.guidPrefix + 8, p2, 4);
87 }
88 
89 void
91 {
93 }
94 
95 void
97 {
98  fill_guid(guid_.entityId.entityKey, entityKey, 3);
99 }
100 
101 void
103 {
105 }
106 
107 void
108 GuidBuilder::entityKind(EntityKind kind, bool makeBuiltin)
109 {
110  switch (kind) {
111 
112  // User Entities
113 
114  case KIND_USER_WRITER:
115  guid_.entityId.entityKind = makeBuiltin ?
117  break;
118 
119  case KIND_USER_READER:
120  guid_.entityId.entityKind = makeBuiltin ?
122  break;
123 
124  case KIND_USER_TOPIC:
125  guid_.entityId.entityKind = makeBuiltin ?
127  break;
128 
129  // Builtin Entities
130 
131  case KIND_BUILTIN_WRITER:
133  break;
134 
135  case KIND_BUILTIN_READER:
137  break;
138 
139  case KIND_BUILTIN_TOPIC:
141  break;
142 
143  // OpenDDS specific Publisher Guid values
144  case KIND_PUBLISHER:
147  break;
148 
149  // OpenDDS specific Subscriber Guid values
150  case KIND_SUBSCRIBER:
153  break;
154 
155  // OpenDDS specific other Guid values
156  case KIND_USER:
159  break;
160 
161  default:
164  }
165 }
166 
167 } // namespace DCPS
168 } // namespace OpenDDS
169 
const LogLevel::Value value
Definition: debug.cpp:61
const octet ENTITYKIND_BUILTIN_TOPIC
Definition: DdsDcpsGuid.idl:37
const octet ENTITYKIND_BUILTIN_WRITER_WITH_KEY
Definition: DdsDcpsGuid.idl:33
const octet ENTITYKIND_OPENDDS_SUBSCRIBER
Definition: DdsDcpsGuid.idl:46
ENTITYKIND_BUILTIN_WRITER_WITH_KEY and ENTITYKIND_USER_WRITER_NO_KEY.
Definition: GuidUtils.h:72
For creating custom GUIDs for things that are not DDS entities (OpenDDS-specific) ...
Definition: GuidUtils.h:77
key GuidPrefix_t guidPrefix
Definition: DdsDcpsGuid.idl:58
ENTITYKIND_USER_WRITER_WITH_KEY and ENTITYKIND_USER_WRITER_NO_KEY.
Definition: GuidUtils.h:69
ENTITYKIND_BUILTIN_TOPIC.
Definition: GuidUtils.h:74
const octet ENTITYKIND_USER_UNKNOWN
Definition: DdsDcpsGuid.idl:39
const octet ENTITYKIND_USER_READER_WITH_KEY
Definition: DdsDcpsGuid.idl:43
ENTITYKIND_OPENDDS_TOPIC.
Definition: GuidUtils.h:71
const octet ENTITYKIND_OPENDDS_USER
Definition: DdsDcpsGuid.idl:50
const octet ENTITYKIND_OPENDDS_TOPIC
Definition: DdsDcpsGuid.idl:49
ENTITYKIND_USER_READER_WITH_KEY and ENTITYKIND_USER_READER_NO_KEY.
Definition: GuidUtils.h:70
key EntityKey_t entityKey
Definition: DdsDcpsGuid.idl:27
void entityKind(CORBA::Octet entityKind)
Publisher (OpenDDS-specific)
Definition: GuidUtils.h:75
const octet ENTITYKIND_OPENDDS_PUBLISHER
Definition: DdsDcpsGuid.idl:47
void entityKey(long entityKey)
Definition: GuidBuilder.cpp:96
Subscriber (OpenDDS-specific)
Definition: GuidUtils.h:76
const octet ENTITYKIND_USER_WRITER_WITH_KEY
Definition: DdsDcpsGuid.idl:40
void entityId(EntityId_t entityId)
Definition: GuidBuilder.cpp:90
ACE_CDR::Octet Octet
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
const EntityId_t ENTITYID_UNKNOWN
Definition: GuidUtils.h:36
const GuidVendorId_t VENDORID_OCI
Vendor Id value specified for OCI is used for OpenDDS.
Definition: GuidUtils.h:29
The Internal API and Implementation of OpenDDS.
Definition: AddressCache.h:28
ENTITYKIND_BUILTIN_READER_WITH_KEY and ENTITYKIND_USER_READER_NO_KEY.
Definition: GuidUtils.h:73
const octet ENTITYKIND_BUILTIN_READER_WITH_KEY
Definition: DdsDcpsGuid.idl:36
key EntityId_t entityId
Definition: DdsDcpsGuid.idl:59