MADARA  3.4.1
madara::transport::MessageHeader Class Reference

Defines a robust message header which is the default for KaRL messages. More...

#include <MessageHeader.h>

Inheritance diagram for madara::transport::MessageHeader:
madara::transport::FragmentMessageHeader madara::transport::ReducedMessageHeader

Public Member Functions

 MessageHeader ()
 Constructor. More...
 
virtual ~MessageHeader ()
 Destructor. More...
 
virtual uint32_t encoded_size (void) const
 Returns the size of the encoded MessageHeader class, which may be different from sizeof (MessageHeader) because of compiler optimizations for word boundaries. More...
 
virtual bool equals (const MessageHeader &other)
 Compares the fields of this instance to another instance. More...
 
virtual const char * read (const char *buffer, int64_t &buffer_remaining)
 Reads a MessageHeader instance from a buffer and updates the amount of buffer room remaining. More...
 
virtual std::string to_string (void)
 Converts the relevant fields to a printable string. More...
 
virtual char * write (char *buffer, int64_t &buffer_remaining)
 Writes a MessageHeader instance to a buffer and updates the amount of buffer room remaining. More...
 

Static Public Member Functions

static uint64_t get_size (const char *buffer)
 Returns the size field of the header. More...
 
static bool message_header_test (const char *buffer)
 Tests the buffer for a normal message identifier. More...
 
static uint32_t static_encoded_size (void)
 Returns the size of the encoded MessageHeader class. More...
 

Public Attributes

uint64_t clock
 the clock of the sender when the message was generated More...
 
char domain [32]
 the domain that this message is intended for More...
 
char madara_id [8]
 the identifier of this transport (MADARA_IDENTIFIER) More...
 
char originator [64]
 the originator of the message (host:port) More...
 
uint32_t quality
 the quality of the message sender More...
 
uint64_t size
 the size of this header plus the updates More...
 
uint64_t timestamp
 the timestamp of the sender when the message was generated More...
 
