CGraph
Private Member Functions | Private Attributes | Friends | List of all members
GElementRepository Class Reference

#include <GElementRepository.h>

Inheritance diagram for GElementRepository:
Inheritance graph
[legend]
Collaboration diagram for GElementRepository:
Collaboration graph
[legend]

Private Member Functions

CVoid insert (GElementPtr ptr)
 
CBool find (GElementPtr ptr) const
 
GElementRepositorysetThreadPool (UThreadPoolPtr ptr)
 
CStatus setup ()
 
CStatus reset ()
 
CStatus pushAllState (const GElementState &state)
 
CBool isCancelState () const
 
CStatus init () override
 
CStatus destroy () override
 
CStatus run () final
 
 ~GElementRepository () override
 

Private Attributes

GElementPtrSet elements_ {}
 
GElementState cur_state_ { GElementState::CREATE }
 
GElementPtrSet async_elements_ {}
 

Friends

class GPipeline
 
class GPerf
 

Additional Inherited Members

- Public Member Functions inherited from CObject
 CObject ()=default
 
virtual ~CObject ()=default
 

Constructor & Destructor Documentation

◆ ~GElementRepository()

GElementRepository::~GElementRepository ( )
overrideprivate

Member Function Documentation

◆ destroy()

CStatus GElementRepository::destroy ( )
overrideprivatevirtual

释放函数

destroy的时候,恢复create的状态,确保再次轮训的时候正常 理论上,cancel状态仅会出现在极短的时间段之内, 当程序 cancel完成之后,就会重新恢复 CREATE的状态 问题详见: https://github.com/ChunelFeng/CGraph/issues/153

Reimplemented from CObject.

Here is the call graph for this function:

◆ find()

CBool GElementRepository::find ( GElementPtr  ptr) const
private

查找对应的element

Parameters
ptr
Returns

◆ init()

CStatus GElementRepository::init ( )
overrideprivatevirtual

初始化函数

  1. 查验element是否为空
  2. 查验配置信息是否正确
  3. 记录异步节点的信息

Reimplemented from CObject.

Here is the call graph for this function:

◆ insert()

CGRAPH_NAMESPACE_BEGIN CVoid GElementRepository::insert ( GElementPtr  ptr)
private

插入一个element

Parameters
ptr
Returns

◆ isCancelState()

CBool GElementRepository::isCancelState ( ) const
private

用于判断是否是出于退出状态

Returns

因为每次执行的时候,都需要判断一下这个状态是否为 cancel 且理论上不会出现多线程问题 故这一层的 cur_state_ 就不设置为atomic类型的了

◆ pushAllState()

CStatus GElementRepository::pushAllState ( const GElementState state)
private

设置所有内部的element状态

Parameters
state
Returns

◆ reset()

CStatus GElementRepository::reset ( )
private

等待所有的element执行结束

Returns
@notice 主要针对异步流程

◆ run()

CStatus GElementRepository::run ( )
finalprivatevirtual

流程处理函数

Implements CObject.

◆ setThreadPool()

GElementRepositoryPtr GElementRepository::setThreadPool ( UThreadPoolPtr  ptr)
private

给所有的element,设定线程池

Parameters
ptr
Returns

◆ setup()

CStatus GElementRepository::setup ( )
private

准备执行流程

Returns
Here is the call graph for this function:

Friends And Related Function Documentation

◆ GPerf

friend class GPerf
friend

◆ GPipeline

friend class GPipeline
friend

Member Data Documentation

◆ async_elements_

GElementPtrSet GElementRepository::async_elements_ {}
private

◆ cur_state_

GElementState GElementRepository::cur_state_ { GElementState::CREATE }
private

◆ elements_

GElementPtrSet GElementRepository::elements_ {}
private

The documentation for this class was generated from the following files: