| 13 | using namespace CGraph; |
| 14 | |
| 15 | void tutorial_element_param() { |
| 16 | GPipelinePtr pipeline = GPipelineFactory::create(); |
| 17 | GElementPtr a, v1, v2 = nullptr; |
| 18 | |
| 19 | pipeline->registerGElement<MyNode1>(&a, {}, "node-1"); |
| 20 | /** |
| 21 | * 注册同样类型(MyEParamNode)的节点,但在下方传入不同类型的参数(EParam) |
| 22 | * 从而执行不同的结果 |
| 23 | */ |
| 24 | pipeline->registerGElement<MyEParamNode>(&v1, {a}, "version-1"); |
| 25 | pipeline->registerGElement<MyEParamNode>(&v2, {v1}, "version-2"); |
| 26 | |
| 27 | MyVersionParam vp1; |
| 28 | vp1.priority_ = 1; |
| 29 | vp1.secondary_ = 1; |
| 30 | /** |
| 31 | * 往v1中,传入参数特定参数 |
| 32 | */ |
| 33 | v1->addEParam(VERSION_PARAM_KEY, &vp1); |
| 34 | |
| 35 | /** |
| 36 | * 可以根据需要,传入不同 key 值的不同类型的参数 |
| 37 | * 被传入的参数类,需要是GPassedParam类(或其衍生类)的子类 |
| 38 | */ |
| 39 | MyVersionParam vp2; |
| 40 | vp2.priority_ = 2; |
| 41 | vp2.secondary_ = 2; |
| 42 | v2->addEParam(VERSION_PARAM_KEY, &vp2); |
| 43 | |
| 44 | MyConnParam cp; |
| 45 | cp.ip_ = "127.0.0.1"; |
| 46 | cp.port_ = 8080; |
| 47 | v2->addEParam(CONN_PARAM_KEY, &cp); |
| 48 | |
| 49 | pipeline->process(); // 运行pipeline |
| 50 | GPipelineFactory::remove(pipeline); |
| 51 | } |
| 52 | |
| 53 | |
| 54 | int main() { |