CGraph
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
GElement Class Reference

CGraph所有广义"结点"的基类,可派生出GNode/GGroup/GAdapter类 public: 提供addGAspect加入切面/addDependGElement加入前序依赖/removeDepend删除前序依赖的能力 提供setName更新名称/setLoop设置循环次数/setLevel设置优先级/setVisible隐藏当前元素/setBindingIndex设置亲和线程等能力 提供setTimeout设置元素执行的超时时间/setMacro设置为微任务的能力 提供addEParam添加GElement内部参数(GElementParam,实际上就是GPassedParam) 还额外提供运算符重载:–(setVisible)、>(设置后继依赖)、&(设置后继依赖)、*(setLoop) More...

#include <GElement.h>

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

Public Member Functions

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>
GElementaddGAspect (TParam *param=nullptr)
 
template<typename TAspect , typename ... Args, c_enable_if_t< std::is_base_of< GTemplateAspect< Args... >, TAspect >::value, int > = 0>
GElementaddGAspect (Args... args)
 
template<typename T , c_enable_if_t< std::is_base_of< GElementParam, T >::value, int > = 0>
GElementaddEParam (const std::string &key, T *param)
 
CStatus addDependGElements (const std::set< GElement * > &elements)
 
GElementsetName (const std::string &name) override
 
GElementsetLoop (CSize loop)
 
GElementsetLevel (CLevel level)
 
GElementsetVisible (CBool visible)
 
GElementsetBindingIndex (CIndex index)
 
GElementsetTimeout (CMSec timeout, GElementTimeoutStrategy strategy=GElementTimeoutStrategy::AS_ERROR)
 
GElementsetMacro (CBool macro)
 
CBool isGGroup () const
 
CBool isGAdaptor () const
 
CBool isGNode () const
 
GElementState getCurState () const
 
CStatus removeDepend (GElement *element)
 
GElementoperator-- (int) noexcept
 
GElementoperator> (GElement *element)
 
GElementoperator& (GElement *element)
 
GElementoperator* (CSize loop) noexcept
 
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 > >
CGRAPH_NAMESPACE_BEGIN GElementPtr addGAspect (TParam *param)
 
template<typename TAspect , typename ... Args, c_enable_if_t< std::is_base_of< GTemplateAspect< Args... >, TAspect >::value, int > >
GElementPtr addGAspect (Args... args)
 
template<typename T , c_enable_if_t< std::is_base_of< GElementParam, T >::value, int > >
GElementPtr addEParam (const std::string &key, T *param)
 
- Public Member Functions inherited from CObject
 CObject ()=default
 
virtual CStatus init ()
 
virtual CStatus run ()=0
 
virtual CStatus destroy ()
 
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 setDescription (const std::string &description) -> decltype(this)
 
virtual ~CDescInfo ()=default
 

Protected Member Functions

 GElement ()=default
 
 ~GElement () override
 
virtual CStatus prepareRun ()
 
virtual CStatus checkRunResult ()
 
virtual CBool isHold ()
 
virtual CBool isMatch ()
 
CStatus crashed (const CException &ex)
 
template<typename T , c_enable_if_t< std::is_base_of< GElementParam, T >::value, int > = 0>
T * getEParam (const std::string &key)
 
CIndex getThreadIndex ()
 
CBool isTimeout () const
 
CIndex getBindingIndex () const
 
GElementRelation getRelation () const
 
 CGRAPH_NO_ALLOWED_COPY (GElement)
 

Private Member Functions

CVoid refresh ()
 
CBool isAsync () const
 
CBool isMutable () const
 
CBool isMacro () const
 
virtual CBool isRegistered () const
 
CStatus doAspect (const internal::GAspectType &aspectType, const CStatus &curStatus=CStatus())
 
virtual CStatus addElementInfo (const std::set< GElement * > &depends, const std::string &name, CSize loop)
 
virtual CStatus addManagers (GParamManagerPtr paramManager, GEventManagerPtr eventManager, GStageManagerPtr stageManager)
 
CStatus fatProcessor (const CFunctionType &type)
 
GElementsetThreadPool (UThreadPoolPtr ptr)
 
