45 if (other ==
nullptr || other_len !=
sizeof(magic_num_)) {
48 return memcmp(magic_num_, other,
sizeof(magic_num_)) == 0;
52 uint64_t
seq()
const {
return ConvertArrayTo64(seq_); }
53 void set_seq(uint64_t
seq) { Convert64ToArray(
seq,
const_cast<char*
>(seq_)); }
56 uint64_t
timestamp_ns()
const {
return ConvertArrayTo64(timestamp_ns_); }
58 Convert64ToArray(
timestamp_ns,
const_cast<char*
>(timestamp_ns_));
62 uint64_t
src_id()
const {
return ConvertArrayTo64(src_id_); }
64 Convert64ToArray(
src_id,
const_cast<char*
>(src_id_));
68 uint64_t
dst_id()
const {
return ConvertArrayTo64(dst_id_); }
70 Convert64ToArray(
dst_id,
const_cast<char*
>(dst_id_));
74 const char*
msg_type()
const {
return msg_type_; }
76 if (
msg_type ==
nullptr || msg_type_len == 0) {
79 size_t real_len = msg_type_len;
80 if (msg_type_len >=
sizeof(msg_type_)) {
81 real_len =
sizeof(msg_type_) - 1;
84 memcpy(msg_type_,
msg_type, real_len);
90 uint32_t
content_size()
const {
return ConvertArrayTo32(content_size_); }
92 Convert32ToArray(
content_size,
const_cast<char*
>(content_size_));
97 void Convert32ToArray(uint32_t input,
char* output) {
98 uint32_t n = htonl(input);
99 memcpy(
static_cast<void*
>(output),
static_cast<const void*
>(&n),
sizeof(n));
102 void Convert64ToArray(uint64_t input,
char* output) {
104 static_cast<uint32_t
>((input & 0xffffffff00000000UL) >> 32);
105 uint32_t h_low =
static_cast<uint32_t
>(input & 0x00000000ffffffffUL);
106 Convert32ToArray(h_high, output);
107 Convert32ToArray(h_low, output + 4);
110 uint32_t ConvertArrayTo32(
const char* input)
const {
112 memcpy(
static_cast<void*
>(&n),
static_cast<const void*
>(input),
sizeof(n));
116 uint64_t ConvertArrayTo64(
const char* input)
const {
117 uint64_t high = ConvertArrayTo32(input);
118 uint64_t low = ConvertArrayTo32(input + 4);
119 return (high << 32) | low;
124 char timestamp_ns_[8];
129 char content_size_[4];