|
CGraph
|
#include <GPipeline.h>


Public Member Functions | |
| CStatus | init () override |
| CStatus | run () override |
| CStatus | destroy () override |
| CStatus | process (CSize runTimes=CGRAPH_DEFAULT_LOOP_TIMES) |
| std::future< CStatus > | asyncRun (std::launch policy=std::launch::async) |
| std::future< CStatus > | asyncProcess (CSize runTimes=CGRAPH_DEFAULT_LOOP_TIMES, std::launch policy=std::launch::async) |
| CStatus | cancel () |
| CStatus | yield () |
| CStatus | resume () |
| CStatus | dump (std::ostream &oss=std::cout) |
| CStatus | perf (std::ostream &oss=std::cout) |
| template<typename TNode , typename ... Args, c_enable_if_t< std::is_base_of< GNode, TNode >::value, int > = 0> | |
| TNode * | createGNode (const GNodeInfo &info, Args &&... args) |
| template<typename TNode , typename ... Args, c_enable_if_t< std::is_base_of< GNode, TNode >::value, int > = 0> | |
| TNode * | createGNode (const GElementPtrSet &dependence=std::initializer_list< GElementPtr >(), const std::string &name=CGRAPH_EMPTY, CSize loop=CGRAPH_DEFAULT_LOOP_TIMES, Args &&... args) |
| template<typename TGroup , c_enable_if_t< std::is_base_of< GGroup, TGroup >::value, int > = 0> | |
| TGroup * | createGGroup (const GElementPtrArr &elements, const GElementPtrSet &depends=std::initializer_list< GElementPtr >(), const std::string &name=CGRAPH_EMPTY, CSize loop=CGRAPH_DEFAULT_LOOP_TIMES) |
| template<typename T , c_enable_if_t< std::is_base_of< GElement, T >::value, int > = 0> | |
| CStatus | registerGElement (GElementPPtr elementRef, const GElementPtrSet &depends=std::initializer_list< GElementPtr >(), const std::string &name=CGRAPH_EMPTY, CSize loop=CGRAPH_DEFAULT_LOOP_TIMES) |
| template<typename TNode , typename ... Args, c_enable_if_t< std::is_base_of< GTemplateNode< Args ... >, TNode >::value, int > = 0> | |
| CStatus | registerGElement (GTemplateNodePtr< Args ... > *elementRef, const GElementPtrSet &depends, Args... args) |
| template<typename TNode , c_enable_if_t< std::is_base_of< GNode, TNode >::value, int > = 0> | |
| TNode * | registerGNode (const GElementPtrSet &depends=std::initializer_list< GElementPtr >(), const std::string &name=CGRAPH_EMPTY, CSize loop=CGRAPH_DEFAULT_LOOP_TIMES) |
| template<typename TNode , typename ... Args, c_enable_if_t< std::is_base_of< GTemplateNode< Args ... >, TNode >::value, int > = 0> | |
| TNode * | registerGNode (const GElementPtrSet &depends, Args... args) |
| CStatus | registerGNode (GElementPPtr nodeRef, const GElementPtrSet &depends=std::initializer_list< GElementPtr >(), const std::string &name=CGRAPH_EMPTY, CSize loop=CGRAPH_DEFAULT_LOOP_TIMES) |
| CStatus | registerGGroup (GElementPPtr groupRef, const GElementPtrSet &depends=std::initializer_list< GElementPtr >(), const std::string &name=CGRAPH_EMPTY, CSize loop=CGRAPH_DEFAULT_LOOP_TIMES) |
| template<typename GFunction > | |
| CStatus | registerGElement (GFunctionPPtr functionRef, const GElementPtrSet &depends=std::initializer_list< GElementPtr >(), const std::string &name=CGRAPH_EMPTY, CSize loop=CGRAPH_DEFAULT_LOOP_TIMES) |
| template<typename GFence > | |
| CStatus | registerGElement (GFencePPtr fenceRef, const GElementPtrSet &depends=std::initializer_list< GElementPtr >(), const std::string &name=CGRAPH_EMPTY, CSize loop=CGRAPH_DEFAULT_LOOP_TIMES) |
| template<typename GCoordinator , CInt SIZE> | |
| CStatus | registerGElement (GCoordinatorPPtr< SIZE > coordinatorRef, const GElementPtrSet &depends=std::initializer_list< GElementPtr >(), const std::string &name=CGRAPH_EMPTY, CSize loop=CGRAPH_DEFAULT_LOOP_TIMES) |
| template<typename TAspect , typename TParam = GAspectDefaultParam, c_enable_if_t< std::is_base_of< GAspect, TAspect >::value, int > = 0, c_enable_if_t< std::is_base_of< GAspectParam, TParam >::value, int > = 0> | |
| GPipeline * | addGAspect (const GElementPtrSet &elements=std::initializer_list< GElementPtr >(), TParam *param=nullptr) |
| template<typename TDaemon , typename TParam = GDaemonDefaultParam, c_enable_if_t< std::is_base_of< GDaemon, TDaemon >::value, int > = 0, c_enable_if_t< std::is_base_of< GDaemonParam, TParam >::value, int > = 0> | |
| GPipeline * | addGDaemon (CMSec ms, TParam *param=nullptr) |
| template<typename TDaemon , typename ... Args, c_enable_if_t< std::is_base_of< GTemplateDaemon< Args... >, TDaemon >::value, int > = 0> | |
| GPipeline * | addGDaemon (CMSec ms, Args &&... args) |
| template<typename TEvent , typename TParam = GEventDefaultParam, c_enable_if_t< std::is_base_of< GEvent, TEvent >::value, int > = 0, c_enable_if_t< std::is_base_of< GEventParam, TParam >::value, int > = 0> | |
| GPipeline * | addGEvent (const std::string &key, TParam *param=nullptr) |
| GPipeline * | addGStage (const std::string &key, CInt threshold) |
| GPipeline * | setGEngineType (GEngineType type) |
| GPipeline * | setUniqueThreadPoolConfig (const UThreadPoolConfig &config) |
| GPipeline * | setSharedThreadPool (UThreadPoolPtr ptr) |
| CSize | getMaxPara () |
| CSize | trim () |
| CStatus | makeSerial () |
| GPipelineState | getCurState () const |
| CBool | checkSeparate (GElementPtr fst, GElementPtr snd) const |
| template<typename T , c_enable_if_t< std::is_base_of< GElement, T >::value, int > > | |
| CGRAPH_NAMESPACE_BEGIN CStatus | registerGElement (GElementPPtr elementRef, const GElementPtrSet &depends, const std::string &name, CSize loop) |
| template<typename TAspect , typename TParam , c_enable_if_t< std::is_base_of< GAspect, TAspect >::value, int > , c_enable_if_t< std::is_base_of< GAspectParam, TParam >::value, int > > | |
| GPipelinePtr | addGAspect (const GElementPtrSet &elements, TParam *param) |
| template<typename TDaemon , typename TParam , c_enable_if_t< std::is_base_of< GDaemon, TDaemon >::value, int > , c_enable_if_t< std::is_base_of< GDaemonParam, TParam >::value, int > > | |
| GPipelinePtr | addGDaemon (CMSec ms, TParam *param) |
| template<typename TDaemon , typename ... Args, c_enable_if_t< std::is_base_of< GTemplateDaemon< Args... >, TDaemon >::value, int > > | |
| GPipelinePtr | addGDaemon (CMSec ms, Args &&... args) |
| template<typename TEvent , typename TParam , c_enable_if_t< std::is_base_of< GEvent, TEvent >::value, int > , c_enable_if_t< std::is_base_of< GEventParam, TParam >::value, int > > | |
| GPipelinePtr | addGEvent (const std::string &key, TParam *param) |
Public Member Functions inherited from CObject | |
| CObject ()=default | |
| virtual | ~CObject ()=default |
Public Member Functions inherited from CDescInfo | |
| virtual const std::string & | getName () const |
| const std::string & | getSession () const |
| const std::string & | getDescription () const |
| virtual auto | setName (const std::string &name) -> decltype(this) |
| virtual auto | setDescription (const std::string &description) -> decltype(this) |
| virtual | ~CDescInfo ()=default |
Protected Member Functions | |
| GPipeline () | |
| ~GPipeline () override | |
Private Member Functions | |
| CStatus | initEnv () |
| CStatus | innerRegister (GElementPtr element, const GElementPtrSet &depends, const std::string &name, CSize loop) |
Private Attributes | |
| GElementManagerPtr | element_manager_ = nullptr |
| GParamManagerPtr | param_manager_ = nullptr |
| GDaemonManagerPtr | daemon_manager_ = nullptr |
| GEventManagerPtr | event_manager_ = nullptr |
| GStageManagerPtr | stage_manager_ = nullptr |
| GSchedule | schedule_ |
| GElementRepository | repository_ |
Friends | |
| class | GPipelineFactory |
| class | CAllocator |
| class | GPerf |
Additional Inherited Members | |
Protected Attributes inherited from GPipelineObject | |
| CBool | is_init_ = false |
Protected Attributes inherited from CDescInfo | |
| std::string | name_ |
| std::string | session_ |
| std::string | description_ |
|
explicitprotected |
注册GParam 交互类集合

|
overrideprotected |
| GPipelinePtr GPipeline::addGAspect | ( | const GElementPtrSet & | elements, |
| TParam * | param | ||
| ) |

| GPipeline* GPipeline::addGAspect | ( | const GElementPtrSet & | elements = std::initializer_list< GElementPtr >(), |
| TParam * | param = nullptr |
||
| ) |
添加切面
| TAspect | |
| TParam |
| elements | |
| param |
| GPipeline* GPipeline::addGDaemon | ( | CMSec | ms, |
| Args &&... | args | ||
| ) |
添加模板类型守护
| TAspect | |
| Args |
| ms | |
| args |
| GPipelinePtr GPipeline::addGDaemon | ( | CMSec | ms, |
| Args &&... | args | ||
| ) |

| GPipelinePtr GPipeline::addGDaemon | ( | CMSec | ms, |
| TParam * | param | ||
| ) |

| GPipeline* GPipeline::addGDaemon | ( | CMSec | ms, |
| TParam * | param = nullptr |
||
| ) |
添加守护
| TDaemon | |
| TParam |
| ms | |
| param |
| GPipelinePtr GPipeline::addGEvent | ( | const std::string & | key, |
| TParam * | param | ||
| ) |

| GPipeline* GPipeline::addGEvent | ( | const std::string & | key, |
| TParam * | param = nullptr |
||
| ) |
添加一个事件
| TEvent | |
| TParam |
| key | |
| param |
| GPipelinePtr GPipeline::addGStage | ( | const std::string & | key, |
| CInt | threshold | ||
| ) |
添加一个阶段
| key | |
| threshold |