virtual CVoid dump (std::ostream &oss)
 
CVoid dumpEdge (std::ostream &oss, GElement *src, GElement *dst, const std::string &label=CGRAPH_EMPTY)
 
virtual CVoid dumpElement (std::ostream &oss)
 
CVoid dumpElementHeader (std::ostream &oss)
 
CVoid dumpPerfInfo (std::ostream &oss)
 
CVoid checkYield ()
 
virtual CBool isSerializable () const
 
CStatus popLastAspect ()
 
CStatus asyncRun ()
 
CStatus getAsyncResult ()
 
virtual CStatus checkSuitable ()
 
std::vector< GElement * > getDeepPath (CBool reverse) const
 
CBool isDefaultBinding () const
 

Private Attributes

CBool done_ { false }
 
CBool visible_ { true }
 
CBool is_init_ { false }
 
GElementType element_type_ { GElementType::ELEMENT }
 
std::atomic< GElementStatecur_state_ { GElementState::CREATE }
 
internal::GElementShape shape_ { internal::GElementShape::NORMAL }
 
CSize loop_ { CGRAPH_DEFAULT_LOOP_TIMES }
 
CLevel level_ { CGRAPH_DEFAULT_ELEMENT_LEVEL }
 
CIndex binding_index_ { CGRAPH_DEFAULT_BINDING_INDEX }
 
CMSec timeout_ { CGRAPH_DEFAULT_ELEMENT_TIMEOUT }
 
GElementTimeoutStrategy timeout_strategy_ { GElementTimeoutStrategy::AS_ERROR }
 
CBool is_marco_ { false }
 
GElementParamMap local_params_
 
GAspectManagerPtr aspect_manager_ { nullptr }
 
UThreadPoolPtr thread_pool_ { nullptr }
 
GPerfInfoperf_info_ { nullptr }
 
CBool is_prepared_ { false }
 
std::atomic< CSizeleft_depend_ { 0 }
 
USmallVector< GElement * > run_before_
 
USmallVector< GElement * > dependence_
 
GElementbelong_ { nullptr }
 
std::future< CStatusasync_result_
 
std::mutex yield_mutex_
 
std::condition_variable yield_cv_
 

Friends

class GNode
 
class GGroup
 
class GCluster
 
class GRegion
 
class GCondition
 
class GMutable
 
template<CInt >
class GSome
 
template<GMultiConditionType >
class GMultiCondition
 
class GPipeline
 
class GElementManager
 
class GElementSorter
 
class GAdapter
 
class GFunction
 
class GFence
 
template<CInt >
class GCoordinator
 
template<typename T >
class GSingleton
 
class GEngine
 
class GDynamicEngine
 
class GTopoEngine
 
class GStaticEngine
 
class GAspectObject
 
class GOptimizer
 
class GMaxParaOptimizer
 
class GTrimOptimizer
 
class GSeparateOptimizer
 
class GElementRepository
 
class GPerf
 

Additional Inherited Members

- Protected Attributes inherited from CDescInfo
std::string name_
 
std::string session_
 
std::string description_
 

Detailed Description

CGraph所有广义"结点"的基类,可派生出GNode/GGroup/GAdapter类 public: 提供addGAspect加入切面/addDependGElement加入前序依赖/removeDepend删除前序依赖的能力 提供setName更新名称/setLoop设置循环次数/setLevel设置优先级/setVisible隐藏当前元素/setBindingIndex设置亲和线程等能力 提供setTimeout设置元素执行的超时时间/setMacro设置为微任务的能力 提供addEParam添加GElement内部参数(GElementParam,实际上就是GPassedParam) 还额外提供运算符重载:–(setVisible)、>(设置后继依赖)、&(设置后继依赖)、*(setLoop)

protected: 支持设置GAspectManager/GParamManager/GEventManager(后两者通过宏来实现,doxygen分析不出来)

Constructor & Destructor Documentation

◆ GElement()

GElement::GElement ( )
explicitprotecteddefault

构造函数

◆ ~GElement()

CGRAPH_NAMESPACE_BEGIN GElement::~GElement ( )
overrideprotected

析构函数

Member Function Documentation

◆ addDependGElements()

CStatus GElement::addDependGElements ( const std::set< GElement * > &  elements)

添加依赖节点信息

Parameters
elements
Returns
Here is the call graph for this function:

◆ addElementInfo()

CStatus GElement::addElementInfo ( const std::set< GElement * > &  depends,
const std::string &  name,
CSize  loop 
)
privatevirtual

设置element信息

Parameters
depends
name
loop
Returns
Here is the call graph for this function:

◆ addEParam() [1/2]

template<typename T , c_enable_if_t< std::is_base_of< GElementParam, T >::value, int > = 0>
GElement* GElement::addEParam ( const std::string &  key,
T *  param 
)

添加当前element内部参数

Template Parameters
T
Parameters
key
param
Returns

◆ addEParam() [2/2]

template<typename T , c_enable_if_t< std::is_base_of< GElementParam, T >::value, int > >
GElementPtr GElement::addEParam ( const std::string &  key,
T *  param 
)

◆ addGAspect() [1/4]

template<typename TAspect , typename ... Args, c_enable_if_t< std::is_base_of< GTemplateAspect< Args... >, TAspect >::value, int > = 0>
GElement* GElement::addGAspect ( Args...  args)

实现添加模板切面的逻辑

Template Parameters
TAspect
Args
Returns

◆ addGAspect() [2/4]

template<typename TAspect , typename ... Args, c_enable_if_t< std::is_base_of< GTemplateAspect< Args... >, TAspect >::value, int > >
GElementPtr GElement::addGAspect ( Args...  args)
Here is the call graph for this function:

◆ addGAspect() [3/4]

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 > >
CGRAPH_NAMESPACE_BEGIN GElementPtr GElement::addGAspect ( TParam *  param)

采用懒加载的方式执行,这里不会有并发问题,故不需要采用单例模式了

Here is the call graph for this function:

◆ addGAspect() [4/4]

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>
GElement* GElement::addGAspect ( TParam *  param = nullptr)

实现添加切面的逻辑

Template Parameters
TAspect
TParam
Parameters
param
Returns

◆ addManagers()

CStatus GElement::addManagers ( GParamManagerPtr  paramManager,
GEventManagerPtr  eventManager,
GStageManagerPtr  stageManager 
)
privatevirtual

设置manager信息

Parameters
paramManager
eventManager
stageManager
Returns

Reimplemented in GGroup, GRegion, and GSingleton< T >.

Here is the call graph for this function:

◆ asyncRun()

CStatus GElement::asyncRun ( )
private

异步执行

Returns
Here is the call graph for this function:

◆ CGRAPH_NO_ALLOWED_COPY()

GElement::CGRAPH_NO_ALLOWED_COPY ( GElement  )
protected

◆ checkRunResult()

CStatus GElement::checkRunResult ( )
protectedvirtual

run() 方法完成之后(包含所有循环次数和 isHold逻辑)的校验函数

Returns
@notice 不建议在异步element中使用

◆ checkSuitable()

CStatus GElement::checkSuitable ( )
privatevirtual

判断当前节点,是否符合执行逻辑。主要用于init的早期阶段

Returns

Reimplemented in GSome< TriggerNum >, GFence, and GCoordinator< SIZE >.

Here is the call graph for this function:

◆ checkYield()

CVoid GElement::checkYield ( )
private

判断是否进入 yield状态。如果是的话,则等待恢复。未进入yield状态,则继续运行

Returns

◆ crashed()

CStatus GElement::crashed ( const CException ex)
protected

崩溃流程处理

Parameters
ex
Returns

◆ doAspect()

CStatus GElement::doAspect ( const internal::GAspectType aspectType,
const CStatus curStatus = CStatus() 
)
private

执行切面逻辑

Parameters
aspectType
curStatus
Returns
Here is the call graph for this function:

◆ dump()

CVoid GElement::dump ( std::ostream &  oss)
privatevirtual

graphviz dump 逻辑

Parameters
oss
Returns

Reimplemented in GSome< TriggerNum >, GRegion, GCondition, and GCluster.

Here is the call graph for this function:

◆ dumpEdge()

