| 13 | using namespace CGraph; |
| 14 | |
| 15 | void tutorial_multi_condition() { |
| 16 | GPipelinePtr pipeline = GPipelineFactory::create(); // 创建一个pipeline,用于执行图框架信息 |
| 17 | GElementPtr a, b_multi_condition, c, d_multi_condition = nullptr; |
| 18 | b_multi_condition = pipeline->createGGroup<GMultiCondition<GMultiConditionType::SERIAL>>({ |
| 19 | pipeline->createGNode<MyNode1>(GNodeInfo("nodeB1")), // 本节点【不会】执行,因为默认不执行 |
| 20 | pipeline->createGNode<MyMatchNode>(GNodeInfo("nodeB2")) // 本节点【会】执行,因为 isMatch() 返回为 true |
| 21 | }); |
| 22 | |
| 23 | d_multi_condition = pipeline->createGGroup<GMultiCondition<GMultiConditionType::PARALLEL>>({ |
| 24 | // 这里的两个节点,均不会被执行,以为 isMatch 的条件不满足 |
| 25 | pipeline->createGNode<MyMatchNode>(GNodeInfo("nodeD1")), |
| 26 | pipeline->createGNode<MyMatchNode>(GNodeInfo("nodeD2")) |
| 27 | }); |
| 28 | |
| 29 | CStatus status = pipeline->registerGElement<MyWriteParamNode>(&a, {}, "nodeA"); |
| 30 | // 新版本中,推荐使用 registerGGroup 来注册group信息,简化流程 |
| 31 | status += pipeline->registerGGroup(&b_multi_condition, {a}, "multiConditionB"); |
| 32 | status += pipeline->registerGElement<MyWriteParamNode>(&c, {b_multi_condition}, "nodeC"); |
| 33 | status += pipeline->registerGGroup(&d_multi_condition, {c}, "multiConditionD"); |
| 34 | |
| 35 | pipeline->process(); // 运行pipeline |
| 36 | GPipelineFactory::remove(pipeline); |
| 37 | } |
| 38 | |
| 39 | |
| 40 | int main() { |