19#ifndef FASTDDS_RTPS_COMMON__INSTANCEHANDLE_HPP
20#define FASTDDS_RTPS_COMMON__INSTANCEHANDLE_HPP
24#include <fastdds/fastdds_dll.hpp>
25#include <fastdds/rtps/common/Types.hpp>
26#include <fastdds/rtps/common/Guid.hpp>
34using KeyHash_t = std::array<octet, RTPS_KEY_HASH_SIZE>;
99 operator const octet* ()
const noexcept
101 return value_.data();
109 return has_been_set_;
115 has_been_set_ =
false;
124 return (has_been_set_ == other.has_been_set_) && (value_ == other.value_);
135 return other.has_been_set_ && value_ < other.value_;
138 return other.has_been_set_;
146 bool has_been_set_ =
false;
164 const
GUID_t& guid) noexcept
181 const GUID_t& guid)
noexcept
184 memcpy(dst, guid.guidPrefix.value, 12);
185 memcpy(&dst[12], guid.entityId.value, 4);
204 explicit operator const GUID_t&()
const noexcept
206 return *
reinterpret_cast<const GUID_t*
>(
this);
213#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC
225 return ihandle1.value == ihandle2.value;
239 return !(ihandle1 == ihandle2);
253 const octet* value = ihandle.value;
254 memcpy(guid.guidPrefix.value, value, 12);
255 memcpy(guid.entityId.value, &value[12], 4);
282 return h1.value < h2.value;
285#ifndef DOXYGEN_SHOULD_SKIP_THIS_PUBLIC
295 std::ostream& output,
298 std::stringstream ss;
300 for (uint8_t i = 0; i < 15; ++i)
302 ss << (int)iHandle.
value[i] <<
".";
304 ss << (int)iHandle.
value[15u] << std::dec;
305 return output << ss.str();
319 std::istream::sentry s(input);
325 std::ios_base::iostate excp_mask = input.exceptions();
329 input.exceptions(excp_mask | std::ios_base::failbit | std::ios_base::badbit);
330 input >> std::hex >> hex;
334 input.setstate(std::ios_base::failbit);
339 for (uint8_t i = 1; i < 16; ++i)
341 input >> point >> hex;
342 if ( point !=
'.' || hex > 255 )
344 input.setstate(std::ios_base::failbit);
351 catch (std::ios_base::failure& )
355 input.exceptions(excp_mask);
std::istream & operator>>(std::istream &input, EntityId_t &enP)
Definition EntityId_t.hpp:289
bool operator==(const BuiltinTransportsOptions &bto1, const BuiltinTransportsOptions &bto2)
Equal to operator.
Definition BuiltinTransports.hpp:79
std::ostream & operator<<(std::ostream &output, BuiltinTransports transports)
Definition BuiltinTransports.hpp:117
unsigned char octet
Definition Types.hpp:83
bool operator!=(const EntityId_t &id1, const EntityId_t &id2)
Guid prefix comparison operator.
Definition EntityId_t.hpp:267
std::array< octet, RTPS_KEY_HASH_SIZE > KeyHash_t
Definition InstanceHandle.hpp:34
bool operator<(const GUID_t &g1, const GUID_t &g2)
Definition Guid.hpp:192
constexpr const uint8_t RTPS_KEY_HASH_SIZE
Definition InstanceHandle.hpp:32
const InstanceHandle_t c_InstanceHandle_Unknown
Definition InstanceHandle.hpp:211
void iHandle2GUID(GUID_t &guid, const InstanceHandle_t &ihandle) noexcept
Convert InstanceHandle_t to GUID.
Definition InstanceHandle.hpp:249
Structure GUID_t, entity identifier, unique in DDS-RTPS Domain.
Definition Guid.hpp:40
Struct InstanceHandle_t, used to contain the key for WITH_KEY topics.
Definition InstanceHandle.hpp:154
void clear() noexcept
Definition InstanceHandle.hpp:198
bool isDefined() const noexcept
Know if the instance handle is defined.
Definition InstanceHandle.hpp:193
InstanceHandle_t() noexcept=default
InstanceHandleValue_t value
Value.
Definition InstanceHandle.hpp:156
Definition InstanceHandle.hpp:37
void clear() noexcept
Definition InstanceHandle.hpp:112
bool has_been_set() const noexcept
Return whether any of the write access operators of this value has been used.
Definition InstanceHandle.hpp:107