CVoid GElement::dumpEdge ( std::ostream &  oss,
GElement src,
GElement dst,
const std::string &  label = CGRAPH_EMPTY 
)
private

graphviz dump 边逻辑

Parameters
oss
src表示开始的元素
dst表示结束的元素
label
Returns
Here is the call graph for this function:

◆ dumpElement()

CVoid GElement::dumpElement ( std::ostream &  oss)
privatevirtual

graphviz dump 点逻辑

Parameters
oss

Reimplemented in GFence, and GCoordinator< SIZE >.

Here is the call graph for this function:

◆ dumpElementHeader()

CVoid GElement::dumpElementHeader ( std::ostream &  oss)
private

dump 当前element的header。主要就是为了代码

Parameters
oss
Returns

◆ dumpPerfInfo()

CVoid GElement::dumpPerfInfo ( std::ostream &  oss)
private

graphviz dump perf逻辑

Parameters
oss
Returns

◆ fatProcessor()

CStatus GElement::fatProcessor ( const CFunctionType type)
private

包含切面相关功能的函数,fat取自fatjar的意思

Parameters
type
Returns

如果当前的 element 因为被remove等原因,变成 不可见的状态 则不运行。但不是实际删除当前节点信息

第一次执行的时候,预先执行一下 prepareRun方法

执行带切面的run方法

在实际run结束之后,首先需要判断一下是否进入yield状态了。 接下来,如果状态是ok的,并且被条件hold住,则循环执行 默认所有element的isHold条件均为false,即不hold,即执行一次 可以根据需求,对任意element类型,添加特定的isHold条件

Here is the call graph for this function:

◆ getAsyncResult()

CStatus GElement::getAsyncResult ( )
private

异步获取结果信息

Returns

◆ getBindingIndex()

CIndex GElement::getBindingIndex ( ) const
protected

获取绑定线程id信息

Returns
@notice 不同的group类型,获取 binding index 的方式不同

◆ getCurState()

GElementState GElement::getCurState ( ) const

获取当前节点状态信息

Returns

如果有超时逻辑的话,优先判断 否则就是当前的状态

Here is the call graph for this function:

◆ getDeepPath()

GElementPtrArr GElement::getDeepPath ( CBool  reverse) const
private

获取链路所有的 belong信息

Parameters
reverse
Returns

◆ getEParam()

template<typename T , c_enable_if_t< std::is_base_of< GElementParam, T >::value, int > >
T * GElement::getEParam ( const std::string &  key)
protected

获取当前element内部参数

Template Parameters
T
Parameters
key
Returns

◆ getRelation()

GElementRelation GElement::getRelation ( ) const
protected

获取当前节点的相关关系信息,包含前驱、后继、从属关系

Returns
Here is the call graph for this function:

◆ getThreadIndex()

CIndex GElement::getThreadIndex ( )
protected

获取执行线程对应的信息

Returns
@notice 启动线程返回-1(CGRAPH_MAIN_THREAD_ID),辅助线程返回-2(CGRAPH_SECONDARY_THREAD_COMMON_ID),主线程返回 线程index
Here is the call graph for this function:

◆ isAsync()

CBool GElement::isAsync ( ) const
private

判定当前的内容,是否需要异步执行

Returns

◆ isDefaultBinding()

CBool GElement::isDefaultBinding ( ) const
private

判断是否是默认绑定策略

Returns

◆ isGAdaptor()

CBool GElement::isGAdaptor ( ) const

当前element是否是一个 adaptor逻辑

Returns

◆ isGGroup()

CBool GElement::isGGroup ( ) const

当前element是否是一个 group逻辑

Returns

◆ isGNode()

CBool GElement::isGNode ( ) const

当前element是否是一个 node逻辑

Returns

◆ isHold()

CBool GElement::isHold ( )
protectedvirtual

是否持续进行 默认为false,表示执行且仅执行一次

Returns

默认仅返回false 可以根据自己逻辑,来实现"持续循环执行,直到特定条件出现的时候停止"的逻辑

Reimplemented in GSome< TriggerNum >, and GSingleton< T >.

◆ isMacro()

CBool GElement::isMacro ( ) const
private

判断当前是否是微节点

Returns

◆ isMatch()

