MCPcopy Create free account
hub / github.com/ChunelFeng/CGraph / MyWriteParamNode

Class MyWriteParamNode

tutorial/MyGNode/MyWriteParamNode.h:15–54  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13#include "../MyParams/MyParam.h"
14
15class MyWriteParamNode : public CGraph::GNode {
16public:
17 CStatus init() override {
18 CStatus status;
19 /**
20 * 推荐在init()中,将可能用到的参数创建好。也支持在run的时候创建
21 * 支持在任意节点创建,任意节点读取同类型(MyParam)同名("param1")参数
22 */
23 status = CGRAPH_CREATE_GPARAM(MyParam, "param1")
24 return status;
25 }
26
27 CStatus run() override {
28 /**
29 * 为了提高执行效率,
30 * 在【创建参数】的时候,【提供】锁保护机制
31 * 在【获取参数】的时候,【不提供】锁保护的机制
32 * 故无法通过在run()过程中,并发的通过 createGParam 和 getGParam 创建和获取参数
33 * 如果需要做此操作,请自行外部加锁
34 */
35 auto* myParam = CGRAPH_GET_GPARAM_WITH_NO_EMPTY(MyParam, "param1")
36 int val = 0;
37 int cnt = 0;
38 {
39 CGRAPH_PARAM_WRITE_CODE_BLOCK(myParam)
40 /**
41 * 建议将需要的内容获取出来,然后在 CODE_BLOCK 外进行与param无关的参数加工(本例中为:打印信息)。
42 * 这样做的好处,是可以尽可能减少 CODE_BLOCK 的范围
43 */
44 val = ++myParam->iValue; // 对param中的信息,进行写入
45 cnt = ++myParam->iCount;
46 }
47
48 /* 执行时,仅依赖val值,跟当前param1->iValue值无关,可以放到 CODE_BLOCK 外部 */
49 CGraph::CGRAPH_ECHO("[%s], iValue value is : [%d], iCount value is [%d] ... ",
50 this->getName().c_str(), val, cnt);
51
52 return CStatus();
53 }
54};
55
56#endif //CGRAPH_MYWRITEPARAMNODE_H

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected