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

#include <single_value_warehouse.h>

类 apollo::cyber::service_discovery::SingleValueWarehouse 继承关系图:
apollo::cyber::service_discovery::SingleValueWarehouse 的协作图:

Public 类型

using RoleMap = std::unordered_map< uint64_t, RolePtr >
 

Public 成员函数

 SingleValueWarehouse ()
 
virtual ~SingleValueWarehouse ()
 
bool Add (uint64_t key, const RolePtr &role, bool ignore_if_exist=true) override
 
void Clear () override
 
std::size_t Size () override
 
void Remove (uint64_t key) override
 
void Remove (uint64_t key, const RolePtr &role) override
 
void Remove (const proto::RoleAttributes &target_attr) override
 
bool Search (uint64_t key) override
 
bool Search (uint64_t key, RolePtr *first_matched_role) override
 
bool Search (uint64_t key, proto::RoleAttributes *first_matched_role_attr) override
 
bool Search (uint64_t key, std::vector< RolePtr > *matched_roles) override
 
bool Search (uint64_t key, std::vector< proto::RoleAttributes > *matched_roles_attr) override
 
bool Search (const proto::RoleAttributes &target_attr) override
 
bool Search (const proto::RoleAttributes &target_attr, RolePtr *first_matched) override
 
bool Search (const proto::RoleAttributes &target_attr, proto::RoleAttributes *first_matched_role_attr) override
 
bool Search (const proto::RoleAttributes &target_attr, std::vector< RolePtr > *matched_roles) override
 
bool Search (const proto::RoleAttributes &target_attr, std::vector< proto::RoleAttributes > *matched_roles_attr) override
 
void GetAllRoles (std::vector< RolePtr > *roles) override
 
void GetAllRoles (std::vector< proto::RoleAttributes > *roles_attr) override
 
- Public 成员函数 继承自 apollo::cyber::service_discovery::WarehouseBase
 WarehouseBase ()
 
virtual ~WarehouseBase ()
 

详细描述

在文件 single_value_warehouse.h31 行定义.

成员类型定义说明

◆ RoleMap

在文件 single_value_warehouse.h33 行定义.

构造及析构函数说明

◆ SingleValueWarehouse()

apollo::cyber::service_discovery::SingleValueWarehouse::SingleValueWarehouse ( )
inline

在文件 single_value_warehouse.h35 行定义.

35{}

◆ ~SingleValueWarehouse()

virtual apollo::cyber::service_discovery::SingleValueWarehouse::~SingleValueWarehouse ( )
inlinevirtual

在文件 single_value_warehouse.h36 行定义.

36{}

成员函数说明

◆ Add()

bool apollo::cyber::service_discovery::SingleValueWarehouse::Add ( uint64_t  key,
const RolePtr role,
bool  ignore_if_exist = true 
)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc30 行定义.

31 {
32 WriteLockGuard<AtomicRWLock> lock(rw_lock_);
33 if (!ignore_if_exist) {
34 if (roles_.find(key) != roles_.end()) {
35 return false;
36 }
37 }
38 roles_[key] = role;
39 return true;
40}

◆ Clear()

void apollo::cyber::service_discovery::SingleValueWarehouse::Clear ( )
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc42 行定义.

42 {
43 WriteLockGuard<AtomicRWLock> lock(rw_lock_);
44 roles_.clear();
45}

◆ GetAllRoles() [1/2]

void apollo::cyber::service_discovery::SingleValueWarehouse::GetAllRoles ( std::vector< proto::RoleAttributes > *  roles_attr)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc196 行定义.

197 {
198 RETURN_IF_NULL(roles_attr);
199 ReadLockGuard<AtomicRWLock> lock(rw_lock_);
200 for (auto& item : roles_) {
201 roles_attr->emplace_back(item.second->attributes());
202 }
203}
#define RETURN_IF_NULL(ptr)
Definition log.h:90

◆ GetAllRoles() [2/2]

void apollo::cyber::service_discovery::SingleValueWarehouse::GetAllRoles ( std::vector< RolePtr > *  roles)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc188 行定义.

188 {
189 RETURN_IF_NULL(roles);
190 ReadLockGuard<AtomicRWLock> lock(rw_lock_);
191 for (auto& item : roles_) {
192 roles->emplace_back(item.second);
193 }
194}

◆ Remove() [1/3]

void apollo::cyber::service_discovery::SingleValueWarehouse::Remove ( const proto::RoleAttributes target_attr)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc69 行定义.

69 {
70 WriteLockGuard<AtomicRWLock> lock(rw_lock_);
71 for (auto it = roles_.begin(); it != roles_.end();) {
72 auto curr_role = it->second;
73 if (curr_role->Match(target_attr)) {
74 it = roles_.erase(it);
75 } else {
76 ++it;
77 }
78 }
79}

◆ Remove() [2/3]

void apollo::cyber::service_discovery::SingleValueWarehouse::Remove ( uint64_t  key)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc52 行定义.

52 {
53 WriteLockGuard<AtomicRWLock> lock(rw_lock_);
54 roles_.erase(key);
55}

◆ Remove() [3/3]

void apollo::cyber::service_discovery::SingleValueWarehouse::Remove ( uint64_t  key,
const RolePtr role 
)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc57 行定义.

57 {
58 WriteLockGuard<AtomicRWLock> lock(rw_lock_);
59 auto search = roles_.find(key);
60 if (search == roles_.end()) {
61 return;
62 }
63 if (!search->second->Match(role->attributes())) {
64 return;
65 }
66 roles_.erase(search);
67}

◆ Search() [1/10]

bool apollo::cyber::service_discovery::SingleValueWarehouse::Search ( const proto::RoleAttributes target_attr)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc130 行定义.

130 {
131 RolePtr role;
132 return Search(target_attr, &role);
133}
std::shared_ptr< RoleBase > RolePtr
Definition role.h:31

◆ Search() [2/10]

bool apollo::cyber::service_discovery::SingleValueWarehouse::Search ( const proto::RoleAttributes target_attr,
proto::RoleAttributes first_matched_role_attr 
)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc148 行定义.

149 {
150 RETURN_VAL_IF_NULL(first_matched_role_attr, false);
151 RolePtr role;
152 if (!Search(target_attr, &role)) {
153 return false;
154 }
155 first_matched_role_attr->CopyFrom(role->attributes());
156 return true;
157}
#define RETURN_VAL_IF_NULL(ptr, val)
Definition log.h:98

◆ Search() [3/10]

bool apollo::cyber::service_discovery::SingleValueWarehouse::Search ( const proto::RoleAttributes target_attr,
RolePtr first_matched 
)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc135 行定义.

136 {
137 RETURN_VAL_IF_NULL(first_matched_role, false);
138 ReadLockGuard<AtomicRWLock> lock(rw_lock_);
139 for (auto& item : roles_) {
140 if (item.second->Match(target_attr)) {
141 *first_matched_role = item.second;
142 return true;
143 }
144 }
145 return false;
146}

◆ Search() [4/10]

bool apollo::cyber::service_discovery::SingleValueWarehouse::Search ( const proto::RoleAttributes target_attr,
std::vector< proto::RoleAttributes > *  matched_roles_attr 
)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc173 行定义.

175 {
176 RETURN_VAL_IF_NULL(matched_roles_attr, false);
177 bool find = false;
178 ReadLockGuard<AtomicRWLock> lock(rw_lock_);
179 for (auto& item : roles_) {
180 if (item.second->Match(target_attr)) {
181 matched_roles_attr->emplace_back(item.second->attributes());
182 find = true;
183 }
184 }
185 return find;
186}

◆ Search() [5/10]

bool apollo::cyber::service_discovery::SingleValueWarehouse::Search ( const proto::RoleAttributes target_attr,
std::vector< RolePtr > *  matched_roles 
)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc159 行定义.

160 {
161 RETURN_VAL_IF_NULL(matched_roles, false);
162 bool find = false;
163 ReadLockGuard<AtomicRWLock> lock(rw_lock_);
164 for (auto& item : roles_) {
165 if (item.second->Match(target_attr)) {
166 matched_roles->emplace_back(item.second);
167 find = true;
168 }
169 }
170 return find;
171}

◆ Search() [6/10]

bool apollo::cyber::service_discovery::SingleValueWarehouse::Search ( uint64_t  key)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc81 行定义.

81 {
82 RolePtr role;
83 return Search(key, &role);
84}

◆ Search() [7/10]

bool apollo::cyber::service_discovery::SingleValueWarehouse::Search ( uint64_t  key,
proto::RoleAttributes first_matched_role_attr 
)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc97 行定义.

98 {
99 RETURN_VAL_IF_NULL(first_matched_role_attr, false);
100 RolePtr role;
101 if (!Search(key, &role)) {
102 return false;
103 }
104 first_matched_role_attr->CopyFrom(role->attributes());
105 return true;
106}

◆ Search() [8/10]

bool apollo::cyber::service_discovery::SingleValueWarehouse::Search ( uint64_t  key,
RolePtr first_matched_role 
)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc86 行定义.

86 {
87 RETURN_VAL_IF_NULL(first_matched_role, false);
88 ReadLockGuard<AtomicRWLock> lock(rw_lock_);
89 auto search = roles_.find(key);
90 if (search == roles_.end()) {
91 return false;
92 }
93 *first_matched_role = search->second;
94 return true;
95}

◆ Search() [9/10]

bool apollo::cyber::service_discovery::SingleValueWarehouse::Search ( uint64_t  key,
std::vector< proto::RoleAttributes > *  matched_roles_attr 
)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc119 行定义.

120 {
121 RETURN_VAL_IF_NULL(matched_roles_attr, false);
122 RolePtr role;
123 if (!Search(key, &role)) {
124 return false;
125 }
126 matched_roles_attr->emplace_back(role->attributes());
127 return true;
128}

◆ Search() [10/10]

bool apollo::cyber::service_discovery::SingleValueWarehouse::Search ( uint64_t  key,
std::vector< RolePtr > *  matched_roles 
)
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc108 行定义.

109 {
110 RETURN_VAL_IF_NULL(matched_roles, false);
111 RolePtr role;
112 if (!Search(key, &role)) {
113 return false;
114 }
115 matched_roles->emplace_back(role);
116 return true;
117}

◆ Size()

std::size_t apollo::cyber::service_discovery::SingleValueWarehouse::Size ( )
overridevirtual

实现了 apollo::cyber::service_discovery::WarehouseBase.

在文件 single_value_warehouse.cc47 行定义.

47 {
48 ReadLockGuard<AtomicRWLock> lock(rw_lock_);
49 return roles_.size();
50}

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