CBool GElement::isMatch ( )
protectedvirtual

用于在MultiCondition中被判定,是否可以执行。

Returns
@notice 默认返回false,不执行

默认仅返回false 主要面对写入 MultiCondition 的时候,做判断当前element是否被执行

Reimplemented in GSingleton< T >.

◆ isMutable()

CBool GElement::isMutable ( ) const
private

判断当前是否可以在运行时更新图结构逻辑

Returns

◆ isRegistered()

CBool GElement::isRegistered ( ) const
privatevirtual

判断当前element是否已经被注册到特定pipeline中了。避免反复注册的问题

Returns

Reimplemented in GSingleton< T >.

◆ isSerializable()

CBool GElement::isSerializable ( ) const
privatevirtual

判断当前元素,是否可以线性执行。默认返回true

Returns

Reimplemented in GMutable, GGroup, GMultiCondition< type >, GSome< TriggerNum >, and GRegion.

◆ isTimeout()

CBool GElement::isTimeout ( ) const
protected

判断当前是否超时

Returns

判断的标准是:

  1. 如果当前节点超时,则认定为超时
  2. 如果当前节点所在的group超时,则也认定为超时

◆ operator&()

GElementRef GElement::operator& ( GElement element)
Here is the call graph for this function:

◆ operator*()

GElement & GElement::operator* ( CSize  loop)
noexcept
Here is the call graph for this function:

◆ operator--()

GElementRef GElement::operator-- ( int  )
noexcept

实现连续注册的语法糖,形如: (*a)-->b (*b)-->d; (*c)-->d; (*b)*2;

Returns
Here is the call graph for this function:

◆ operator>()

GElementRef GElement::operator> ( GElement element)
Here is the call graph for this function:

◆ popLastAspect()

CStatus GElement::popLastAspect ( )
private

弹出一个最后一个切面

Returns
Here is the call graph for this function:

◆ prepareRun()

CStatus GElement::prepareRun ( )
protectedvirtual

init()后,第一次执行run之前,会执行的函数

Returns
@notice 主要为了弥补init()方法,不是并发执行的缺陷。也属于单次执行的函数

◆ refresh()

CVoid GElement::refresh ( )
private

使用者请勿复写private中的函数 恢复运行最初的信息

Returns
Here is the call graph for this function:

◆ removeDepend()

CStatus GElement::removeDepend ( GElement element)

删除一个依赖的节点信息

Parameters
element
Returns
@notice 删除依赖关系之后,可能会出现 dag 无法连通的情况
Here is the call graph for this function:

◆ setBindingIndex()

GElementPtr GElement::setBindingIndex ( CIndex  index)

设定绑定的线程id

Parameters
index,需要绑定的thread id 信息
Returns
@notice 本接口仅保证绑定线程优先调度,但不保证最终一定在绑定线程上执行。若不了解调度机制,不建议使用本接口,否则可能导致运行时阻塞。

由于内部有调度机制,不保证绑定线程后,一定在固定线程上执行。 仅保证优先考虑使用绑定线程执行

◆ setLevel()

GElementPtr GElement::setLevel ( CLevel  level)

设置level信息,用于控制init和destroy方法的执行顺序 level值越低,函数越先执行

Parameters
level
Returns

◆ setLoop()

GElementPtr GElement::setLoop ( CSize  loop)

设置循环次数

Parameters
loop
Returns

◆ setMacro()

GElementPtr GElement::setMacro ( CBool  macro)

设置为微任务

Parameters
macro
Returns
Here is the call graph for this function:

◆ setName()

GElementPtr GElement::setName ( const std::string &  name)
overridevirtual

设置name信息

Parameters
name
Returns

Reimplemented from CDescInfo.

◆ setThreadPool()

GElementPtr GElement::setThreadPool ( UThreadPoolPtr  ptr)
private

设置线程池信息

Parameters
ptr
Returns

◆ setTimeout()

GElementPtr GElement::setTimeout ( CMSec  timeout,
GElementTimeoutStrategy  strategy = GElementTimeoutStrategy::AS_ERROR 
)

设定当前算子的超时时间

Parameters
timeout超时时间
strategy当超时的时候,处理的策略
Returns

