Skip to content

Commit ccbe0e4

Browse files
committed
[feat] add stage feat
1 parent ad957a1 commit ccbe0e4

22 files changed

Lines changed: 405 additions & 17 deletions

File tree

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,10 @@ int main() {
348348
* 修复辅助线程异常等待问题
349349
* 更新`tutorial`内容
350350

351+
[2024.12.24 - v2.7.0 - Chunel]
352+
* 提供`stage`(阶段)功能,用于`element`之间同步运行
353+
* 更新`tutorial`内容
354+
351355
</details>
352356

353357
------------

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ class GSingleton : public GAdapter {
2626
const std::string &name, CSize loop) final;
2727

2828
CStatus addManagers(GParamManagerPtr paramManager,
29-
GEventManagerPtr eventManager) final;
29+
GEventManagerPtr eventManager,
30+
GStageManagerPtr stageManager) final;
3031

3132
CBool isHold() final;
3233

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,14 @@ CStatus GSingleton<T>::addElementInfo(const std::set<GElementPtr> &depends,
9494

9595
template <typename T>
9696
CStatus GSingleton<T>::addManagers(GParamManagerPtr paramManager,
97-
GEventManagerPtr eventManager) {
97+
GEventManagerPtr eventManager,
98+
GStageManagerPtr stageManager) {
9899
CGRAPH_FUNCTION_BEGIN
99100

100101
CGRAPH_ASSERT_INIT(false)
101-
CGRAPH_ASSERT_NOT_NULL(paramManager, eventManager)
102+
CGRAPH_ASSERT_NOT_NULL(paramManager, eventManager, stageManager)
102103
auto element = dynamic_cast<T *>(s_singleton_.get());
103-
status = element->addManagers(paramManager, eventManager);
104+
status = element->addManagers(paramManager, eventManager, stageManager);
104105

105106
CGRAPH_FUNCTION_END
106107
}

src/GraphCtrl/GraphElement/GElement.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,13 +190,16 @@ CStatus GElement::addElementInfo(const GElementPtrSet& depends,
190190
}
191191

192192

193-
CStatus GElement::addManagers(GParamManagerPtr paramManager, GEventManagerPtr eventManager) {
193+
CStatus GElement::addManagers(GParamManagerPtr paramManager,
194+
GEventManagerPtr eventManager,
195+
GStageManagerPtr stageManager) {
194196
CGRAPH_FUNCTION_BEGIN
195197
CGRAPH_ASSERT_INIT(false)
196-
CGRAPH_ASSERT_NOT_NULL(paramManager, eventManager)
198+
CGRAPH_ASSERT_NOT_NULL(paramManager, eventManager, stageManager)
197199

198200
this->setGParamManager(paramManager);
199201
this->setGEventManager(eventManager);
202+
this->setGStageManager(stageManager);
200203
if (aspect_manager_) {
201204
aspect_manager_->setGParamManager(paramManager);
202205
aspect_manager_->setGEventManager(eventManager);

src/GraphCtrl/GraphElement/GElement.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,10 +310,12 @@ class GElement : public GElementObject,
310310
* 设置manager信息
311311
* @param paramManager
312312
* @param eventManager
313+
* @param stageManager
313314
* @return
314315
*/
315316
virtual CStatus addManagers(GParamManagerPtr paramManager,
316-
GEventManagerPtr eventManager);
317+
GEventManagerPtr eventManager,
318+
GStageManagerPtr stageManager);
317319

318320
/**
319321
* 包含切面相关功能的函数,fat取自fatjar的意思
@@ -481,6 +483,7 @@ class GElement : public GElementObject,
481483

482484
CGRAPH_DECLARE_GPARAM_MANAGER_WRAPPER_WITH_MEMBER
483485
CGRAPH_DECLARE_GEVENT_MANAGER_WRAPPER_WITH_MEMBER
486+
CGRAPH_DECLARE_STAGE_MANAGER_WRAPPER_WITH_MEMBER
484487
};
485488

486489
using GElementRef = GElement &;

src/GraphCtrl/GraphElement/GElementObject.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "../GraphParam/GParamInclude.h"
1414
#include "../GraphAspect/GAspectInclude.h"
1515
#include "../GraphEvent/GEventInclude.h"
16+
#include "../GraphStage/GStageInclude.h"
1617

1718
CGRAPH_NAMESPACE_BEGIN
1819

src/GraphCtrl/GraphElement/GGroup/GGroup.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ CStatus GGroup::addElement(GElementPtr element) {
4848

4949
this->group_elements_arr_.emplace_back(element);
5050
element->belong_ = this;
51-
element->addManagers(param_manager_, event_manager_);
51+
element->addManagers(param_manager_, event_manager_, stage_manager_);
5252
CGRAPH_FUNCTION_END
5353
}
5454

@@ -92,16 +92,18 @@ CBool GGroup::isSerializable() const {
9292

9393

9494
CStatus GGroup::addManagers(GParamManagerPtr paramManager,
95-
GEventManagerPtr eventManager) {
95+
GEventManagerPtr eventManager,
96+
GStageManagerPtr stageManager) {
9697
CGRAPH_FUNCTION_BEGIN
9798
CGRAPH_ASSERT_NOT_NULL(paramManager, eventManager)
9899
CGRAPH_ASSERT_INIT(false)
99100

100101
this->setGParamManager(paramManager);
101102
this->setGEventManager(eventManager);
103+
this->setGStageManager(stageManager);
102104
for (GElementPtr element : group_elements_arr_) {
103105
CGRAPH_ASSERT_NOT_NULL(element)
104-
status += element->addManagers(paramManager, eventManager);
106+
status += element->addManagers(paramManager, eventManager, stageManager);
105107
}
106108

107109
CGRAPH_FUNCTION_END

src/GraphCtrl/GraphElement/GGroup/GGroup.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ class GGroup : public GElement {
3232
explicit GGroup();
3333

3434
CStatus addManagers(GParamManagerPtr paramManager,
35-
GEventManagerPtr eventManager) override;
35+
GEventManagerPtr eventManager,
36+
GStageManagerPtr stageManager) override;
3637

3738
CStatus init() override;
3839

src/GraphCtrl/GraphElement/GGroup/GRegion/GRegion.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,18 @@ CBool GRegion::isSerializable() const {
106106

107107

108108
CStatus GRegion::addManagers(GParamManagerPtr paramManager,
109-
GEventManagerPtr eventManager) {
109+
GEventManagerPtr eventManager,
110+
GStageManagerPtr stageManager) {
110111
CGRAPH_FUNCTION_BEGIN
111112
CGRAPH_ASSERT_INIT(false)
112-
CGRAPH_ASSERT_NOT_NULL(paramManager, eventManager)
113+
CGRAPH_ASSERT_NOT_NULL(paramManager, eventManager, stageManager)
113114

114115
this->setGParamManager(paramManager);
115116
this->setGEventManager(eventManager);
117+
this->setGStageManager(stageManager);
116118
for (auto* cur : manager_->manager_elements_) {
117119
CGRAPH_ASSERT_NOT_NULL(cur)
118-
status += cur->addManagers(paramManager, eventManager);
120+
status += cur->addManagers(paramManager, eventManager, stageManager);
119121
}
120122

121123
CGRAPH_FUNCTION_END

src/GraphCtrl/GraphElement/GGroup/GRegion/GRegion.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ class GRegion : public GGroup {
4646
CBool isSerializable() const final;
4747

4848
CStatus addManagers(GParamManagerPtr paramManager,
49-
GEventManagerPtr eventManager) final;
49+
GEventManagerPtr eventManager,
50+
GStageManagerPtr stageManager) final;
5051

5152
CBool isSeparate(GElementCPtr a, GElementCPtr b) const final;
5253

0 commit comments

Comments
 (0)