| std::future< CStatus > GPipeline::asyncProcess | ( | CSize | runTimes = CGRAPH_DEFAULT_LOOP_TIMES, |
| std::launch | policy = std::launch::async |
||
| ) |
异步执行pipeline的全部流程
| runTimes | |
| policy |

| std::future< CStatus > GPipeline::asyncRun | ( | std::launch | policy = std::launch::async | ) |
异步执行pipeline的run流程
| policy |

| CStatus GPipeline::cancel | ( | ) |
停止执行流程,多用于异步执行流程中

| CBool GPipeline::checkSeparate | ( | GElementPtr | fst, |
| GElementPtr | snd | ||
| ) | const |
判断两个element,是否有依赖关系
| fst | |
| snd |

| TGroup * GPipeline::createGGroup | ( | const GElementPtrArr & | elements, |
| const GElementPtrSet & | depends = std::initializer_list<GElementPtr>(), |
||
| const std::string & | name = CGRAPH_EMPTY, |
||
| CSize | loop = CGRAPH_DEFAULT_LOOP_TIMES |
||
| ) |
根据传入的信息,创建Group信息
| T |
| elements | |
| depends | |
| name | |
| loop |

| TNode * GPipeline::createGNode | ( | const GElementPtrSet & | dependence = std::initializer_list<GElementPtr>(), |
| const std::string & | name = CGRAPH_EMPTY, |
||
| CSize | loop = CGRAPH_DEFAULT_LOOP_TIMES, |
||
| Args &&... | args | ||
| ) |
根据传入的信息,创建node节点
| T | |
| Args |
| name | |
| loop | |
| dependence | |
| args |
| TNode * GPipeline::createGNode | ( | const GNodeInfo & | info, |
| Args &&... | args | ||
| ) |
根据传入的info信息,创建node节点
| TNode | |
| Args |
| info | |
| args |

|
overridevirtual |
释放函数
需要先将线程池相关内容析构,然后再做destroy。 否则的话,在错误status累积的情况下,在windows平台上,会产生崩溃
Reimplemented from CObject.

| CStatus GPipeline::dump | ( | std::ostream & | oss = std::cout | ) |
生成图可视化 graphviz 信息
| oss |
| GPipelineState GPipeline::getCurState | ( | ) | const |
获取当前的执行状态
| CSize GPipeline::getMaxPara | ( | ) |
获取最大并发度

|
overridevirtual |
|
private |
初始化环境信息,包括线程池 等

|
private |
内部真实一个 element 信息
| element | |
| depends | |
| name | |
| loop |

| CStatus GPipeline::makeSerial | ( | ) |
将符合串行执行条件的pipeline,设定为串行执行的模式。可以大幅度提升运行性能。

| CStatus GPipeline::perf | ( | std::ostream & | oss = std::cout | ) |
查看性能分析

| CStatus GPipeline::process | ( | CSize | runTimes = CGRAPH_DEFAULT_LOOP_TIMES | ) |
一次性执行完成初始化,执行runTimes次,和销毁的过程
| runTimes |

