1#ifndef PROTON_MESSAGE_ID_HPP
2#define PROTON_MESSAGE_ID_HPP
29#include <proton/type_compat.h>
59 message_id& operator=(uint64_t x) { put_(x);
return *
this; }
60 message_id& operator=(
const uuid& x) { put_(x);
return *
this; }
61 message_id& operator=(
const binary& x) { put_(x);
return *
this; }
62 message_id& operator=(
const std::string& x) { put_(x);
return *
this; }
71 friend class codec::decoder;
96template <>
struct std::hash<
proton::message_id> {
101 case proton::ULONG: h = std::hash<uint64_t>{}(proton::internal::get<uint64_t>(s));
break;
102 case proton::UUID: h = std::hash<proton::uuid>{}(proton::internal::get<proton::uuid>(s));
break;
103 case proton::BINARY: h = std::hash<proton::binary>{}(proton::internal::get<proton::binary>(s));
break;
104 case proton::STRING: h = std::hash<std::string>{}(proton::internal::get<std::string>(s));
break;
107 auto type_hash = std::hash<proton::type_id>{}(type);
109 return h ^ (type_hash + 0x9e3779b9 + (h << 6) + (h >> 2));
Arbitrary binary data.
Definition binary.hpp:40
An AMQP message ID.
Definition message_id.hpp:47
message_id(const T &x)
Construct from any type that can be assigned.
Definition message_id.hpp:53
T coerce(const message_id &x)
Coerce the contained value to type T.
Definition message_id.hpp:91
message_id()=default
An empty message_id.
message_id & operator=(const char *x)
Treated as amqp::STRING.
Definition message_id.hpp:63
The base class for scalar types.
Definition scalar_base.hpp:60
type_id type() const
AMQP type of data stored in the scalar.
A 16-byte universally unique identifier.
Definition uuid.hpp:37
The main Proton namespace.
Definition annotation_key.hpp:33
uuid get< uuid >(const message_id &x)
Get the uuid value or throw conversion_error.
Definition message_id.hpp:83
T get(const scalar &s)
Get a contained value of type T.
Definition scalar.hpp:60
@ ULONG
Unsigned 64-bit integer.
Definition type_id.hpp:47
@ UUID
16-byte UUID.
Definition type_id.hpp:55
@ BINARY
Variable-length sequence of bytes.
Definition type_id.hpp:56
@ STRING
Variable-length utf8-encoded string.
Definition type_id.hpp:57
binary get< binary >(const message_id &x)
Get the binary value or throw conversion_error.
Definition message_id.hpp:85
std::string get< std::string >(const message_id &x)
Get the std::string value or throw conversion_error.
Definition message_id.hpp:87
uint64_t get< uint64_t >(const annotation_key &x)
Get the uint64_t value or throw conversion_error.
Definition annotation_key.hpp:72
The base class for scalar types.
An error converting between AMQP and C++ data.
Definition error.hpp:56
A 16-byte universally unique identifier.