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

#include <blocker.h>

类 apollo::cyber::blocker::Blocker< T > 继承关系图:
apollo::cyber::blocker::Blocker< T > 的协作图:

Public 类型

using MessageType = T
 
using MessagePtr = std::shared_ptr< T >
 
using MessageQueue = std::list< MessagePtr >
 
using Callback = std::function< void(const MessagePtr &)>
 
using CallbackMap = std::unordered_map< std::string, Callback >
 
using Iterator = typename std::list< std::shared_ptr< T > >::const_iterator
 

Public 成员函数

 Blocker (const BlockerAttr &attr)
 
virtual ~Blocker ()
 
void Publish (const MessageType &msg)
 
void Publish (const MessagePtr &msg)
 
void ClearObserved () override
 
void ClearPublished () override
 
void Observe () override
 
bool IsObservedEmpty () const override
 
bool IsPublishedEmpty () const override
 
bool Subscribe (const std::string &callback_id, const Callback &callback)
 
bool Unsubscribe (const std::string &callback_id) override
 
const MessageTypeGetLatestObserved () const
 
const MessagePtr GetLatestObservedPtr () const
 
const MessagePtr GetOldestObservedPtr () const
 
const MessagePtr GetLatestPublishedPtr () const
 
Iterator ObservedBegin () const
 
Iterator ObservedEnd () const
 
size_t capacity () const override
 
void set_capacity (size_t capacity) override
 
const std::string & channel_name () const override
 
- Public 成员函数 继承自 apollo::cyber::blocker::BlockerBase
virtual ~BlockerBase ()=default
 

友元

class BlockerManager
 

详细描述

template<typename T>
class apollo::cyber::blocker::Blocker< T >

在文件 blocker.h64 行定义.

成员类型定义说明

◆ Callback

template<typename T >
using apollo::cyber::blocker::Blocker< T >::Callback = std::function<void(const MessagePtr&)>

在文件 blocker.h71 行定义.

◆ CallbackMap

template<typename T >
using apollo::cyber::blocker::Blocker< T >::CallbackMap = std::unordered_map<std::string, Callback>

在文件 blocker.h72 行定义.

◆ Iterator

template<typename T >
using apollo::cyber::blocker::Blocker< T >::Iterator = typename std::list<std::shared_ptr<T> >::const_iterator

在文件 blocker.h73 行定义.

◆ MessagePtr

template<typename T >
using apollo::cyber::blocker::Blocker< T >::MessagePtr = std::shared_ptr<T>

在文件 blocker.h69 行定义.

◆ MessageQueue

template<typename T >
using apollo::cyber::blocker::Blocker< T >::MessageQueue = std::list<MessagePtr>

在文件 blocker.h70 行定义.

◆ MessageType

template<typename T >
using apollo::cyber::blocker::Blocker< T >::MessageType = T

在文件 blocker.h68 行定义.

构造及析构函数说明

◆ Blocker()

template<typename T >
apollo::cyber::blocker::Blocker< T >::Blocker ( const BlockerAttr attr)
explicit

在文件 blocker.h119 行定义.

119: attr_(attr), dummy_msg_() {}

◆ ~Blocker()

template<typename T >
apollo::cyber::blocker::Blocker< T >::~Blocker ( )
virtual

在文件 blocker.h122 行定义.

122 {
123 published_msg_queue_.clear();
124 observed_msg_queue_.clear();
125 published_callbacks_.clear();
126}

成员函数说明

◆ capacity()

template<typename T >
size_t apollo::cyber::blocker::Blocker< T >::capacity ( ) const
overridevirtual

实现了 apollo::cyber::blocker::BlockerBase.

在文件 blocker.h246 行定义.

246 {
247 return attr_.capacity;
248}

◆ channel_name()

template<typename T >
const std::string & apollo::cyber::blocker::Blocker< T >::channel_name ( ) const
overridevirtual

实现了 apollo::cyber::blocker::BlockerBase.

在文件 blocker.h260 行定义.

260 {
261 return attr_.channel_name;
262}

◆ ClearObserved()

template<typename T >
void apollo::cyber::blocker::Blocker< T >::ClearObserved ( )
overridevirtual

实现了 apollo::cyber::blocker::BlockerBase.

在文件 blocker.h153 行定义.

153 {
154 std::lock_guard<std::mutex> lock(msg_mutex_);
155 observed_msg_queue_.clear();
156}

◆ ClearPublished()

template<typename T >
void apollo::cyber::blocker::Blocker< T >::ClearPublished ( )
overridevirtual

实现了 apollo::cyber::blocker::BlockerBase.

在文件 blocker.h159 行定义.

159 {
160 std::lock_guard<std::mutex> lock(msg_mutex_);
161 published_msg_queue_.clear();
162}

◆ GetLatestObserved()

template<typename T >
auto apollo::cyber::blocker::Blocker< T >::GetLatestObserved ( ) const

在文件 blocker.h200 行定义.

200 {
201 std::lock_guard<std::mutex> lock(msg_mutex_);
202 if (observed_msg_queue_.empty()) {
203 return dummy_msg_;
204 }
205 return *observed_msg_queue_.front();
206}