◆ setVisible()

GElementPtr GElement::setVisible ( CBool  visible)

设置visible信息。当 visible = false 的时候,算子实际不执行

Parameters
visible
Returns

Friends And Related Function Documentation

◆ GAdapter

friend class GAdapter
friend

◆ GAspectObject

friend class GAspectObject
friend

◆ GCluster

friend class GCluster
friend

◆ GCondition

friend class GCondition
friend

◆ GCoordinator

template<CInt >
friend class GCoordinator
friend

◆ GDynamicEngine

friend class GDynamicEngine
friend

◆ GElementManager

friend class GElementManager
friend

◆ GElementRepository

friend class GElementRepository
friend

◆ GElementSorter

friend class GElementSorter
friend

◆ GEngine

friend class GEngine
friend

◆ GFence

friend class GFence
friend

◆ GFunction

friend class GFunction
friend

◆ GGroup

friend class GGroup
friend

◆ GMaxParaOptimizer

friend class GMaxParaOptimizer
friend

◆ GMultiCondition

template<GMultiConditionType >
friend class GMultiCondition
friend

◆ GMutable

friend class GMutable
friend

◆ GNode

friend class GNode
friend

◆ GOptimizer

friend class GOptimizer
friend

◆ GPerf

friend class GPerf
friend

◆ GPipeline

friend class GPipeline
friend

◆ GRegion

friend class GRegion
friend

◆ GSeparateOptimizer

friend class GSeparateOptimizer
friend

◆ GSingleton

template<typename T >
friend class GSingleton
friend

◆ GSome

template<CInt >
friend class GSome
friend

◆ GStaticEngine

friend class GStaticEngine
friend

◆ GTopoEngine

friend class GTopoEngine
friend

◆ GTrimOptimizer

friend class GTrimOptimizer
friend

Member Data Documentation

◆ aspect_manager_

GAspectManagerPtr GElement::aspect_manager_ { nullptr }
private

◆ async_result_

std::future<CStatus> GElement::async_result_
private

异步执行相关信息

◆ belong_

GElement* GElement::belong_ { nullptr }
private

◆ binding_index_

CIndex GElement::binding_index_ { CGRAPH_DEFAULT_BINDING_INDEX }
private

◆ cur_state_

std::atomic<GElementState> GElement::cur_state_ { GElementState::CREATE }
private

◆ dependence_

USmallVector<GElement *> GElement::dependence_
private

◆ done_

CBool GElement::done_ { false }
private

状态相关信息

◆ element_type_

GElementType GElement::element_type_ { GElementType::ELEMENT }
private

◆ is_init_

CBool GElement::is_init_ { false }
private

◆ is_marco_

CBool GElement::is_marco_ { false }
private

◆ is_prepared_

CBool GElement::is_prepared_ { false }
private

◆ left_depend_

std::atomic<CSize> GElement::left_depend_ { 0 }
private

图相关信息

◆ level_

CLevel GElement::level_ { CGRAPH_DEFAULT_ELEMENT_LEVEL }
private

◆ local_params_

GElementParamMap GElement::local_params_
private

执行期间相关信息

◆ loop_

CSize GElement::loop_ { CGRAPH_DEFAULT_LOOP_TIMES }
private

配置相关信息

◆ perf_info_

GPerfInfo* GElement::perf_info_ { nullptr }
private

◆ run_before_

USmallVector<GElement *> GElement::run_before_
private

◆ shape_

internal::GElementShape GElement::shape_ { internal::GElementShape::NORMAL }
private

◆ thread_pool_

UThreadPoolPtr GElement::thread_pool_ { nullptr }
private

◆ timeout_

CMSec GElement::timeout_ { CGRAPH_DEFAULT_ELEMENT_TIMEOUT }
private

◆ timeout_strategy_

GElementTimeoutStrategy GElement::timeout_strategy_ { GElementTimeoutStrategy::AS_ERROR }
private

◆ visible_

CBool GElement::visible_ { true }
private

◆ yield_cv_

std::condition_variable GElement::yield_cv_
private

◆ yield_mutex_

std::mutex GElement::yield_mutex_
private

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