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

#include <intra_reader.h>

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

Public 类型

using MessagePtr = std::shared_ptr< MessageT >
 
using Callback = std::function< void(const std::shared_ptr< MessageT > &)>
 
using Iterator = typename std::list< std::shared_ptr< MessageT > >::const_iterator
 
- Public 类型 继承自 apollo::cyber::Reader< MessageT >
using BlockerPtr = std::unique_ptr< blocker::Blocker< MessageT > >
 
using ReceiverPtr = std::shared_ptr< transport::Receiver< MessageT > >
 
using ChangeConnection = typename service_discovery::Manager::ChangeConnection
 
using Iterator = typename std::list< std::shared_ptr< MessageT > >::const_iterator
 

Public 成员函数

 IntraReader (const proto::RoleAttributes &attr, const Callback &callback)
 
virtual ~IntraReader ()
 
bool Init () override
 Init the Reader object
 
void Shutdown () override
 Shutdown the Reader object
 
void ClearData () override
 Clear local data
 
void Observe () override
 Get stored data
 
bool Empty () const override
 Query whether the Reader has data to be handled
 
bool HasReceived () const override
 Query whether we have received data since last clear
 
void Enqueue (const std::shared_ptr< MessageT > &msg) override
 Push msg to Blocker's PublishQueue
 
void SetHistoryDepth (const uint32_t &depth) override
 Set Blocker's PublishQueue's capacity to depth
 
uint32_t GetHistoryDepth () const override
 Get Blocker's PublishQueue's capacity
 
std::shared_ptr< MessageT > GetLatestObserved () const override
 Get the latest message we Observe
 
std::shared_ptr< MessageT > GetOldestObserved () const override
 Get the oldest message we Observe
 
Iterator Begin () const override
 Get the begin iterator of ObserveQueue, used to traverse
 
Iterator End () const override
 Get the end iterator of ObserveQueue, used to traverse
 
- Public 成员函数 继承自 apollo::cyber::Reader< MessageT >
 Reader (const proto::RoleAttributes &role_attr, const CallbackFunc< MessageT > &reader_func=nullptr, uint32_t pending_queue_size=DEFAULT_PENDING_QUEUE_SIZE)
 Constructor a Reader object.
 
virtual ~Reader ()
 
bool Init () override
 Init Reader
 
void Shutdown () override
 Shutdown Reader
 
void Observe () override
 Get All data that Blocker stores
 
void ClearData () override
 Clear Blocker's data
 
bool HasReceived () const override
 Query whether we have received data since last clear
 
bool Empty () const override
 Query whether the Reader has data to be handled
 
double GetDelaySec () const override
 Get time interval of since last receive message
 
uint32_t PendingQueueSize () const override
 Get pending_queue_size configuration
 
bool HasWriter () override
 Is there is at least one writer publish the channel that we subscribes?
 
void GetWriters (std::vector< proto::RoleAttributes > *writers) override
 Get all writers pushlish the channel we subscribes
 
- Public 成员函数 继承自 apollo::cyber::ReaderBase
 ReaderBase (const proto::RoleAttributes &role_attr)
 
virtual ~ReaderBase ()
 
const std::string & GetChannelName () const
 Get Reader's Channel name
 
uint64_t ChannelId () const
 Get Reader's Channel id
 
const proto::QosProfileQosProfile () const
 Get qos profile.
 
bool IsInit () const
 Query whether the Reader is initialized
 

额外继承的成员函数

- Protected 属性 继承自 apollo::cyber::Reader< MessageT >
double latest_recv_time_sec_ = -1.0
 
double second_to_lastest_recv_time_sec_ = -1.0
 
uint32_t pending_queue_size_
 
- Protected 属性 继承自 apollo::cyber::ReaderBase
proto::RoleAttributes role_attr_
 
std::atomic< bool > init_
 

详细描述

template<typename MessageT>
class apollo::cyber::blocker::IntraReader< MessageT >

在文件 intra_reader.h34 行定义.

成员类型定义说明

◆ Callback

template<typename MessageT >
using apollo::cyber::blocker::IntraReader< MessageT >::Callback = std::function<void(const std::shared_ptr<MessageT>&)>

在文件 intra_reader.h37 行定义.

