Apollo 10.0
自动驾驶开放平台
apollo::bridge::BridgeHeader类 参考

#include <bridge_header.h>

apollo::bridge::BridgeHeader 的协作图:

Public 成员函数

 BridgeHeader ()=default
 
 ~BridgeHeader ()=default
 
bool Serialize (char *buf, size_t size)
 
bool Diserialize (const char *buf, size_t buf_size)
 
bool IsAvailable (const char *buf)
 
uint32_t GetHeaderVer () const
 
hsize GetHeaderSize () const
 
bsize GetHeaderBodySize () const
 
std::string GetMsgName () const
 
uint32_t GetMsgID () const
 
uint32_t GetTotalFrames () const
 
uint32_t GetIndex () const
 
double GetTimeStamp () const
 
bsize GetMsgSize () const
 
bsize GetFrameSize () const
 
bsize GetFramePos () const
 
void SetHeaderVer (uint32_t header_ver)
 
void SetMsgName (const std::string &msg_name)
 
void SetMsgID (uint32_t msg_id)
 
void SetTotalFrames (uint32_t total_frames)
 
void SetFrameSize (bsize frame_size)
 
void SetFramePos (bsize frame_pos)
 
void SetIndex (uint32_t index)
 
void SetTimeStamp (double time_stamp)
 
void SetMsgSize (bsize msg_size)
 

详细描述

在文件 bridge_header.h33 行定义.

构造及析构函数说明

◆ BridgeHeader()

apollo::bridge::BridgeHeader::BridgeHeader ( )
default

◆ ~BridgeHeader()

apollo::bridge::BridgeHeader::~BridgeHeader ( )
default

成员函数说明

◆ Diserialize()

bool apollo::bridge::BridgeHeader::Diserialize ( const char *  buf,
size_t  buf_size 
)

在文件 bridge_header.cc44 行定义.

44 {
45 const char *cursor = buf;
46
47 int i = static_cast<int>(buf_size);
48 while (i > 0) {
49 HType type = *(reinterpret_cast<const HType *>(cursor));
50 if (type >= Header_Tail || type < 0) {
51 cursor += sizeof(HType) + 1;
52 bsize size = *(reinterpret_cast<const bsize *>(cursor));
53 cursor += sizeof(bsize) + size + 2;
54 if (size > (std::numeric_limits<int>::max() - sizeof(HType) -
55 sizeof(bsize) - 3)) {
56 return false;
57 }
58 i -= static_cast<int>(sizeof(HType) + sizeof(bsize) + size + 3);
59 continue;
60 }
61
62 for (int j = 0; j < Header_Tail; j++) {
63 if (type == header_item[j]->GetType()) {
64 size_t value_size = 0;
65 cursor = header_item[j]->DiserializeItem(cursor, static_cast<size_t>(i),
66 &value_size);
67 i -= static_cast<int>(value_size);
68 if (cursor == nullptr) {
69 return false;
70 }
71 break;
72 }
73 }
74 }
75 return true;
76}
virtual const char * DiserializeItem(const char *buf, const size_t buf_size, size_t *diserialized_size)=0
bool GetType(const string &filename, FileType *type)
Definition file.cc:493

◆ GetFramePos()

bsize apollo::bridge::BridgeHeader::GetFramePos ( ) const
inline

在文件 bridge_header.h56 行定义.

56{ return frame_pos_.value_; }

◆ GetFrameSize()

bsize apollo::bridge::BridgeHeader::GetFrameSize ( ) const
inline

在文件 bridge_header.h55 行定义.

55{ return frame_size_.value_; }

◆ GetHeaderBodySize()

bsize apollo::bridge::BridgeHeader::GetHeaderBodySize ( ) const
inline

在文件 bridge_header.h48 行定义.

48{ return header_body_size_; }

◆ GetHeaderSize()

hsize apollo::bridge::BridgeHeader::GetHeaderSize ( ) const
inline

在文件 bridge_header.h44 行定义.

44 {
45 return static_cast<hsize>(header_body_size_ + HEADER_FLAG_SIZE +
46 sizeof(hsize) + 2);
47 }
constexpr size_t HEADER_FLAG_SIZE

◆ GetHeaderVer()

uint32_t apollo::bridge::BridgeHeader::GetHeaderVer ( ) const
inline

在文件 bridge_header.h43 行定义.

43{ return header_ver_.value_; }

◆ GetIndex()

uint32_t apollo::bridge::BridgeHeader::GetIndex ( ) const
inline

在文件 bridge_header.h52 行定义.

52{ return index_.value_; }

◆ GetMsgID()

uint32_t apollo::bridge::BridgeHeader::GetMsgID ( ) const
inline

在文件 bridge_header.h50 行定义.

50{ return msg_id_.value_; }

◆ GetMsgName()

std::string apollo::bridge::BridgeHeader::GetMsgName ( ) const
inline

在文件 bridge_header.h49 行定义.

49{ return msg_name_.value_; }

◆ GetMsgSize()

bsize apollo::bridge::BridgeHeader::GetMsgSize ( ) const
inline

在文件 bridge_header.h54 行定义.

54{ return msg_size_.value_; }

◆ GetTimeStamp()

double apollo::bridge::BridgeHeader::GetTimeStamp ( ) const
inline

在文件 bridge_header.h53 行定义.

53{ return time_stamp_.value_; }

◆ GetTotalFrames()

uint32_t apollo::bridge::BridgeHeader::GetTotalFrames ( ) const
inline

在文件 bridge_header.h51 行定义.

51{ return total_frames_.value_; }

◆ IsAvailable()

bool apollo::bridge::BridgeHeader::IsAvailable ( const char *  buf)

在文件 bridge_header.cc78 行定义.

78 {
79 if (!buf) {
80 return false;
81 }
82 if (memcmp(BRIDGE_HEADER_FLAG, buf, sizeof(BRIDGE_HEADER_FLAG) - 1) != 0) {
83 return false;
84 }
85 return true;
86}
constexpr char BRIDGE_HEADER_FLAG[]

◆ Serialize()

bool apollo::bridge::BridgeHeader::Serialize ( char *  buf,
size_t  size 
)

在文件 bridge_header.cc25 行定义.

25 {
26 if (!buf || size == 0) {
27 return false;
28 }
29 char *cursor = buf;
30 char *p_header_size = nullptr;
31 cursor = SerializeHeaderFlag(cursor, size);
32 p_header_size = cursor;
33 cursor += sizeof(hsize) + 1;
34 for (int i = 0; i < Header_Tail; i++) {
35 cursor = header_item[i]->SerializeItem(cursor, size);
36 }
37
38 if (!SerializeHeaderSize(p_header_size, size)) {
39 return false;
40 }
41 return true;
42}
virtual char * SerializeItem(char *buf, size_t buf_size)=0

◆ SetFramePos()

void apollo::bridge::BridgeHeader::SetFramePos ( bsize  frame_pos)
inline

在文件 bridge_header.h83 行定义.

83 {
84 frame_pos_ = frame_pos;
85 header_body_size_ +=
86 static_cast<hsize>(Item_Header_Size + 1 + sizeof(bsize));
87 }
constexpr size_t Item_Header_Size

◆ SetFrameSize()

void apollo::bridge::BridgeHeader::SetFrameSize ( bsize  frame_size)
inline

在文件 bridge_header.h78 行定义.

78 {
79 frame_size_ = frame_size;
80 header_body_size_ +=
81 static_cast<hsize>(Item_Header_Size + 1 + sizeof(bsize));
82 }

◆ SetHeaderVer()

void apollo::bridge::BridgeHeader::SetHeaderVer ( uint32_t  header_ver)
inline

在文件 bridge_header.h58 行定义.

58 {
59 header_ver_ = header_ver;
60 header_body_size_ +=
61 static_cast<hsize>(Item_Header_Size + 1 + sizeof(uint32_t));
62 }

◆ SetIndex()

void apollo::bridge::BridgeHeader::SetIndex ( uint32_t  index)
inline

在文件 bridge_header.h88 行定义.

88 {
89 index_ = index;
90 header_body_size_ +=
91 static_cast<hsize>(Item_Header_Size + 1 + sizeof(uint32_t));
92 }

◆ SetMsgID()

void apollo::bridge::BridgeHeader::SetMsgID ( uint32_t  msg_id)
inline

在文件 bridge_header.h68 行定义.

68 {
69 msg_id_ = msg_id;
70 header_body_size_ +=
71 static_cast<hsize>(Item_Header_Size + 1 + sizeof(uint32_t));
72 }

◆ SetMsgName()

void apollo::bridge::BridgeHeader::SetMsgName ( const std::string &  msg_name)
inline

在文件 bridge_header.h63 行定义.

63 {
64 msg_name_ = msg_name;
65 header_body_size_ +=
66 static_cast<hsize>(Item_Header_Size + 1 + msg_name.length() + 1);
67 }

◆ SetMsgSize()

void apollo::bridge::BridgeHeader::SetMsgSize ( bsize  msg_size)
inline

在文件 bridge_header.h98 行定义.

98 {
99 msg_size_ = msg_size;
100 header_body_size_ +=
101 static_cast<hsize>(Item_Header_Size + 1 + sizeof(bsize));
102 }

◆ SetTimeStamp()

void apollo::bridge::BridgeHeader::SetTimeStamp ( double  time_stamp)
inline

在文件 bridge_header.h93 行定义.

93 {
94 time_stamp_ = time_stamp;
95 header_body_size_ +=
96 static_cast<hsize>(Item_Header_Size + 1 + sizeof(double));
97 }

◆ SetTotalFrames()

void apollo::bridge::BridgeHeader::SetTotalFrames ( uint32_t  total_frames)
inline

在文件 bridge_header.h73 行定义.

73 {
74 total_frames_ = total_frames;
75 header_body_size_ +=
76 static_cast<hsize>(Item_Header_Size + 1 + sizeof(uint32_t));
77 }

该类的文档由以下文件生成: