Apollo 10.0
自动驾驶开放平台
apollo::bridge 命名空间参考

class  BridgeBuffer
 
class  BridgeHeader
 
class  BridgeProtoDiserializedBuf
 
class  BridgeProtoSerializedBuf
 
struct  HeaderItem
 
struct  HeaderItem< t, std::string >
 
class  HeaderItemBase
 
class  ProtoDiserializedBufBase
 
class  ProtoDiserializedBufBaseFactory
 
class  UDPBridgeMultiReceiverComponent
 
class  UDPBridgeReceiverComponent
 
struct  UDPBridgeReceiverRemoteInfo
 
class  UDPBridgeSenderComponent
 
struct  UDPBridgeSenderRemoteInfo
 
class  UDPListener
 

类型定义

typedef uint32_t hsize
 
typedef uint32_t bsize
 

枚举

enum  HType {
  Header_Ver , Msg_Name , Msg_ID , Msg_Size ,
  Msg_Frames , Frame_Size , Frame_Pos , Frame_Index ,
  Time_Stamp , Header_Tail
}
 

函数

 BRIDGE_IMPL (char)
 
 BRIDGE_IMPL (int)
 
 BRIDGE_IMPL (double)
 
template<enum HType t, typename T >
char * SerializeItemImp (const HeaderItem< t, T > &item, char *buf, size_t buf_size)
 
template<enum HType t, typename T >
const char * DiserializeItemImp (HeaderItem< t, T > *item, const char *buf, const size_t buf_size, size_t *diserialized_size)
 
int GetProtoSize (const char *buf, size_t size)
 
template<typename T >
void WriteToBuffer (BridgeBuffer< char > *buf, const std::shared_ptr< T > &pb_msg)
 
template<typename T >
bool RemoveItem (std::vector< T * > *list, const T *t)
 
template<typename T >
bool RemoveItem (std::vector< std::shared_ptr< T > > *list, std::shared_ptr< T > t)
 
 BRIDGE_RECV_IMPL (canbus::Chassis)
 
 BRIDGE_IMPL (LocalizationEstimate)
 
 BRIDGE_IMPL (planning::ADCTrajectory)
 

变量

constexpr char BRIDGE_HEADER_FLAG [] = "ApolloBridgeHeader"
 
constexpr size_t HEADER_FLAG_SIZE = sizeof(BRIDGE_HEADER_FLAG)
 
constexpr size_t Item_Header_Size = sizeof(HType) + sizeof(bsize) + 2
 
constexpr uint32_t INT_BITS = static_cast<uint32_t>(sizeof(uint32_t) * 8)
 
constexpr uint32_t FRAME_SIZE = 1024
 
constexpr int MAXEPOLLSIZE = 100
 
const int HEADER_BUF_SIZE = sizeof(size_t)
 

类型定义说明

◆ bsize

typedef uint32_t apollo::bridge::bsize

在文件 bridge_header_item.h24 行定义.

◆ hsize

typedef uint32_t apollo::bridge::hsize

在文件 bridge_header.h27 行定义.

枚举类型说明

◆ HType

枚举值
Header_Ver 
Msg_Name 
Msg_ID 
Msg_Size 
Msg_Frames 
Frame_Size 
Frame_Pos 
Frame_Index 
Time_Stamp 
Header_Tail 

在文件 bridge_header_item.h26 行定义.

函数说明

◆ BRIDGE_IMPL() [1/5]

apollo::bridge::BRIDGE_IMPL ( char  )

◆ BRIDGE_IMPL() [2/5]

apollo::bridge::BRIDGE_IMPL ( double  )

◆ BRIDGE_IMPL() [3/5]

apollo::bridge::BRIDGE_IMPL ( int  )

◆ BRIDGE_IMPL() [4/5]

apollo::bridge::BRIDGE_IMPL ( LocalizationEstimate  )

◆ BRIDGE_IMPL() [5/5]

apollo::bridge::BRIDGE_IMPL ( planning::ADCTrajectory  )

◆ BRIDGE_RECV_IMPL()

apollo::bridge::BRIDGE_RECV_IMPL ( canbus::Chassis  )

◆ DiserializeItemImp()

template<enum HType t, typename T >
const char * apollo::bridge::DiserializeItemImp ( HeaderItem< t, T > *  item,
const char *  buf,
const size_t  buf_size,
size_t *  diserialized_size 
)

在文件 bridge_header_item.h86 行定义.

88 {
89 if (!buf || !diserialized_size ||
90 buf_size < size_t(sizeof(HType) + sizeof(bsize) + 2)) {
91 return nullptr;
92 }
93 const char *res = buf;
94
95 char p_type[sizeof(HType)] = {0};
96 memcpy(p_type, buf, sizeof(HType));
97 HType type = *(reinterpret_cast<HType *>(p_type));
98 if (type != t) {
99 return nullptr;
100 }
101 res += sizeof(HType) + 1;
102 *diserialized_size += sizeof(HType) + 1;
103
104 char p_size[sizeof(bsize)] = {0};
105 memcpy(p_size, res, sizeof(bsize));
106 bsize size = *(reinterpret_cast<bsize *>(p_size));
107 res += sizeof(bsize) + 1;
108 *diserialized_size += sizeof(bsize) + 1;
109
110 if (buf_size < size_t(sizeof(HType) + sizeof(bsize) + size + 3)) {
111 return nullptr;
112 }
113 item->SetValue(res);
114 res += size + 1;
115 *diserialized_size += size + 1;
116 return res;
117}
void SetValue(const char *buf)

◆ GetProtoSize()

int apollo::bridge::GetProtoSize ( const char *  buf,
size_t  size 
)

在文件 util.cc21 行定义.

21 {
22 if (size != sizeof(size_t)) {
23 return 0;
24 }
25 char size_buf[sizeof(size_t)] = {0};
26 memcpy(size_buf, buf, sizeof(size_t));
27 int proto_size = *(reinterpret_cast<int *>(size_buf));
28 return proto_size;
29}

◆ RemoveItem() [1/2]

template<typename T >
bool apollo::bridge::RemoveItem ( std::vector< std::shared_ptr< T > > *  list,
std::shared_ptr< T >  t 
)

在文件 util.h65 行定义.

65 {
66 if (!list) {
67 return false;
68 }
69 typename std::vector<std::shared_ptr<T>>::iterator itor = list->begin();
70 for (; itor != list->end();) {
71 if (itor->get() == t.get()) {
72 itor = list->erase(itor);
73 continue;
74 }
75 ++itor;
76 }
77 return true;
78}

◆ RemoveItem() [2/2]

template<typename T >
bool apollo::bridge::RemoveItem ( std::vector< T * > *  list,
const T *  t 
)

在文件 util.h47 行定义.

47 {
48 if (!list) {
49 return false;
50 }
51 typename std::vector<T *>::iterator itor = list->begin();
52 for (; itor != list->end();) {
53 if (*itor == t) {
54 T *tmp = *itor;
55 FREE_POINTER(tmp);
56 itor = list->erase(itor);
57 continue;
58 }
59 ++itor;
60 }
61 return true;
62}
#define FREE_POINTER(p)
Definition macro.h:30

◆ SerializeItemImp()

template<enum HType t, typename T >
char * apollo::bridge::SerializeItemImp ( const HeaderItem< t, T > &  item,
char *  buf,
size_t  buf_size 
)

在文件 bridge_header_item.h56 行定义.

57 {
58 if (!buf || buf_size == 0 ||
59 buf_size < size_t(sizeof(t) + sizeof(bsize) + item.ValueSize() + 3)) {
60 return nullptr;
61 }
62 char *res = buf;
63
64 // item.ValueSize() get the size of T type data,
65 // the maximum of which is proto_name
66 // when transfer data, bsize can save sizeof(proto_name).
67 // The type needs to be kept consistent during serialize and diserialize.
68 bsize item_size = static_cast<bsize>(item.ValueSize());
69
70 HType type = t;
71 memcpy(res, &type, sizeof(HType));
72 res[sizeof(HType)] = ':';
73 res = res + sizeof(HType) + 1;
74
75 memcpy(res, &item_size, sizeof(bsize));
76 res[sizeof(bsize)] = ':';
77 res = res + sizeof(bsize) + 1;
78
79 memcpy(res, item.GetValuePtr(), item.ValueSize());
80 res[item.ValueSize()] = '\n';
81 res += item.ValueSize() + 1;
82 return res;
83}

◆ WriteToBuffer()

template<typename T >
void apollo::bridge::WriteToBuffer ( BridgeBuffer< char > *  buf,
const std::shared_ptr< T > &  pb_msg 
)

在文件 util.h32 行定义.

32 {
33 if (!buf) {
34 return;
35 }
36 size_t msg_len = pb_msg->ByteSize();
37 size_t total_size = HEADER_BUF_SIZE + msg_len;
38
39 buf->reset(total_size);
40
41 buf->write(0, reinterpret_cast<char *>(&msg_len), sizeof(size_t));
42 pb_msg->SerializeToArray(reinterpret_cast<char *>(buf + sizeof(size_t)),
43 static_cast<int>(msg_len));
44}
void write(size_t index, const T *data, size_t size)

变量说明

◆ BRIDGE_HEADER_FLAG

constexpr char apollo::bridge::BRIDGE_HEADER_FLAG[] = "ApolloBridgeHeader"
constexpr

在文件 bridge_header.h29 行定义.

◆ FRAME_SIZE

constexpr uint32_t apollo::bridge::FRAME_SIZE = 1024
constexpr

在文件 macro.h36 行定义.

◆ HEADER_BUF_SIZE

const int apollo::bridge::HEADER_BUF_SIZE = sizeof(size_t)

在文件 util.h30 行定义.

◆ HEADER_FLAG_SIZE

constexpr size_t apollo::bridge::HEADER_FLAG_SIZE = sizeof(BRIDGE_HEADER_FLAG)
constexpr

在文件 bridge_header.h30 行定义.

◆ INT_BITS

constexpr uint32_t apollo::bridge::INT_BITS = static_cast<uint32_t>(sizeof(uint32_t) * 8)
constexpr

在文件 bridge_proto_diserialized_buf.h30 行定义.

◆ Item_Header_Size

constexpr size_t apollo::bridge::Item_Header_Size = sizeof(HType) + sizeof(bsize) + 2
constexpr

在文件 bridge_header.h31 行定义.

◆ MAXEPOLLSIZE

constexpr int apollo::bridge::MAXEPOLLSIZE = 100
constexpr

在文件 udp_listener.h33 行定义.