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

#include <hybrid_transmitter.h>

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

Public 类型

using MessagePtr = std::shared_ptr< M >
 
using HistoryPtr = std::shared_ptr< History< M > >
 
using TransmitterPtr = std::shared_ptr< Transmitter< M > >
 
using TransmitterMap = std::unordered_map< OptionalMode, TransmitterPtr, std::hash< int > >
 
using ReceiverMap = std::unordered_map< OptionalMode, std::set< uint64_t >, std::hash< int > >
 
using CommunicationModePtr = std::shared_ptr< proto::CommunicationMode >
 
using MappingTable = std::unordered_map< Relation, OptionalMode, std::hash< int > >
 
- Public 类型 继承自 apollo::cyber::transport::Transmitter< M >
using MessagePtr = std::shared_ptr< M >
 

Public 成员函数

 HybridTransmitter (const RoleAttributes &attr, const ParticipantPtr &participant)
 
virtual ~HybridTransmitter ()
 
void Enable () override
 
void Disable () override
 
void Enable (const RoleAttributes &opposite_attr) override
 
void Disable (const RoleAttributes &opposite_attr) override
 
bool Transmit (const MessagePtr &msg, const MessageInfo &msg_info) override
 
bool AcquireMessage (std::shared_ptr< M > &msg)
 
- Public 成员函数 继承自 apollo::cyber::transport::Transmitter< M >
 Transmitter (const RoleAttributes &attr)
 
virtual ~Transmitter ()
 
virtual bool Transmit (const MessagePtr &msg)
 
uint64_t NextSeqNum ()
 
uint64_t seq_num () const
 
- Public 成员函数 继承自 apollo::cyber::transport::Endpoint
 Endpoint (const RoleAttributes &attr)
 
virtual ~Endpoint ()
 
const Identityid () const
 
const RoleAttributesattributes () const
 

额外继承的成员函数

- Protected 属性 继承自 apollo::cyber::transport::Transmitter< M >
MessageInfo msg_info_
 
std::shared_ptr<::bvar::Adder< int > > seq_num_
 
- Protected 属性 继承自 apollo::cyber::transport::Endpoint
bool enabled_
 
Identity id_
 
RoleAttributes attr_
 

详细描述

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

在文件 hybrid_transmitter.h51 行定义.

成员类型定义说明

◆ CommunicationModePtr

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

在文件 hybrid_transmitter.h60 行定义.

◆ HistoryPtr

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

在文件 hybrid_transmitter.h54 行定义.

◆ MappingTable

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

在文件 hybrid_transmitter.h61 行定义.

◆ MessagePtr

template<typename M >
using apollo::cyber::transport::HybridTransmitter< M >::MessagePtr = std::shared_ptr<M>

在文件 hybrid_transmitter.h53 行定义.

◆ ReceiverMap

template<typename M >
using apollo::cyber::transport::HybridTransmitter< M >::ReceiverMap = std::unordered_map<OptionalMode, std::set<uint64_t>, std::hash<int> >

在文件 hybrid_transmitter.h58 行定义.

◆ TransmitterMap

template<typename M >
using apollo::cyber::transport::HybridTransmitter< M >::TransmitterMap = std::unordered_map<OptionalMode, TransmitterPtr, std::hash<int> >

在文件 hybrid_transmitter.h56 行定义.

◆ TransmitterPtr

template<typename M >
using apollo::cyber::transport::HybridTransmitter< M >::TransmitterPtr = std::shared_ptr<Transmitter<M> >

在文件 hybrid_transmitter.h55 行定义.

构造及析构函数说明

◆ HybridTransmitter()

template<typename M >
apollo::cyber::transport::HybridTransmitter< M >::HybridTransmitter ( const RoleAttributes attr,
const ParticipantPtr participant 
)

在文件 hybrid_transmitter.h102 行定义.

104 : Transmitter<M>(attr),
105 history_(nullptr),
106 mode_(nullptr),
107 participant_(participant) {
108 InitMode();
109 ObtainConfig();
110 InitHistory();
111 InitTransmitters();
112 InitReceivers();
113}

◆ ~HybridTransmitter()

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

在文件 hybrid_transmitter.h116 行定义.

116 {
117 ClearReceivers();
118 ClearTransmitters();
119}

成员函数说明

◆ AcquireMessage()

template<typename M >
bool apollo::cyber::transport::HybridTransmitter< M >::AcquireMessage ( std::shared_ptr< M > &  msg)
virtual

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

在文件 hybrid_transmitter.h177 行定义.

177 {
178 bool result = false;
179 for (auto& item : transmitters_) {
180 result = item.second->AcquireMessage(msg);
181 if (result) {
182 return true;
183 }
184 }
185 return false;
186}

◆ Disable() [1/2]

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

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

在文件 hybrid_transmitter.h130 行定义.

130 {
131 std::lock_guard<std::mutex> lock(mutex_);
132 for (auto& item : transmitters_) {
133 item.second->Disable();
134 }
135}

◆ Disable() [2/2]

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

重载 apollo::cyber::transport::Transmitter< M > .

在文件 hybrid_transmitter.h152 行定义.

152 {
153 auto relation = GetRelation(opposite_attr);
154 if (relation == NO_RELATION) {
155 return;
156 }
157
158 uint64_t id = opposite_attr.id();
159 std::lock_guard<std::mutex> lock(mutex_);
160 receivers_[mapping_table_[relation]].erase(id);
161 transmitters_[mapping_table_[relation]]->Disable(opposite_attr);
162}
@ NO_RELATION
Definition types.h:37

◆ Enable() [1/2]

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

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

在文件 hybrid_transmitter.h122 行定义.

122 {
123 std::lock_guard<std::mutex> lock(mutex_);
124 for (auto& item : transmitters_) {
125 item.second->Enable();
126 }
127}

◆ Enable() [2/2]

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

重载 apollo::cyber::transport::Transmitter< M > .

在文件 hybrid_transmitter.h138 行定义.

138 {
139 auto relation = GetRelation(opposite_attr);
140 if (relation == NO_RELATION) {
141 return;
142 }
143
144 uint64_t id = opposite_attr.id();
145 std::lock_guard<std::mutex> lock(mutex_);
146 receivers_[mapping_table_[relation]].insert(id);
147 transmitters_[mapping_table_[relation]]->Enable(opposite_attr);
148 TransmitHistoryMsg(opposite_attr);
149}

◆ Transmit()

template<typename M >
bool apollo::cyber::transport::HybridTransmitter< M >::Transmit ( const MessagePtr msg,
const MessageInfo msg_info 
)
overridevirtual

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

在文件 hybrid_transmitter.h165 行定义.

166 {
167 std::lock_guard<std::mutex> lock(mutex_);
168 history_->Add(msg, msg_info);
169 bool return_val = false;
170 for (auto& item : transmitters_) {
171 item.second->Transmit(msg, msg_info);
172 }
173 return true;
174}

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