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

#include <writer.h>

类 apollo::cyber::Writer< MessageT > 继承关系图:
apollo::cyber::Writer< MessageT > 的协作图:

Public 类型

using TransmitterPtr = std::shared_ptr< transport::Transmitter< MessageT > >
 
using ChangeConnection = typename service_discovery::Manager::ChangeConnection
 

Public 成员函数

 Writer (const proto::RoleAttributes &role_attr)
 Construct a new Writer object
 
virtual ~Writer ()
 
bool Init () override
 Init the Writer
 
void Shutdown () override
 Shutdown the Writer
 
virtual bool Write (const MessageT &msg)
 Write a MessageT instance
 
virtual bool Write (const std::shared_ptr< MessageT > &msg_ptr)
 Write a shared ptr of MessageT
 
bool HasReader () override
 Is there any Reader that subscribes our Channel? You can publish message when this return true
 
void GetReaders (std::vector< proto::RoleAttributes > *readers) override
 Get all Readers that subscriber our writing channel
 
std::shared_ptr< MessageT > AcquireMessage ()
 Acquire message instance to send
 
- Public 成员函数 继承自 apollo::cyber::WriterBase
 WriterBase (const proto::RoleAttributes &role_attr)
 Construct a new Writer Base object
 
virtual ~WriterBase ()
 
const std::string & GetChannelName () const
 Get Writer's Channel name
 
const uint64_t GetChannelId () const
 Get Writer's Channel id
 
bool IsInit () const
 Is Writer initialized?
 

额外继承的成员函数

- Protected 属性 继承自 apollo::cyber::WriterBase
proto::RoleAttributes role_attr_
 
std::mutex lock_
 
bool init_
 

详细描述

template<typename MessageT>
class apollo::cyber::Writer< MessageT >

在文件 writer.h42 行定义.

成员类型定义说明

◆ ChangeConnection

template<typename MessageT >
using apollo::cyber::Writer< MessageT >::ChangeConnection = typename service_discovery::Manager::ChangeConnection

在文件 writer.h45 行定义.

◆ TransmitterPtr

template<typename MessageT >
using apollo::cyber::Writer< MessageT >::TransmitterPtr = std::shared_ptr<transport::Transmitter<MessageT> >

在文件 writer.h44 行定义.

构造及析构函数说明

◆ Writer()

template<typename MessageT >
apollo::cyber::Writer< MessageT >::Writer ( const proto::RoleAttributes role_attr)
explicit

Construct a new Writer object

参数
role_attrwe use RoleAttributes to identify a Writer

在文件 writer.h121 行定义.

122 : WriterBase(role_attr), transmitter_(nullptr), channel_manager_(nullptr) {}
WriterBase(const proto::RoleAttributes &role_attr)
Construct a new Writer Base object
Definition writer_base.h:44

◆ ~Writer()

template<typename MessageT >
apollo::cyber::Writer< MessageT >::~Writer ( )
virtual

在文件 writer.h125 行定义.

125 {
126 Shutdown();
127}
void Shutdown() override
Shutdown the Writer
Definition writer.h:152

成员函数说明

◆ AcquireMessage()

template<typename MessageT >
std::shared_ptr< MessageT > apollo::cyber::Writer< MessageT >::AcquireMessage ( )

Acquire message instance to send

在文件 writer.h241 行定义.

241 {
242 if (!WriterBase::IsInit()) {
243 AERROR << "Please Acquire message after init writer!";
244 auto m = std::make_shared<MessageT>();
245 return m;
246 }
247
248 std::shared_ptr<MessageT> m(nullptr);
249 if (transmitter_->AcquireMessage(m)) {
250 return m;
251 } else {
252 m = std::make_shared<MessageT>();
253 return m;
254 }
255}
bool IsInit() const
Is Writer initialized?
Definition writer_base.h:99
#define AERROR
Definition log.h:44

◆ GetReaders()

template<typename MessageT >
void apollo::cyber::Writer< MessageT >::GetReaders ( std::vector< proto::RoleAttributes > *  readers)
overridevirtual

Get all Readers that subscriber our writing channel

参数
readersvector result of RoleAttributes

重载 apollo::cyber::WriterBase .

在文件 writer.h228 行定义.

228 {
229 if (readers == nullptr) {
230 return;
231 }
232
233 if (!WriterBase::IsInit()) {
234 return;
235 }
236
237 channel_manager_->GetReadersOfChannel(role_attr_.channel_name(), readers);
238}
proto::RoleAttributes role_attr_

◆ HasReader()

template<typename MessageT >
bool apollo::cyber::Writer< MessageT >::HasReader ( )
overridevirtual

Is there any Reader that subscribes our Channel? You can publish message when this return true

返回
true if the channel has reader
false if the channel has no reader

重载 apollo::cyber::WriterBase .

在文件 writer.h222 行定义.

222 {
224 return channel_manager_->HasReader(role_attr_.channel_name());
225}
#define RETURN_VAL_IF(condition, val)
Definition log.h:114

◆ Init()

template<typename MessageT >
bool apollo::cyber::Writer< MessageT >::Init ( )
overridevirtual

Init the Writer

返回
true if init successfully
false if init failed

实现了 apollo::cyber::WriterBase.

在文件 writer.h130 行定义.

130 {
131 {
132 std::lock_guard<std::mutex> g(lock_);
133 if (init_) {
134 return true;
135 }
136 transmitter_ =
137 transport::Transport::Instance()->CreateTransmitter<MessageT>(
138 role_attr_);
139 if (transmitter_ == nullptr) {
140 return false;
141 }
142 init_ = true;
143 }
144 this->role_attr_.set_id(transmitter_->id().HashValue());
145 channel_manager_ =
146 service_discovery::TopologyManager::Instance()->channel_manager();
147 JoinTheTopology();
148 return true;
149}

◆ Shutdown()

template<typename MessageT >
void apollo::cyber::Writer< MessageT >::Shutdown ( )
overridevirtual

Shutdown the Writer

实现了 apollo::cyber::WriterBase.

在文件 writer.h152 行定义.

152 {
153 {
154 std::lock_guard<std::mutex> g(lock_);
155 if (!init_) {
156 return;
157 }
158 init_ = false;
159 }
160 LeaveTheTopology();
161 transmitter_ = nullptr;
162 channel_manager_ = nullptr;
163}

◆ Write() [1/2]

template<typename MessageT >
bool apollo::cyber::Writer< MessageT >::Write ( const MessageT &  msg)
virtual

Write a MessageT instance

参数
msgthe message we want to write
返回
true if write successfully
false if write failed

apollo::cyber::blocker::IntraWriter< MessageT > 重载.

在文件 writer.h166 行定义.

166 {
168 auto msg_ptr = std::make_shared<MessageT>(msg);
169 return Write(msg_ptr);
170}
virtual bool Write(const MessageT &msg)
Write a MessageT instance
Definition writer.h:166

◆ Write() [2/2]

template<typename MessageT >
bool apollo::cyber::Writer< MessageT >::Write ( const std::shared_ptr< MessageT > &  msg_ptr)
virtual

Write a shared ptr of MessageT

参数
msg_ptrthe message shared ptr we want to write
返回
true if write successfully
false if write failed

apollo::cyber::blocker::IntraWriter< MessageT > 重载.

在文件 writer.h173 行定义.

173 {
175 return transmitter_->Transmit(msg_ptr);
176}

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