Apollo 10.0
自动驾驶开放平台
apollo::cyber::transport::HybridReceiver< M > 模板类 参考

#include <hybrid_receiver.h>

类 apollo::cyber::transport::HybridReceiver< M > 继承关系图:
apollo::cyber::transport::HybridReceiver< M > 的协作图:

Public 类型

using HistoryPtr = std::shared_ptr< History< M > >
 
using ReceiverPtr = std::shared_ptr< Receiver< M > >
 
using ReceiverContainer = std::unordered_map< OptionalMode, ReceiverPtr, std::hash< int > >
 
using TransmitterContainer = std::unordered_map< OptionalMode, std::unordered_map< uint64_t, RoleAttributes >, std::hash< int > >
 
using CommunicationModePtr = std::shared_ptr< proto::CommunicationMode >
 
using MappingTable = std::unordered_map< Relation, OptionalMode, std::hash< int > >
 
- Public 类型 继承自 apollo::cyber::transport::Receiver< M >
using MessagePtr = std::shared_ptr< M >
 
using MessageListener = std::function< void(const MessagePtr &, const MessageInfo &, const RoleAttributes &)>
 

Public 成员函数

 HybridReceiver (const RoleAttributes &attr, const typename Receiver< M >::MessageListener &msg_listener, const ParticipantPtr &participant)
 
virtual ~HybridReceiver ()
 
void Enable () override
 
void Disable () override
 
void Enable (const RoleAttributes &opposite_attr) override
 
void Disable (const RoleAttributes &opposite_attr) override
 
- Public 成员函数 继承自 apollo::cyber::transport::Receiver< M >
 Receiver (const RoleAttributes &attr, const MessageListener &msg_listener)
 
virtual ~Receiver ()
 
- Public 成员函数 继承自 apollo::cyber::transport::Endpoint
 Endpoint (const RoleAttributes &attr)
 
virtual ~Endpoint ()
 
const Identityid () const
 
const RoleAttributesattributes () const
 

额外继承的成员函数

- Protected 成员函数 继承自 apollo::cyber::transport::Receiver< M >
void OnNewMessage (const MessagePtr &msg, const MessageInfo &msg_info)
 
- Protected 属性 继承自 apollo::cyber::transport::Receiver< M >
MessageListener msg_listener_
 
- Protected 属性 继承自 apollo::cyber::transport::Endpoint
bool enabled_
 
Identity id_
 
RoleAttributes attr_
 

详细描述

template<typename M>
class apollo::cyber::transport::HybridReceiver< M >

在文件 hybrid_receiver.h49 行定义.

成员类型定义说明

◆ CommunicationModePtr

template<typename M >
using apollo::cyber::transport::HybridReceiver< M >::CommunicationModePtr = std::shared_ptr<proto::CommunicationMode>

在文件 hybrid_receiver.h59 行定义.

◆ HistoryPtr

template<typename M >
using apollo::cyber::transport::HybridReceiver< M >::HistoryPtr = std::shared_ptr<History<M> >

在文件 hybrid_receiver.h51 行定义.

◆ MappingTable

template<typename M >
using apollo::cyber::transport::HybridReceiver< M >::MappingTable = std::unordered_map<Relation, OptionalMode, std::hash<int> >

在文件 hybrid_receiver.h60 行定义.

◆ ReceiverContainer

template<typename M >
using apollo::cyber::transport::HybridReceiver< M >::ReceiverContainer = std::unordered_map<OptionalMode, ReceiverPtr, std::hash<int> >

在文件 hybrid_receiver.h53 行定义.

◆ ReceiverPtr

template<typename M >
using apollo::cyber::transport::HybridReceiver< M >::ReceiverPtr = std::shared_ptr<Receiver<M> >

在文件 hybrid_receiver.h52 行定义.

◆ TransmitterContainer

template<typename M >
using apollo::cyber::transport::HybridReceiver< M >::TransmitterContainer = std::unordered_map<OptionalMode, std::unordered_map<uint64_t, RoleAttributes>, std::hash<int> >

在文件 hybrid_receiver.h55 行定义.

构造及析构函数说明

◆ HybridReceiver()

template<typename M >
apollo::cyber::transport::HybridReceiver< M >::HybridReceiver ( const RoleAttributes attr,
const typename Receiver< M >::MessageListener msg_listener,
const ParticipantPtr participant 
)

在文件 hybrid_receiver.h98 行定义.

102 : Receiver<M>(attr, msg_listener),
103 history_(nullptr),
104 participant_(participant) {
105 InitMode();
106 ObtainConfig();
107 InitHistory();
108 InitReceivers();
109 InitTransmitters();
110}

◆ ~HybridReceiver()

template<typename M >
apollo::cyber::transport::HybridReceiver< M >::~HybridReceiver ( )
virtual

在文件 hybrid_receiver.h113 行定义.

113 {
114 ClearTransmitters();
115 ClearReceivers();
116}

成员函数说明

◆ Disable() [1/2]

template<typename M >
void apollo::cyber::transport::HybridReceiver< M >::Disable ( )
overridevirtual

实现了 apollo::cyber::transport::Receiver< M >.

在文件 hybrid_receiver.h127 行定义.

127 {
128 std::lock_guard<std::mutex> lock(mutex_);
129 for (auto& item : receivers_) {
130 item.second->Disable();
131 }
132}

◆ Disable() [2/2]

template<typename M >
void apollo::cyber::transport::HybridReceiver< M >::Disable ( const RoleAttributes opposite_attr)
overridevirtual

实现了 apollo::cyber::transport::Receiver< M >.

在文件 hybrid_receiver.h150 行定义.

150 {
151 auto relation = GetRelation(opposite_attr);
152 RETURN_IF(relation == NO_RELATION);
153
154 uint64_t id = opposite_attr.id();
155 std::lock_guard<std::mutex> lock(mutex_);
156 if (transmitters_[mapping_table_[relation]].count(id) > 0) {
157 transmitters_[mapping_table_[relation]].erase(id);
158 receivers_[mapping_table_[relation]]->Disable(opposite_attr);
159 }
160}
#define RETURN_IF(condition)
Definition log.h:106
@ NO_RELATION
Definition types.h:37

◆ Enable() [1/2]

template<typename M >
void apollo::cyber::transport::HybridReceiver< M >::Enable ( )
overridevirtual

实现了 apollo::cyber::transport::Receiver< M >.

在文件 hybrid_receiver.h119 行定义.

119 {
120 std::lock_guard<std::mutex> lock(mutex_);
121 for (auto& item : receivers_) {
122 item.second->Enable();
123 }
124}

◆ Enable() [2/2]

template<typename M >
void apollo::cyber::transport::HybridReceiver< M >::Enable ( const RoleAttributes opposite_attr)
overridevirtual

实现了 apollo::cyber::transport::Receiver< M >.

在文件 hybrid_receiver.h135 行定义.

135 {
136 auto relation = GetRelation(opposite_attr);
137 RETURN_IF(relation == NO_RELATION);
138
139 uint64_t id = opposite_attr.id();
140 std::lock_guard<std::mutex> lock(mutex_);
141 if (transmitters_[mapping_table_[relation]].count(id) == 0) {
142 transmitters_[mapping_table_[relation]].insert(
143 std::make_pair(id, opposite_attr));
144 receivers_[mapping_table_[relation]]->Enable(opposite_attr);
145 ReceiveHistoryMsg(opposite_attr);
146 }
147}

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