Apollo 10.0
自动驾驶开放平台
apollo::bridge::UDPBridgeSenderComponent< T > 模板类 参考final

#include <udp_bridge_sender_component.h>

类 apollo::bridge::UDPBridgeSenderComponent< T > 继承关系图:
apollo::bridge::UDPBridgeSenderComponent< T > 的协作图:

Public 成员函数

 UDPBridgeSenderComponent ()
 
bool Init () override
 
bool Proc (const std::shared_ptr< T > &pb_msg) override
 
std::string Name () const
 
- Public 成员函数 继承自 apollo::cyber::Component< T >
 Component ()
 
 ~Component () override
 
bool Initialize (const ComponentConfig &config) override
 init the component by protobuf object.
 
bool Process (const std::shared_ptr< T > &msg0, const std::shared_ptr< NullType > &msg1, const std::shared_ptr< NullType > &msg2, const std::shared_ptr< NullType > &msg3)
 
- Public 成员函数 继承自 apollo::cyber::ComponentBase
virtual ~ComponentBase ()
 
virtual bool Initialize (const TimerComponentConfig &config)
 
virtual void Shutdown ()
 
template<typename T >
bool GetProtoConfig (T *config) const
 

额外继承的成员函数

- Public 类型 继承自 apollo::cyber::ComponentBase
template<typename M >
using Reader = cyber::Reader< M >
 
- Protected 成员函数 继承自 apollo::cyber::ComponentBase
virtual void Clear ()
 
const std::string & ConfigFilePath () const
 
void LoadConfigFiles (const ComponentConfig &config)
 
void LoadConfigFiles (const TimerComponentConfig &config)
 
- Protected 属性 继承自 apollo::cyber::ComponentBase
std::atomic< bool > is_shutdown_ = {false}
 
std::shared_ptr< Nodenode_ = nullptr
 
std::string config_file_path_ = ""
 
std::vector< std::shared_ptr< ReaderBase > > readers_
 

详细描述

template<typename T>
class apollo::bridge::UDPBridgeSenderComponent< T >

在文件 udp_bridge_sender_component.h48 行定义.

构造及析构函数说明

◆ UDPBridgeSenderComponent()

template<typename T >
apollo::bridge::UDPBridgeSenderComponent< T >::UDPBridgeSenderComponent ( )
inline

成员函数说明

◆ Init()

template<typename T >
bool apollo::bridge::UDPBridgeSenderComponent< T >::Init ( )
overridevirtual

实现了 apollo::cyber::ComponentBase.

在文件 udp_bridge_sender_component.cc33 行定义.

33 {
34 AINFO << "UDP bridge sender init, startin...";
36 if (!this->GetProtoConfig(&udp_bridge_remote)) {
37 AINFO << "load udp bridge component proto param failed";
38 return false;
39 }
40 remote_ip_ = udp_bridge_remote.remote_ip();
41 remote_port_ = udp_bridge_remote.remote_port();
42 proto_name_ = udp_bridge_remote.proto_name();
43 ADEBUG << "UDP Bridge remote ip is: " << remote_ip_;
44 ADEBUG << "UDP Bridge remote port is: " << remote_port_;
45 ADEBUG << "UDP Bridge for Proto is: " << proto_name_;
46 return true;
47}
bool GetProtoConfig(T *config) const
#define ADEBUG
Definition log.h:41
#define AINFO
Definition log.h:42

◆ Name()

template<typename T >
std::string apollo::bridge::UDPBridgeSenderComponent< T >::Name ( ) const
inline

在文件 udp_bridge_sender_component.h56 行定义.

56{ return FLAGS_bridge_module_name; }

◆ Proc()

template<typename T >
bool apollo::bridge::UDPBridgeSenderComponent< T >::Proc ( const std::shared_ptr< T > &  pb_msg)
override

在文件 udp_bridge_sender_component.cc50 行定义.

50 {
51 if (remote_port_ == 0 || remote_ip_.empty()) {
52 AERROR << "remote info is invalid!";
53 return false;
54 }
55
56 if (pb_msg == nullptr) {
57 AERROR << "proto msg is not ready!";
58 return false;
59 }
60
61 struct sockaddr_in server_addr;
62 server_addr.sin_addr.s_addr = inet_addr(remote_ip_.c_str());
63 server_addr.sin_family = AF_INET;
64 server_addr.sin_port = htons(static_cast<uint16_t>(remote_port_));
65 int sock_fd = socket(AF_INET, SOCK_DGRAM | SOCK_NONBLOCK, 0);
66
67 int res =
68 connect(sock_fd, (struct sockaddr *)&server_addr, sizeof(server_addr));
69 if (res < 0) {
70 close(sock_fd);
71 return false;
72 }
73
74 BridgeProtoSerializedBuf<T> proto_buf;
75 proto_buf.Serialize(pb_msg, proto_name_);
76 for (size_t j = 0; j < proto_buf.GetSerializedBufCount(); j++) {
77 ssize_t nbytes = send(sock_fd, proto_buf.GetSerializedBuf(j),
78 proto_buf.GetSerializedBufSize(j), 0);
79 if (nbytes != static_cast<ssize_t>(proto_buf.GetSerializedBufSize(j))) {
80 break;
81 }
82 }
83 close(sock_fd);
84
85 return true;
86}
#define AERROR
Definition log.h:44

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