Apollo 10.0
自动驾驶开放平台
apollo::cyber::blocker::BlockerManager类 参考

#include <blocker_manager.h>

apollo::cyber::blocker::BlockerManager 的协作图:

Public 类型

using BlockerMap = std::unordered_map< std::string, std::shared_ptr< BlockerBase > >
 

Public 成员函数

virtual ~BlockerManager ()
 
template<typename T >
bool Publish (const std::string &channel_name, const typename Blocker< T >::MessagePtr &msg)
 
template<typename T >
bool Publish (const std::string &channel_name, const typename Blocker< T >::MessageType &msg)
 
template<typename T >
bool Subscribe (const std::string &channel_name, size_t capacity, const std::string &callback_id, const typename Blocker< T >::Callback &callback)
 
template<typename T >
bool Unsubscribe (const std::string &channel_name, const std::string &callback_id)
 
template<typename T >
std::shared_ptr< Blocker< T > > GetBlocker (const std::string &channel_name)
 
template<typename T >
std::shared_ptr< Blocker< T > > GetOrCreateBlocker (const BlockerAttr &attr)
 
void Observe ()
 
void Reset ()
 

静态 Public 成员函数

static const std::shared_ptr< BlockerManager > & Instance ()
 

详细描述

在文件 blocker_manager.h31 行定义.

成员类型定义说明

◆ BlockerMap

using apollo::cyber::blocker::BlockerManager::BlockerMap = std::unordered_map<std::string, std::shared_ptr<BlockerBase> >

在文件 blocker_manager.h33 行定义.

构造及析构函数说明

◆ ~BlockerManager()

apollo::cyber::blocker::BlockerManager::~BlockerManager ( )
virtual

在文件 blocker_manager.cc25 行定义.

25{ blockers_.clear(); }

成员函数说明

◆ GetBlocker()

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

在文件 blocker_manager.h123 行定义.

124 {
125 std::shared_ptr<Blocker<T>> blocker = nullptr;
126 {
127 std::lock_guard<std::mutex> lock(blocker_mutex_);
128 auto search = blockers_.find(channel_name);
129 if (search != blockers_.end()) {
130 blocker = std::dynamic_pointer_cast<Blocker<T>>(search->second);
131 }
132 }
133 return blocker;
134}

◆ GetOrCreateBlocker()

template<typename T >
std::shared_ptr< Blocker< T > > apollo::cyber::blocker::BlockerManager::GetOrCreateBlocker ( const BlockerAttr attr)

在文件 blocker_manager.h137 行定义.

138 {
139 std::shared_ptr<Blocker<T>> blocker = nullptr;
140 {
141 std::lock_guard<std::mutex> lock(blocker_mutex_);
142 auto search = blockers_.find(attr.channel_name);
143 if (search != blockers_.end()) {
144 blocker = std::dynamic_pointer_cast<Blocker<T>>(search->second);
145 } else {
146 blocker = std::make_shared<Blocker<T>>(attr);
147 blockers_[attr.channel_name] = blocker;
148 }
149 }
150 return blocker;
151}

◆ Instance()

static const std::shared_ptr< BlockerManager > & apollo::cyber::blocker::BlockerManager::Instance ( )
inlinestatic

在文件 blocker_manager.h38 行定义.

38 {
39 static auto instance =
40 std::shared_ptr<BlockerManager>(new BlockerManager());
41 return instance;
42 }

◆ Observe()

void apollo::cyber::blocker::BlockerManager::Observe ( )

在文件 blocker_manager.cc27 行定义.

27 {
28 std::lock_guard<std::mutex> lock(blocker_mutex_);
29 for (auto& item : blockers_) {
30 item.second->Observe();
31 }
32}

◆ Publish() [1/2]

template<typename T >
bool apollo::cyber::blocker::BlockerManager::Publish ( const std::string &  channel_name,
const typename Blocker< T >::MessagePtr &  msg 
)

在文件 blocker_manager.h80 行定义.

81 {
82 auto blocker = GetOrCreateBlocker<T>(BlockerAttr(channel_name));
83 if (blocker == nullptr) {
84 return false;
85 }
86 blocker->Publish(msg);
87 return true;
88}

◆ Publish() [2/2]

template<typename T >
bool apollo::cyber::blocker::BlockerManager::Publish ( const std::string &  channel_name,
const typename Blocker< T >::MessageType &  msg 
)

在文件 blocker_manager.h91 行定义.

92 {
93 auto blocker = GetOrCreateBlocker<T>(BlockerAttr(channel_name));
94 if (blocker == nullptr) {
95 return false;
96 }
97 blocker->Publish(msg);
98 return true;
99}

◆ Reset()

void apollo::cyber::blocker::BlockerManager::Reset ( )

在文件 blocker_manager.cc34 行定义.

34 {
35 std::lock_guard<std::mutex> lock(blocker_mutex_);
36 for (auto& item : blockers_) {
37 item.second->Reset();
38 }
39 blockers_.clear();
40}

◆ Subscribe()

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

在文件 blocker_manager.h102 行定义.

104 {
105 auto blocker = GetOrCreateBlocker<T>(BlockerAttr(capacity, channel_name));
106 if (blocker == nullptr) {
107 return false;
108 }
109 return blocker->Subscribe(callback_id, callback);
110}

◆ Unsubscribe()

template<typename T >
bool apollo::cyber::blocker::BlockerManager::Unsubscribe ( const std::string &  channel_name,
const std::string &  callback_id 
)

在文件 blocker_manager.h113 行定义.

114 {
115 auto blocker = GetBlocker<T>(channel_name);
116 if (blocker == nullptr) {
117 return false;
118 }
119 return blocker->Unsubscribe(callback_id);
120}

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