◆ Iterator

template<typename MessageT >
using apollo::cyber::blocker::IntraReader< MessageT >::Iterator = typename std::list<std::shared_ptr<MessageT> >::const_iterator

在文件 intra_reader.h38 行定义.

◆ MessagePtr

template<typename MessageT >
using apollo::cyber::blocker::IntraReader< MessageT >::MessagePtr = std::shared_ptr<MessageT>

在文件 intra_reader.h36 行定义.

构造及析构函数说明

◆ IntraReader()

template<typename MessageT >
apollo::cyber::blocker::IntraReader< MessageT >::IntraReader ( const proto::RoleAttributes attr,
const Callback callback 
)

在文件 intra_reader.h67 行定义.

69 : Reader<MessageT>(attr), msg_callback_(callback) {}

◆ ~IntraReader()

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

在文件 intra_reader.h72 行定义.

72 {
73 Shutdown();
74}
void Shutdown() override
Shutdown the Reader object

成员函数说明

◆ Begin()

template<typename MessageT >
auto apollo::cyber::blocker::IntraReader< MessageT >::Begin ( ) const
overridevirtual

Get the begin iterator of ObserveQueue, used to traverse

返回
Iterator begin iterator

重载 apollo::cyber::Reader< MessageT > .

在文件 intra_reader.h182 行定义.

182 {
183 auto blocker = BlockerManager::Instance()->GetBlocker<MessageT>(
184 this->role_attr_.channel_name());
185 ACHECK(blocker != nullptr);
186 return blocker->ObservedBegin();
187}
proto::RoleAttributes role_attr_
static const std::shared_ptr< BlockerManager > & Instance()
#define ACHECK(cond)
Definition log.h:80

◆ ClearData()

template<typename MessageT >
void apollo::cyber::blocker::IntraReader< MessageT >::ClearData ( )
overridevirtual

Clear local data

实现了 apollo::cyber::ReaderBase.

在文件 intra_reader.h98 行定义.

98 {
99 auto blocker = BlockerManager::Instance()->GetBlocker<MessageT>(
100 this->role_attr_.channel_name());
101 if (blocker != nullptr) {
102 blocker->ClearObserved();
103 blocker->ClearPublished();
104 }
105}

◆ Empty()

template<typename MessageT >
bool apollo::cyber::blocker::IntraReader< MessageT >::Empty ( ) const
overridevirtual

Query whether the Reader has data to be handled

返回
true if data container is empty
false if data container has data

实现了 apollo::cyber::ReaderBase.

在文件 intra_reader.h117 行定义.

117 {
118 auto blocker = BlockerManager::Instance()->GetBlocker<MessageT>(
119 this->role_attr_.channel_name());
120 if (blocker != nullptr) {
121 return blocker->IsObservedEmpty();
122 }
123 return true;
124}

◆ End()

template<typename MessageT >
auto apollo::cyber::blocker::IntraReader< MessageT >::End ( ) const
overridevirtual

Get the end iterator of ObserveQueue, used to traverse

返回
Iterator begin iterator

重载 apollo::cyber::Reader< MessageT > .

在文件 intra_reader.h190 行定义.

190 {
191 auto blocker = BlockerManager::Instance()->GetBlocker<MessageT>(
192 this->role_attr_.channel_name());
193 ACHECK(blocker != nullptr);
194 return blocker->ObservedEnd();
195}

◆ Enqueue()

template<typename MessageT >
void apollo::cyber::blocker::IntraReader< MessageT >::Enqueue ( const std::shared_ptr< MessageT > &  msg)
overridevirtual

Push msg to Blocker's PublishQueue

参数
msgmessage ptr to be pushed

重载 apollo::cyber::Reader< MessageT > .

在文件 intra_reader.h137 行定义.

137 {
138 BlockerManager::Instance()->Publish<MessageT>(this->role_attr_.channel_name(),
139 msg);
140}

◆ GetHistoryDepth()

template<typename MessageT >
uint32_t apollo::cyber::blocker::IntraReader< MessageT >::GetHistoryDepth ( ) const
overridevirtual

Get Blocker's PublishQueue's capacity

返回
uint32_t depth of the history