| CStatus GPipeline::registerGElement | ( | GCoordinatorPPtr< SIZE > | coordinatorRef, |
| const GElementPtrSet & | depends = std::initializer_list<GElementPtr>(), |
||
| const std::string & | name = CGRAPH_EMPTY, |
||
| CSize | loop = CGRAPH_DEFAULT_LOOP_TIMES |
||
| ) |
注册GCoordinator类型的内容,模板特化
| GCoordinator | |
| SIZE |
| coordinatorRef | |
| depends | |
| name | |
| loop |
| CGRAPH_NAMESPACE_BEGIN CStatus GPipeline::registerGElement | ( | GElementPPtr | elementRef, |
| const GElementPtrSet & | depends, | ||
| const std::string & | name, | ||
| CSize | loop | ||
| ) |
如果是GGroup类型的信息,则: 1,必须外部创建 2,未被注册到其他的pipeline中
如果不是group信息的话,且属于element(包含node和adapter) 则直接内部创建该信息

| CStatus GPipeline::registerGElement | ( | GElementPPtr | elementRef, |
| const GElementPtrSet & | depends = std::initializer_list< GElementPtr >(), |
||
| const std::string & | name = CGRAPH_EMPTY, |
||
| CSize | loop = CGRAPH_DEFAULT_LOOP_TIMES |
||
| ) |
在图中注册一个 GElement信息 如果注册的是GNode信息,则内部自动生成 如果注册的是GGroup信息,则需外部提前生成,然后注册进来
| T |
| elementRef | |
| depends | |
| name | |
| loop |
| CStatus GPipeline::registerGElement | ( | GFencePPtr | fenceRef, |
| const GElementPtrSet & | depends = std::initializer_list<GElementPtr>(), |
||
| const std::string & | name = CGRAPH_EMPTY, |
||
| CSize | loop = CGRAPH_DEFAULT_LOOP_TIMES |
||
| ) |
| CStatus GPipeline::registerGElement | ( | GFunctionPPtr | functionRef, |
| const GElementPtrSet & | depends = std::initializer_list<GElementPtr>(), |
||
| const std::string & | name = CGRAPH_EMPTY, |
||
| CSize | loop = CGRAPH_DEFAULT_LOOP_TIMES |
||
| ) |
| CStatus GPipeline::registerGElement | ( | GTemplateNodePtr< Args ... > * | elementRef, |
| const GElementPtrSet & | depends, | ||
| Args... | args | ||
| ) |
在图中注册一个模板Element信息
| TNode | |
| Args |
| elementRef | |
| depends |

| CStatus GPipeline::registerGGroup | ( | GElementPPtr | groupRef, |
| const GElementPtrSet & | depends = std::initializer_list<GElementPtr>(), |
||
| const std::string & | name = CGRAPH_EMPTY, |
||
| CSize | loop = CGRAPH_DEFAULT_LOOP_TIMES |
||
| ) |
注册一个组信息(推荐使用)
| groupRef | |
| depends | |
| name | |
| loop |

| TNode * GPipeline::registerGNode | ( | const GElementPtrSet & | depends, |
| Args... | args | ||
| ) |
注册一个 node
| TNode | |
| Args |
| depends | |
| args |
| TNode * GPipeline::registerGNode | ( | const GElementPtrSet & | depends = std::initializer_list<GElementPtr>(), |
| const std::string & | name = CGRAPH_EMPTY, |
||
| CSize | loop = CGRAPH_DEFAULT_LOOP_TIMES |
||
| ) |
注册一个 node
| T |
| depends | |
| name | |
| loop |
| CStatus GPipeline::registerGNode | ( | GElementPPtr | nodeRef, |
| const GElementPtrSet & | depends = std::initializer_list<GElementPtr>(), |
||
| const std::string & | name = CGRAPH_EMPTY, |
||
| CSize | loop = CGRAPH_DEFAULT_LOOP_TIMES |
||
| ) |
注册一个节点信息
| nodeRef | |
| depends | |
| name | |
| loop |

| CStatus GPipeline::resume | ( | ) |
恢复当前pipeline的执行,多用于异步执行流程中

|
overridevirtual |
| GPipelinePtr GPipeline::setGEngineType | ( | GEngineType | type | ) |
设置引擎策略
| type |

| GPipelinePtr GPipeline::setSharedThreadPool | ( | UThreadPoolPtr | ptr | ) |
设置共享的线程池
| ptr |

| GPipelinePtr GPipeline::setUniqueThreadPoolConfig | ( | const UThreadPoolConfig & | config | ) |
设置本pipeline内部线程池相关信息
| config |
实际是将信息传递给 schedule中,如果是unique的话,就使用这个参数 如果是 shared的话,其实配置是无效的

| CSize GPipeline::trim | ( | ) |
针对图结构,做多余边剪裁

| CStatus GPipeline::yield | ( | ) |
暂停当前pipeline的执行,多用于异步执行流程中

|
friend |
|
friend |
|
friend |
|
private |
|
private |
不允许外部赋值和构造
|
private |
|
private |
|
private |
|
private |
|
private |