Skip to content

Commit a9b7bf3

Browse files
committed
[feat] optimize GParam, remove level info in register element
1 parent 05aaa4d commit a9b7bf3

24 files changed

Lines changed: 135 additions & 92 deletions

File tree

CMakeLists.txt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@ file(GLOB_RECURSE CGRAPH_SRC_LIST "./src/*.cpp")
2323
# 如果开启此宏定义,则CGraph执行过程中,不会在控制台打印任何信息
2424
# add_definitions(-D_CGRAPH_SILENCE_)
2525

26-
# 编译libCGraph动态库
27-
# add_library(CGraphShared SHARED ${CGRAPH_SRC_LIST})
28-
add_library(CGraphObject OBJECT ${CGRAPH_SRC_LIST})
26+
# 以下三选一,本地编译执行,推荐OBJECT方式
27+
add_library(CGraph OBJECT ${CGRAPH_SRC_LIST}) # 通过代码编译
28+
# add_library(CGraph SHARED ${CGRAPH_SRC_LIST}) # 编译libCGraph动态库
29+
# add_library(CGraph STATIC ${CGRAPH_SRC_LIST}) # 编译libCGraph静态库
2930

3031
set(CGRAPH_TUTORIAL_LIST
3132
T00-HelloCGraph
@@ -57,5 +58,5 @@ set(CGRAPH_TUTORIAL_LIST
5758
)
5859

5960
foreach(tut ${CGRAPH_TUTORIAL_LIST})
60-
add_executable(${tut} tutorial/${tut}.cpp $<TARGET_OBJECTS:CGraphObject>)
61+
add_executable(${tut} tutorial/${tut}.cpp $<TARGET_OBJECTS:CGraph>)
6162
endforeach()

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,10 @@ int main() {
104104
GElementPtr a, b, c, d = nullptr;
105105
106106
/* 注册节点,其中MyNode1和MyNode2必须为GNode的子类,否则无法通过编译 */
107-
CStatus status = pipeline->registerGElement<MyNode1>(&a, {}, "nodeA"); // 将名为nodeA,无执行依赖的node信息,注册入pipeline中
108-
status += pipeline->registerGElement<MyNode2>(&b, {a}, "nodeB"); // 将名为nodeB,依赖a执行的node信息,注册入pipeline中
107+
CStatus status = pipeline->registerGElement<MyNode1>(&a, {}, "nodeA");
108+
status += pipeline->registerGElement<MyNode2>(&b, {a}, "nodeB");
109109
status += pipeline->registerGElement<MyNode1>(&c, {a}, "nodeC");
110-
status += pipeline->registerGElement<MyNode2>(&d, {b, c}, "nodeD"); // 将名为nodeD,依赖{b,c}执行的node信息,注册入pipeline中
110+
status += pipeline->registerGElement<MyNode2>(&d, {b, c}, "nodeD");
111111
if (!status.isOK()) {
112112
return; // 对以上所有CGraph接口的返回值做判定
113113
}

src/CBasic/CStrDefine.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,10 @@
1414
CGRAPH_NAMESPACE_BEGIN
1515

1616
static const char* CGRAPH_EMPTY = "";
17-
static const char* CGRAPH_BASIC_EXCEPTION = "CGraph Exception";
18-
static const char* CGRAPH_FUNCTION_NO_SUPPORT = "function no support";
17+
static const char* CGRAPH_DEFAULT = "default";
18+
static const char* CGRAPH_UNKNOWN = "unknown";
19+
static const char* CGRAPH_BASIC_EXCEPTION = "CGraph default exception";
20+
static const char* CGRAPH_FUNCTION_NO_SUPPORT = "CGraph function no support";
1921

2022
CGRAPH_NAMESPACE_END
2123

src/GraphCtrl/GraphAspect/GAspectObject.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717

1818
CGRAPH_NAMESPACE_BEGIN
1919

20-
class GAspectObject : public GraphObject, public CDescInfo {
20+
class GAspectObject : public GraphObject,
21+
public CDescInfo {
2122
public:
2223
explicit GAspectObject() {
2324
session_ = URandom<>::generateSession("aspect");
@@ -52,6 +53,8 @@ class GAspectObject : public GraphObject, public CDescInfo {
5253
CGRAPH_NO_SUPPORT
5354
}
5455

56+
CGRAPH_NO_ALLOWED_COPY(GAspectObject)
57+
5558
CGRAPH_DECLARE_GPARAM_MANAGER_WRAPPER
5659

5760
private:

src/GraphCtrl/GraphDaemon/GDaemonObject.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
CGRAPH_NAMESPACE_BEGIN
1616

17-
class GDaemonObject : public GraphObject, public CDescInfo {
17+
class GDaemonObject : public GraphObject,
18+
public CDescInfo {
1819
protected:
1920
explicit GDaemonObject() {
2021
session_ = URandom<>::generateSession("daemon");
@@ -58,6 +59,8 @@ class GDaemonObject : public GraphObject, public CDescInfo {
5859
CGRAPH_NO_SUPPORT
5960
}
6061

62+
CGRAPH_NO_ALLOWED_COPY(GDaemonObject)
63+
6164
friend class GDaemon;
6265
friend class GDaemonManager;
6366
friend class GPipeline;

src/GraphCtrl/GraphElement/GAdapter/GFunction/GFunction.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class GFunction : public GAdapter {
3939
protected:
4040
explicit GFunction() {
4141
this->element_type_ = GElementType::FUNCTION;
42+
session_ = URandom<>::generateSession(CGRAPH_STR_FUNCTION);
4243
};
4344

4445
CStatus init() override {

src/GraphCtrl/GraphElement/GAdapter/GSingleton/GSingleton.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ template<typename T>
1919
class GSingleton : public GAdapter {
2020
protected:
2121
explicit GSingleton() {
22-
this->element_type_ = GElementType::SINGLETON;
22+
this->element_type_ = GElementType::SINGLETON;\
23+
session_ = URandom<>::generateSession(CGRAPH_STR_SINGLETON);
2324
}
2425

2526
CStatus init() override;
@@ -31,15 +32,13 @@ class GSingleton : public GAdapter {
3132
* @param dependElements
3233
* @param name
3334
* @param loop
34-
* @param level
3535
* @param paramManager
3636
* @param eventManager
3737
* @return
3838
*/
3939
CStatus setElementInfo(const std::set<GElementPtr> &dependElements,
4040
const std::string &name,
4141
CSize loop,
42-
CLevel level,
4342
GParamManagerPtr paramManager,
4443
GEventManagerPtr eventManager) override;
4544

src/GraphCtrl/GraphElement/GAdapter/GSingleton/GSingleton.inl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ template <typename T>
6969
CStatus GSingleton<T>::setElementInfo(const std::set<GElementPtr> &dependElements,
7070
const std::string &name,
7171
CSize loop,
72-
CLevel level,
7372
GParamManagerPtr paramManager,
7473
GEventManagerPtr eventManager) {
7574
CGRAPH_FUNCTION_BEGIN
@@ -78,7 +77,7 @@ CStatus GSingleton<T>::setElementInfo(const std::set<GElementPtr> &dependElement
7877
CGRAPH_ASSERT_NOT_NULL(eventManager)
7978

8079
// 这里,内部和外部均需要设定name信息
81-
this->setName(name)->setLoop(loop)->setLevel(level);
80+
this->setName(name)->setLoop(loop);
8281
status = this->addDependGElements(dependElements);
8382
CGRAPH_FUNCTION_CHECK_STATUS
8483

src/GraphCtrl/GraphElement/GElement.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ CGRAPH_NAMESPACE_BEGIN
1212

1313
GElement::GElement() {
1414
element_type_ = GElementType::ELEMENT;
15-
session_ = URandom<>::generateSession("element");
1615
}
1716

1817

@@ -108,13 +107,12 @@ CStatus GElement::addDependGElements(const GElementPtrSet& elements) {
108107
CStatus GElement::setElementInfo(const GElementPtrSet& dependElements,
109108
const std::string& name,
110109
CSize loop,
111-
CLevel level,
112110
GParamManagerPtr paramManager,
113111
GEventManagerPtr eventManager) {
114112
CGRAPH_FUNCTION_BEGIN
115113
CGRAPH_ASSERT_INIT(false)
116114

117-
this->setName(name)->setLoop(loop)->setLevel(level);
115+
this->setName(name)->setLoop(loop);
118116
param_manager_ = paramManager;
119117
event_manager_ = eventManager;
120118
status = this->addDependGElements(dependElements);

src/GraphCtrl/GraphElement/GElement.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020

2121
CGRAPH_NAMESPACE_BEGIN
2222

23-
class GElement : public GElementObject, public CDescInfo {
23+
class GElement : public GElementObject,
24+
public CDescInfo {
2425
public:
2526
/**
2627
* 实现添加切面的逻辑
@@ -156,15 +157,13 @@ class GElement : public GElementObject, public CDescInfo {
156157
* @param dependElements
157158
* @param name
158159
* @param loop
159-
* @param level
160160
* @param paramManager
161161
* @paarm eventManager
162162
* @return
163163
*/
164164
virtual CStatus setElementInfo(const std::set<GElement *> &dependElements,
165165
const std::string &name,
166166
CSize loop,
167-
CLevel level,
168167
GParamManagerPtr paramManager,
169168
GEventManagerPtr eventManager);
170169

@@ -244,11 +243,11 @@ class GElement : public GElementObject, public CDescInfo {
244243
protected:
245244
CBool done_ { false }; // 判定被执行结束
246245
CBool linkable_ { false }; // 判定是否可以连通计算
247-
CSize loop_ { 1 }; // 元素执行次数
248-
CLevel level_ { 0 }; // 用于设定init的执行顺序(值小的,优先init,可以为负数)
246+
CSize loop_ { CGRAPH_DEFAULT_LOOP_TIMES }; // 元素执行次数
247+
CLevel level_ { CGRAPH_DEFAULT_ELEMENT_LEVEL }; // 用于设定init的执行顺序(值小的,优先init,可以为负数)
249248
std::set<GElement *> run_before_; // 被依赖的节点
250249
std::set<GElement *> dependence_; // 依赖的节点信息
251-
std::atomic<CSize> left_depend_ { 0 }; // 当 left_depend_ 值为0的时候,即可以执行该element信息
250+
std::atomic<CSize> left_depend_ { 0 }; // 当 left_depend_ 值为0的时候,即可以执行该element信息
252251
GParamManagerPtr param_manager_ { nullptr }; // 整体流程的参数管理类,所有pipeline中的所有element共享
253252
GAspectManagerPtr aspect_manager_ { nullptr }; // 整体流程的切面管理类
254253
GEventManagerPtr event_manager_ { nullptr }; // 事件管理类

0 commit comments

Comments
 (0)