| 13 | #include "../MyParams/MyParam.h" |
| 14 | |
| 15 | class MyWriteParamNode : public CGraph::GNode { |
| 16 | public: |
| 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 |
nothing calls this directly
no outgoing calls
no test coverage detected