◆ GetLatestObservedPtr()

template<typename T >
auto apollo::cyber::blocker::Blocker< T >::GetLatestObservedPtr ( ) const

在文件 blocker.h209 行定义.

209 {
210 std::lock_guard<std::mutex> lock(msg_mutex_);
211 if (observed_msg_queue_.empty()) {
212 return nullptr;
213 }
214 return observed_msg_queue_.front();
215}

◆ GetLatestPublishedPtr()

template<typename T >
auto apollo::cyber::blocker::Blocker< T >::GetLatestPublishedPtr ( ) const

在文件 blocker.h227 行定义.

227 {
228 std::lock_guard<std::mutex> lock(msg_mutex_);
229 if (published_msg_queue_.empty()) {
230 return nullptr;
231 }
232 return published_msg_queue_.front();
233}

◆ GetOldestObservedPtr()

template<typename T >
auto apollo::cyber::blocker::Blocker< T >::GetOldestObservedPtr ( ) const

在文件 blocker.h218 行定义.

218 {
219 std::lock_guard<std::mutex> lock(msg_mutex_);
220 if (observed_msg_queue_.empty()) {
221 return nullptr;
222 }
223 return observed_msg_queue_.back();
224}

◆ IsObservedEmpty()

template<typename T >
bool apollo::cyber::blocker::Blocker< T >::IsObservedEmpty ( ) const
overridevirtual

实现了 apollo::cyber::blocker::BlockerBase.

在文件 blocker.h171 行定义.

171 {
172 std::lock_guard<std::mutex> lock(msg_mutex_);
173 return observed_msg_queue_.empty();
174}

◆ IsPublishedEmpty()

template<typename T >
bool apollo::cyber::blocker::Blocker< T >::IsPublishedEmpty ( ) const
overridevirtual

实现了 apollo::cyber::blocker::BlockerBase.

在文件 blocker.h177 行定义.

177 {
178 std::lock_guard<std::mutex> lock(msg_mutex_);
179 return published_msg_queue_.empty();
180}

◆ Observe()

template<typename T >
void apollo::cyber::blocker::Blocker< T >::Observe ( )
overridevirtual

实现了 apollo::cyber::blocker::BlockerBase.

在文件 blocker.h165 行定义.

165 {
166 std::lock_guard<std::mutex> lock(msg_mutex_);
167 observed_msg_queue_ = published_msg_queue_;
168}

◆ ObservedBegin()

template<typename T >
auto apollo::cyber::blocker::Blocker< T >::ObservedBegin ( ) const

在文件 blocker.h236 行定义.

236 {
237 return observed_msg_queue_.begin();
238}

◆ ObservedEnd()

template<typename T >
auto apollo::cyber::blocker::Blocker< T >::ObservedEnd ( ) const

在文件 blocker.h241 行定义.

241 {
242 return observed_msg_queue_.end();
243}

◆ Publish() [1/2]

template<typename T >
void apollo::cyber::blocker::Blocker< T >::Publish ( const MessagePtr msg)

在文件 blocker.h134 行定义.

134 {
135 Enqueue(msg);
136 Notify(msg);
137}

◆ Publish() [2/2]

template<typename T >
void apollo::cyber::blocker::Blocker< T >::Publish ( const MessageType msg)

在文件 blocker.h129 行定义.

129 {
130 Publish(std::make_shared<MessageType>(msg));
131}
void Publish(const MessageType &msg)
Definition blocker.h:129

◆ set_capacity()

template<typename T >
void apollo::cyber::blocker::Blocker< T >::set_capacity ( size_t  capacity)
overridevirtual

实现了 apollo::cyber::blocker::BlockerBase.

在文件 blocker.h251 行定义.

251 {
252 std::lock_guard<std::mutex> lock(msg_mutex_);
253 attr_.capacity = capacity;
254 while (published_msg_queue_.size() > capacity) {
255 published_msg_queue_.pop_back();
256 }
257}
size_t capacity() const override
Definition blocker.h:246

◆ Subscribe()

template<typename T >
bool apollo::cyber::blocker::Blocker< T >::Subscribe ( const std::string &  callback_id,
const Callback callback 
)

在文件 blocker.h183 行定义.

184 {
185 std::lock_guard<std::mutex> lock(cb_mutex_);
186 if (published_callbacks_.find(callback_id) != published_callbacks_.end()) {
187 return false;
188 }
189 published_callbacks_[callback_id] = callback;
190 return true;
191}

◆ Unsubscribe()

template<typename T >
bool apollo::cyber::blocker::Blocker< T >::Unsubscribe ( const std::string &  callback_id)
overridevirtual

实现了 apollo::cyber::blocker::BlockerBase.

在文件 blocker.h194 行定义.

194 {
195 std::lock_guard<std::mutex> lock(cb_mutex_);
196 return published_callbacks_.erase(callback_id) != 0;
197}

友元及相关函数文档

◆ BlockerManager

template<typename T >
friend class BlockerManager
friend

在文件 blocker.h65 行定义.


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