Apollo 11.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 >
uint64_t seq_num_
 
MessageInfo msg_info_
 
std::shared_ptr<::bvar::Adder< int > > msg_counter_
 
- Protected 属性 继承自 apollo::cyber::transport::Endpoint
bool enabled_
 
Identity id_
 
RoleAttributes attr_
 

详细描述

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

在文件 hybrid_transmitter.h50 行定义.

成员类型定义说明

◆ CommunicationModePtr

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

在文件 hybrid_transmitter.h59 行定义.

◆ HistoryPtr

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

在文件 hybrid_transmitter.h53 行定义.

◆ MappingTable

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

在文件 hybrid_transmitter.h60 行定义.

◆ MessagePtr

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

在文件 hybrid_transmitter.h52 行定义.

◆ ReceiverMap

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

在文件 hybrid_transmitter.h57 行定义.

◆ TransmitterMap

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

在文件 hybrid_transmitter.h55 行定义.

◆ TransmitterPtr

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

在文件 hybrid_transmitter.h54 行定义.

构造及析构函数说明

◆ HybridTransmitter()

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

在文件 hybrid_transmitter.h101 行定义.

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

◆ ~HybridTransmitter()

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

在文件 hybrid_transmitter.h115 行定义.

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

成员函数说明

◆ AcquireMessage()

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

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

在文件 hybrid_transmitter.h175 行定义.

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

◆ Disable() [1/2]

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

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

在文件 hybrid_transmitter.h129 行定义.

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

◆ 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.h151 行定义.

151 {
152 auto relation = GetRelation(opposite_attr);
153 if (relation == NO_RELATION) {
154 return;
155 }
156
157 uint64_t id = opposite_attr.id();
158 std::lock_guard<std::mutex> lock(mutex_);
159 receivers_[mapping_table_[relation]].erase(id);
160 transmitters_[mapping_table_[relation]]->Disable(opposite_attr);
161}
@ 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.h121 行定义.

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

◆ 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.h137 行定义.

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

◆ 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.h164 行定义.

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

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