#include <swcdb/core/comm/Header.h>
Public Member Functions | |
Header (uint64_t cmd=0, uint32_t timeout=0) noexcept | |
Header (const Header &init_from_req_header) noexcept | |
~Header () noexcept | |
void | reset () noexcept |
void | set (uint64_t cmd=0, uint32_t timeout=0) noexcept |
uint8_t | encoded_length () noexcept |
void | encode (uint8_t **bufp) const |
void | decode_prefix (const uint8_t **bufp, size_t *remainp) |
void | decode (const uint8_t **bufp, size_t *remainp) |
void | initialize_from_response (const Header &header) |
void | initialize_from_request (const Header &header) |
void | print (std::ostream &out) const |
Public Attributes | |
uint8_t | version |
Protocol version. More... | |
uint8_t | header_len |
Length of header. More... | |
uint8_t | flags |
Flags. More... | |
uint8_t | buffers |
number of buffers from 0 to 2 (data+data_ext) More... | |
uint32_t | id |
Request ID. More... | |
uint32_t | timeout_ms |
Request timeout. More... | |
uint32_t | checksum |
Header checksum (excl. it self) More... | |
uint16_t | command |
Request command number. More... | |
BufferInfo | data |
Data Buffer. More... | |
BufferInfo | data_ext |
Data Extended Buffer. More... | |
Static Public Attributes | |
static const uint8_t | PROTOCOL_VERSION = 1 |
static const uint8_t | PREFIX_LENGTH = 2 |
static const uint8_t | FIXED_LENGTH = PREFIX_LENGTH + 16 |
static const uint8_t | MAX_LENGTH = FIXED_LENGTH + 15 * 2 |
static const uint8_t | FLAG_REQUEST_BIT = 0x01 |
static const uint8_t | FLAG_REQUEST_MASK = 0xFE |
static const uint8_t | FLAG_RESPONSE_IGNORE_BIT = 0x02 |
static const uint8_t | FLAG_RESPONSE_PARTIAL_BIT = 0x04 |
static const uint8_t | FLAG_RESPONSE_PARTIAL_MASK = 0xFB |
|
inlinenoexcept |
|
inlineexplicitnoexcept |
SWC_CAN_INLINE void SWC::Comm::Header::decode | ( | const uint8_t ** | bufp, |
size_t * | remainp | ||
) |
Definition at line 149 of file Header.h.
References buffers, checksum, SWC::Core::checksum_i32_chk(), SWC::Error::COMM_HEADER_CHECKSUM_MISMATCH, command, data, data_ext, SWC::Comm::BufferInfo::decode(), SWC::Serialization::decode_i16(), SWC::Serialization::decode_i32(), SWC::Serialization::decode_i8(), flags, header_len, PREFIX_LENGTH, SWC_FMT_LD, SWC_THROWF, and timeout_ms.
SWC_CAN_INLINE void SWC::Comm::Header::decode_prefix | ( | const uint8_t ** | bufp, |
size_t * | remainp | ||
) |
Definition at line 138 of file Header.h.
References SWC::Error::COMM_BAD_HEADER, SWC::Serialization::decode_i8(), header_len, PREFIX_LENGTH, SWC_FMT_LU, SWC_THROWF, and version.
SWC_CAN_INLINE void SWC::Comm::Header::encode | ( | uint8_t ** | bufp | ) | const |
Definition at line 118 of file Header.h.
References buffers, SWC::Core::checksum_i32(), command, data, data_ext, SWC::Comm::BufferInfo::encode(), SWC::Serialization::encode_i16(), SWC::Serialization::encode_i32(), SWC::Serialization::encode_i8(), flags, header_len, SWC::Comm::BufferInfo::size, timeout_ms, and version.
Referenced by SWC::Comm::Buffers::get_buffers().
|
noexcept |
Definition at line 103 of file Header.h.
References buffers, data, data_ext, SWC::Comm::BufferInfo::encoded_length(), FIXED_LENGTH, header_len, and SWC::Comm::BufferInfo::size.
Referenced by SWC::Comm::Buffers::get_buffers().
SWC_CAN_INLINE void SWC::Comm::Header::initialize_from_request | ( | const Header & | header | ) |
SWC_CAN_INLINE void SWC::Comm::Header::initialize_from_response | ( | const Header & | header | ) |
void SWC::Comm::Header::print | ( | std::ostream & | out | ) | const |
Definition at line 13 of file Header.cc.
References buffers, checksum, command, data, data_ext, flags, header_len, SWC::Comm::BufferInfo::print(), timeout_ms, and version.
Referenced by SWC::Comm::Event::print().
|
noexcept |
Definition at line 89 of file Header.h.
References buffers, checksum, command, data, data_ext, flags, header_len, SWC::Comm::BufferInfo::reset(), timeout_ms, and version.
|
inlinenoexcept |
uint8_t SWC::Comm::Header::buffers |
number of buffers from 0 to 2 (data+data_ext)
Definition at line 75 of file Header.h.
Referenced by decode(), SWC::Comm::Event::decode_buffers(), encode(), encoded_length(), initialize_from_request(), initialize_from_response(), print(), and reset().
uint32_t SWC::Comm::Header::checksum |
uint16_t SWC::Comm::Header::command |
Request command number.
Definition at line 79 of file Header.h.
Referenced by decode(), encode(), initialize_from_request(), initialize_from_response(), print(), and reset().
BufferInfo SWC::Comm::Header::data |
Data Buffer.
Definition at line 81 of file Header.h.
Referenced by decode(), SWC::Comm::Event::decode_buffers(), encode(), encoded_length(), initialize_from_request(), initialize_from_response(), SWC::Comm::Buffers::prepare(), print(), reset(), and SWC::Comm::Buffers::set_data().
BufferInfo SWC::Comm::Header::data_ext |
Data Extended Buffer.
Definition at line 82 of file Header.h.
Referenced by decode(), SWC::Comm::Event::decode_buffers(), encode(), encoded_length(), initialize_from_request(), initialize_from_response(), SWC::Comm::Buffers::prepare(), print(), and reset().
|
static |
Definition at line 22 of file Header.h.
Referenced by encoded_length().
|
static |
Definition at line 25 of file Header.h.
Referenced by SWC::Comm::ConnHandler::received(), SWC::Comm::ConnHandler::run_pending(), SWC::Comm::ConnHandler::send_request(), and SWC::Comm::ConnHandler::write().
|
static |
Definition at line 26 of file Header.h.
Referenced by SWC::Comm::ConnHandler::send_response(), and SWC::Comm::ConnHandler::write().
|
static |
Definition at line 28 of file Header.h.
Referenced by SWC::Comm::ConnHandler::write().
|
static |
Definition at line 29 of file Header.h.
Referenced by SWC::Comm::Protocol::Bkr::Handler::ColumnList::callback(), SWC::Comm::Protocol::Mngr::Handler::column_list(), SWC::Ranger::Callback::ColumnsUnload::complete(), and SWC::Comm::ConnHandler::run_pending().
|
static |
uint8_t SWC::Comm::Header::flags |
Flags.
Definition at line 74 of file Header.h.
Referenced by decode(), encode(), initialize_from_request(), initialize_from_response(), print(), and reset().
uint8_t SWC::Comm::Header::header_len |
Length of header.
Definition at line 72 of file Header.h.
Referenced by decode(), decode_prefix(), encode(), encoded_length(), print(), and reset().
uint32_t SWC::Comm::Header::id |
Request ID.
Definition at line 76 of file Header.h.
Referenced by initialize_from_request(), and initialize_from_response().
|
static |
|
static |
Definition at line 21 of file Header.h.
Referenced by decode(), decode_prefix(), SWC::Comm::ConnHandler::Receiver_Header::operator()(), SWC::Comm::ConnHandler::Receiver_HeaderPrefix::operator()(), and SWC::Comm::ConnHandler::read().
|
static |
uint32_t SWC::Comm::Header::timeout_ms |
uint8_t SWC::Comm::Header::version |