11 : size(encoded_size()),
30 return sizeof(uint64_t) * 3
38 return sizeof(uint64_t) * 3
45 const char* buffer, int64_t& buffer_remaining)
48 if((
size_t)buffer_remaining >=
sizeof(size))
50 memcpy(&size, buffer,
sizeof(size));
52 buffer +=
sizeof(size);
56 std::stringstream buffer;
57 buffer <<
"MessageHeader::read: ";
58 buffer <<
sizeof(size) <<
" byte size field cannot fit in ";
59 buffer << buffer_remaining <<
" byte buffer\n";
63 buffer_remaining -=
sizeof(size);
73 std::stringstream buffer;
74 buffer <<
"MessageHeader::read: ";
76 buffer << buffer_remaining <<
" byte buffer\n";
91 std::stringstream buffer;
92 buffer <<
"MessageHeader::read: ";
95 buffer << buffer_remaining <<
" byte buffer\n";
110 std::stringstream buffer;
111 buffer <<
"MessageHeader::read: ";
113 buffer <<
" fit in ";
114 buffer << buffer_remaining <<
" byte buffer\n";
121 if((
size_t)buffer_remaining >=
sizeof(type))
123 memcpy(&type, buffer,
sizeof(type));
125 buffer +=
sizeof(type);
129 std::stringstream buffer;
130 buffer <<
"MessageHeader::read: ";
131 buffer <<
sizeof(type) <<
" byte type encoding cannot";
132 buffer <<
" fit in ";
133 buffer << buffer_remaining <<
" byte buffer\n";
137 buffer_remaining -=
sizeof(type);
140 if((
size_t)buffer_remaining >=
sizeof(updates))
142 memcpy(&updates, buffer,
sizeof(updates));
144 buffer +=
sizeof(updates);
148 std::stringstream buffer;
149 buffer <<
"MessageHeader::read: ";
150 buffer <<
sizeof(updates) <<
" byte updates encoding cannot";
151 buffer <<
" fit in ";
152 buffer << buffer_remaining <<
" byte buffer\n";
156 buffer_remaining -=
sizeof(updates);
159 if((
size_t)buffer_remaining >=
sizeof(quality))
161 memcpy(&quality, buffer,
sizeof(quality));
163 buffer +=
sizeof(quality);
167 std::stringstream buffer;
168 buffer <<
"MessageHeader::read: ";
169 buffer <<
sizeof(quality) <<
" byte quality encoding cannot";
170 buffer <<
" fit in ";
171 buffer << buffer_remaining <<
" byte buffer\n";
175 buffer_remaining -=
sizeof(quality);
178 if((
size_t)buffer_remaining >=
sizeof(clock))
180 memcpy(&clock, buffer,
sizeof(clock));
182 buffer +=
sizeof(clock);
186 std::stringstream buffer;
187 buffer <<
"MessageHeader::read: ";
188 buffer <<
sizeof(clock) <<
" byte clock encoding cannot";
189 buffer <<
" fit in ";
190 buffer << buffer_remaining <<
" byte buffer\n";
194 buffer_remaining -=
sizeof(clock);
197 if((
size_t)buffer_remaining >=
sizeof(timestamp))
199 memcpy(×tamp, buffer,
sizeof(timestamp));
201 buffer +=
sizeof(timestamp);
205 std::stringstream buffer;
206 buffer <<
"MessageHeader::read: ";
207 buffer <<
sizeof(timestamp) <<
" byte timestamp encoding cannot";
208 buffer <<
" fit in ";
209 buffer << buffer_remaining <<
" byte buffer\n";
213 buffer_remaining -=
sizeof(timestamp);
216 if(buffer_remaining >= 1)
218 memcpy(&ttl, buffer, 1);
221 buffer_remaining -= 1;
227 char* buffer, int64_t& buffer_remaining)
230 if((
size_t)buffer_remaining >=
sizeof(size))
233 buffer +=
sizeof(size);
237 std::stringstream buffer;
238 buffer <<
"MessageHeader::write: ";
239 buffer <<
sizeof(size) <<
" byte size encoding cannot";
240 buffer <<
" fit in ";
241 buffer << buffer_remaining <<
" byte buffer\n";
245 buffer_remaining -=
sizeof(size);
255 std::stringstream buffer;
256 buffer <<
"MessageHeader::write: ";
258 buffer <<
" fit in ";
259 buffer << buffer_remaining <<
" byte buffer\n";
273 std::stringstream buffer;
274 buffer <<
"MessageHeader::write: ";
276 buffer <<
" fit in ";
277 buffer << buffer_remaining <<
" byte buffer\n";
291 std::stringstream buffer;
292 buffer <<
"MessageHeader::write: ";
294 buffer <<
" fit in ";
295 buffer << buffer_remaining <<
" byte buffer\n";
302 if((
size_t)buffer_remaining >=
sizeof(type))
305 buffer +=
sizeof(type);
309 std::stringstream buffer;
310 buffer <<
"MessageHeader::write: ";
311 buffer <<
sizeof(type) <<
" byte type encoding cannot";
312 buffer <<
" fit in ";
313 buffer << buffer_remaining <<
" byte buffer\n";
317 buffer_remaining -=
sizeof(type);
320 if((
size_t)buffer_remaining >=
sizeof(updates))
323 buffer +=
sizeof(updates);
327 std::stringstream buffer;
328 buffer <<
"MessageHeader::write: ";
329 buffer <<
sizeof(updates) <<
" byte updates encoding cannot";
330 buffer <<
" fit in ";
331 buffer << buffer_remaining <<
" byte buffer\n";
335 buffer_remaining -=
sizeof(updates);
338 if((
size_t)buffer_remaining >=
sizeof(quality))
341 buffer +=
sizeof(quality);
345 std::stringstream buffer;
346 buffer <<
"MessageHeader::write: ";
347 buffer <<
sizeof(quality) <<
" byte quality encoding cannot";
348 buffer <<
" fit in ";
349 buffer << buffer_remaining <<
" byte buffer\n";
353 buffer_remaining -=
sizeof(quality);
356 if((
size_t)buffer_remaining >=
sizeof(clock))
359 buffer +=
sizeof(clock);
363 std::stringstream buffer;
364 buffer <<
"MessageHeader::write: ";
365 buffer <<
sizeof(clock) <<
" byte clock encoding cannot";
366 buffer <<
" fit in ";
367 buffer << buffer_remaining <<
" byte buffer\n";
371 buffer_remaining -=
sizeof(clock);
374 if((
size_t)buffer_remaining >=
sizeof(timestamp))
377 buffer +=
sizeof(timestamp);
381 std::stringstream buffer;
382 buffer <<
"MessageHeader::write: ";
383 buffer <<
sizeof(timestamp) <<
" byte timestamp encoding cannot";
384 buffer <<
" fit in ";
385 buffer << buffer_remaining <<
" byte buffer\n";
389 buffer_remaining -=
sizeof(timestamp);
391 if(buffer_remaining >= 1)
393 memcpy(buffer, &ttl, 1);
398 std::stringstream buffer;
399 buffer <<
"MessageHeader::write: ";
400 buffer <<
"1 byte ttl encoding cannot";
401 buffer <<
" fit in ";
402 buffer << buffer_remaining <<
" byte buffer\n";
406 buffer_remaining -= 1;
413 std::stringstream buffer;
415 buffer <<
"141: size(8:" << size <<
"), ";
416 buffer <<
"encoding(8:" << madara_id <<
"), ";
417 buffer <<
"domain(32:" << domain <<
"), ";
418 buffer <<
"orig(64:" << originator <<
"), ";
419 buffer <<
"type(4:" << type <<
"), ";
420 buffer <<
"numupdates(4:" << updates <<
"), ";
421 buffer <<
"quality(4:" << quality <<
"), ";
422 buffer <<
"clock(8:" << clock <<
"), ";
423 buffer <<
"wallclock(8:" << timestamp <<
"), ";
424 buffer <<
"ttl(1:" <<(int)ttl <<
"), ";
436 return size == other.
size && type == other.
type && updates == other.
updates &&
An exception for general memory errors like out-of-memory.
Provides utility functions and classes for common tasks and needs.
uint64_t endian_swap(uint64_t value)
Converts a host format uint64_t into big endian.
int64_t get_time(void)
Returns a time of day in nanoseconds If simtime feature is enabled, this may be simulation time inste...
MADARA_EXPORT void strncpy_safe(char *dst, const char *src, size_t dst_size)
Performs a strncpy in a way that will compile without warnings.