forked from ChunelFeng/CGraph
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGParamManager.cpp
More file actions
104 lines (80 loc) · 2.32 KB
/
GParamManager.cpp
File metadata and controls
104 lines (80 loc) · 2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/***************************
@Author: Chunel
@Contact: chunel@foxmail.com
@File: GParamManager.cpp
@Time: 2021/6/11 6:59 下午
@Desc:
***************************/
#include "GParamManager.h"
CGRAPH_NAMESPACE_BEGIN
GParamManager::GParamManager() {
clear();
}
GParamManager::~GParamManager() {
clear();
}
CStatus GParamManager::init() {
CGRAPH_FUNCTION_BEGIN
for (auto& param : params_map_) {
/**
* 一般情况下,是不需要init的。需要注意init 和 setup的执行阶段的信息
* init() 是在pipeline init的时候被执行的
* setup() 是在pipeline run开始的时候被执行的
*/
CGRAPH_ASSERT_NOT_NULL(param.second);
status += param.second->init();
}
CGRAPH_FUNCTION_END
}
CStatus GParamManager::destroy() {
CGRAPH_FUNCTION_BEGIN
for (auto& param : params_map_) {
CGRAPH_ASSERT_NOT_NULL(param.second);
status += param.second->destroy();
}
CGRAPH_FUNCTION_CHECK_STATUS
clear();
CGRAPH_FUNCTION_END
}
CStatus GParamManager::clear() {
CGRAPH_FUNCTION_BEGIN
CGRAPH_LOCK_GUARD lock(this->mutex_);
for (auto& param : params_map_) {
CGRAPH_DELETE_PTR(param.second)
}
params_map_.clear();
CGRAPH_FUNCTION_END;
}
CVoid GParamManager::resetWithStatus(const CStatus& curStatus) {
for (auto cur : params_map_) {
cur.second->reset(curStatus);
}
}
CStatus GParamManager::setup() {
CGRAPH_FUNCTION_BEGIN
for (auto cur : params_map_) {
// 这里不需要判断非空,因为在init的时候,已经判断过了
status += cur.second->setup();
}
CGRAPH_FUNCTION_END
}
CStatus GParamManager::removeByKey(const std::string& key) {
CGRAPH_FUNCTION_BEGIN
CGRAPH_LOCK_GUARD lock(this->mutex_); // 创建和销毁的时候,加锁
auto param = params_map_.find(key);
if (param == params_map_.end()) {
CGRAPH_RETURN_ERROR_STATUS("param [" + key + "] no find")
}
CGRAPH_DELETE_PTR(param->second)
params_map_.erase(param);
CGRAPH_FUNCTION_END
}
CStatus GParamManager::getKeys(std::vector<std::string>& keys) {
CGRAPH_FUNCTION_BEGIN
CGRAPH_LOCK_GUARD lock(this->mutex_);
for (const auto& iter : params_map_) {
keys.emplace_back(iter.first);
}
CGRAPH_FUNCTION_END
}
CGRAPH_NAMESPACE_END