重载 apollo::cyber::Reader< MessageT > .

在文件 intra_reader.h152 行定义.

152 {
153 auto blocker = BlockerManager::Instance()->GetBlocker<MessageT>(
154 this->role_attr_.channel_name());
155 if (blocker != nullptr) {
156 return static_cast<uint32_t>(blocker->capacity());
157 }
158 return 0;
159}

◆ GetLatestObserved()

template<typename MessageT >
std::shared_ptr< MessageT > apollo::cyber::blocker::IntraReader< MessageT >::GetLatestObserved ( ) const
overridevirtual

Get the latest message we Observe

返回
std::shared_ptr<MessageT> the latest message

重载 apollo::cyber::Reader< MessageT > .

在文件 intra_reader.h162 行定义.

162 {
163 auto blocker = BlockerManager::Instance()->GetBlocker<MessageT>(
164 this->role_attr_.channel_name());
165 if (blocker != nullptr) {
166 return blocker->GetLatestObservedPtr();
167 }
168 return nullptr;
169}

◆ GetOldestObserved()

template<typename MessageT >
std::shared_ptr< MessageT > apollo::cyber::blocker::IntraReader< MessageT >::GetOldestObserved ( ) const
overridevirtual

Get the oldest message we Observe

返回
std::shared_ptr<MessageT> the oldest message

重载 apollo::cyber::Reader< MessageT > .

在文件 intra_reader.h172 行定义.

172 {
173 auto blocker = BlockerManager::Instance()->GetBlocker<MessageT>(
174 this->role_attr_.channel_name());
175 if (blocker != nullptr) {
176 return blocker->GetOldestObservedPtr();
177 }
178 return nullptr;
179}

◆ HasReceived()

template<typename MessageT >
bool apollo::cyber::blocker::IntraReader< MessageT >::HasReceived ( ) const
overridevirtual

Query whether we have received data since last clear

返回
true if the reader has received data
false if the reader has not received data

实现了 apollo::cyber::ReaderBase.

在文件 intra_reader.h127 行定义.

127 {
128 auto blocker = BlockerManager::Instance()->GetBlocker<MessageT>(
129 this->role_attr_.channel_name());
130 if (blocker != nullptr) {
131 return !blocker->IsPublishedEmpty();
132 }
133 return false;
134}

◆ Init()

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

Init the Reader object

返回
true if init successfully
false if init failed

实现了 apollo::cyber::ReaderBase.

在文件 intra_reader.h77 行定义.

77 {
78 if (this->init_.exchange(true)) {
79 return true;
80 }
81 return BlockerManager::Instance()->Subscribe<MessageT>(
83 this->role_attr_.node_name(),
84 std::bind(&IntraReader<MessageT>::OnMessage, this,
85 std::placeholders::_1));
86}
std::atomic< bool > init_

◆ Observe()

template<typename MessageT >
void apollo::cyber::blocker::IntraReader< MessageT >::Observe ( )
overridevirtual

Get stored data

实现了 apollo::cyber::ReaderBase.

在文件 intra_reader.h108 行定义.

108 {
109 auto blocker = BlockerManager::Instance()->GetBlocker<MessageT>(
110 this->role_attr_.channel_name());
111 if (blocker != nullptr) {
112 blocker->Observe();
113 }
114}

◆ SetHistoryDepth()

template<typename MessageT >
void apollo::cyber::blocker::IntraReader< MessageT >::SetHistoryDepth ( const uint32_t &  depth)
overridevirtual

Set Blocker's PublishQueue's capacity to depth

参数
depththe value you want to set

重载 apollo::cyber::Reader< MessageT > .

在文件 intra_reader.h143 行定义.

143 {
144 auto blocker = BlockerManager::Instance()->GetBlocker<MessageT>(
145 this->role_attr_.channel_name());
146 if (blocker != nullptr) {
147 blocker->set_capacity(depth);
148 }
149}

◆ Shutdown()

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

Shutdown the Reader object

实现了 apollo::cyber::ReaderBase.

在文件 intra_reader.h89 行定义.

89 {
90 if (!this->init_.exchange(false)) {
91 return;
92 }
93 BlockerManager::Instance()->Unsubscribe<MessageT>(
95}

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