17 #ifndef CYBER_MESSAGE_MESSAGE_HEADER_H_ 18 #define CYBER_MESSAGE_MESSAGE_HEADER_H_ 20 #include <arpa/inet.h> 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];
136 #endif // CYBER_MESSAGE_MESSAGE_HEADER_H_
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25