unsigned char ttl
 time to live (number of rebroadcasts to perform after original send More...
 
uint32_t type
 the type of message More...
 
uint32_t updates
 the number of knowledge variable updates in the message More...
 

Detailed Description

Defines a robust message header which is the default for KaRL messages.

See also
ReducedMessageHeader for a smaller header that supports less QoS and features but a more compact size.

Format:

[0] [64 bit unsigned size]
[8] [8 byte transport id]
[16] [32 byte domain name]
[48] [64 byte originator (generally host:port)]
[112] [32 bit unsigned type]
2 = MULTIASSIGN (most common type)
[116] [32 bit unsigned num updates]
[120] [32 bit unsigned quality (type of priority)]
[124] [64 bit unsigned Lamport clock]
[132] [64 bit unsigned wall clock timestamp]
[140] [8 bit unsigned ttl–for rebroadcasts]
[141] [knowledge updates start here in the buffer]

Definition at line 56 of file MessageHeader.h.

Constructor & Destructor Documentation

◆ MessageHeader()

madara::transport::MessageHeader::MessageHeader ( )

Constructor.

Definition at line 10 of file MessageHeader.cpp.

◆ ~MessageHeader()

madara::transport::MessageHeader::~MessageHeader ( )
virtual

Destructor.

Definition at line 26 of file MessageHeader.cpp.

Member Function Documentation

◆ encoded_size()

uint32_t madara::transport::MessageHeader::encoded_size ( void  ) const
virtual

Returns the size of the encoded MessageHeader class, which may be different from sizeof (MessageHeader) because of compiler optimizations for word boundaries.

Reimplemented in madara::transport::FragmentMessageHeader, and madara::transport::ReducedMessageHeader.

Definition at line 28 of file MessageHeader.cpp.

◆ equals()

bool madara::transport::MessageHeader::equals ( const MessageHeader other)
virtual

Compares the fields of this instance to another instance.

Parameters
otherthe other instance to compare against
Returns
true if equal, false otherwise

Reimplemented in madara::transport::FragmentMessageHeader, and madara::transport::ReducedMessageHeader.

Definition at line 434 of file MessageHeader.cpp.

◆ get_size()

uint64_t madara::transport::MessageHeader::get_size ( const char *  buffer)
static

Returns the size field of the header.

Returns
size field of the encoded buffer

Definition at line 429 of file MessageHeader.cpp.

◆ message_header_test()

static bool madara::transport::MessageHeader::message_header_test ( const char *  buffer)
inlinestatic

Tests the buffer for a normal message identifier.

Returns
true if identifier indicates reduced message header

Definition at line 129 of file MessageHeader.h.

◆ read()

const char * madara::transport::MessageHeader::read ( const char *  buffer,
int64_t &  buffer_remaining 
)
virtual

Reads a MessageHeader instance from a buffer and updates the amount of buffer room remaining.

Parameters
bufferthe readable buffer where data is stored
buffer_remainingthe count of bytes remaining in the buffer to read
Returns
current buffer position for next read
Exceptions
exceptions::MemoryExceptionnot enough buffer to encode

Reimplemented in madara::transport::FragmentMessageHeader, and madara::transport::ReducedMessageHeader.

Definition at line 44 of file MessageHeader.cpp.

◆ static_encoded_size()

uint32_t madara::transport::MessageHeader::static_encoded_size ( void  )
static

Returns the size of the encoded MessageHeader class.

This function differs from encoded_size () in that encoded_size reports polymorphically, while this method may be called statically and always refers to the base class's size.

Definition at line 36 of file MessageHeader.cpp.

◆ to_string()

std::string madara::transport::MessageHeader::to_string ( void  )
virtual

Converts the relevant fields to a printable string.

Returns
the printable string of fields in the header

Reimplemented in madara::transport::FragmentMessageHeader, and madara::transport::ReducedMessageHeader.

Definition at line 411 of file MessageHeader.cpp.

◆ write()

char * madara::transport::MessageHeader::write ( char *  buffer,
int64_t &  buffer_remaining 
)
virtual

Writes a MessageHeader instance to a buffer and updates the amount of buffer room remaining.

Parameters
bufferthe readable buffer where data is stored
buffer_remainingthe count of bytes remaining in the buffer to read
Returns
current buffer position for next write
Exceptions
exceptions::MemoryExceptionnot enough buffer to encode

Reimplemented in madara::transport::FragmentMessageHeader, and madara::transport::ReducedMessageHeader.

Definition at line 226 of file MessageHeader.cpp.

Member Data Documentation

◆ clock

uint64_t madara::transport::MessageHeader::clock

the clock of the sender when the message was generated

Definition at line 188 of file MessageHeader.h.

◆ domain

char madara::transport::MessageHeader::domain[32]
Initial value:
= {
'\0','\0','\0','\0','\0','\0','\0','\0',
'\0','\0','\0','\0','\0','\0','\0','\0',
'\0','\0','\0','\0','\0','\0','\0','\0',
'\0','\0','\0','\0','\0','\0','\0','\0'
}

the domain that this message is intended for

Definition at line 149 of file MessageHeader.h.

◆ madara_id

char madara::transport::MessageHeader::madara_id[8]
Initial value:
= {
'\0','\0','\0','\0','\0','\0','\0','\0'
}

the identifier of this transport (MADARA_IDENTIFIER)

Definition at line 142 of file MessageHeader.h.

◆ originator

char madara::transport::MessageHeader::originator[64]
Initial value:
= {
'\0','\0','\0','\0','\0','\0','\0','\0',
'\0','\0','\0','\0','\0','\0','\0','\0',
'\0','\0','\0','\0','\0','\0','\0','\0',
'\0','\0','\0','\0','\0','\0','\0','\0',
'\0','\0','\0','\0','\0','\0','\0','\0',
'\0','\0','\0','\0','\0','\0','\0','\0',
'\0','\0','\0','\0','\0','\0','\0','\0',
'\0','\0','\0','\0','\0','\0','\0','\0'
}

the originator of the message (host:port)

Definition at line 159 of file MessageHeader.h.

◆ quality

uint32_t madara::transport::MessageHeader::quality

the quality of the message sender

Definition at line 183 of file MessageHeader.h.

◆ size

uint64_t madara::transport::MessageHeader::size

the size of this header plus the updates

Definition at line 137 of file MessageHeader.h.

◆ timestamp

uint64_t madara::transport::MessageHeader::timestamp

the timestamp of the sender when the message was generated

Definition at line 193 of file MessageHeader.h.

◆ ttl

unsigned char madara::transport::MessageHeader::ttl

time to live (number of rebroadcasts to perform after original send

Definition at line 198 of file MessageHeader.h.

◆ type

uint32_t madara::transport::MessageHeader::type

the type of message

See also
madara::transport::Messages enum

Definition at line 173 of file MessageHeader.h.

◆ updates

uint32_t madara::transport::MessageHeader::updates

the number of knowledge variable updates in the message

Definition at line 178 of file MessageHeader.h.


The documentation for this class was generated from the following files: