CGraph
Private Member Functions | Static Private Attributes | Friends | List of all members
GSingleton< T > Class Template Reference

GAdapter的派生类,核心成员是static USingleton<T> s_singleton单例,可以方便地作为单例GElement使用 More...

#include <GSingleton.h>

Inheritance diagram for GSingleton< T >:
Inheritance graph
[legend]
Collaboration diagram for GSingleton< T >:
Collaboration graph
[legend]

Private Member Functions

 GSingleton ()
 
CStatus init () final
 
CStatus run () final
 
CStatus destroy () final
 
CStatus addElementInfo (const std::set< GElementPtr > &depends, const std::string &name, CSize loop) final
 
CStatus addManagers (GParamManagerPtr paramManager, GEventManagerPtr eventManager, GStageManagerPtr stageManager) final
 
CBool isHold () final
 
CBool isMatch () final
 
CBool isRegistered () const final
 
const std::string & getName () const final
 

Static Private Attributes

static USingleton< T > s_singleton_
 
static std::atomic< CBools_is_init_
 

Friends

class GPipeline
 

Additional Inherited Members

- Public Member Functions inherited from GElement
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 ~CObject ()=default
 
- Public Member Functions inherited from CDescInfo
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 inherited from GAdapter
 GAdapter ()
 
- Protected Member Functions inherited from GElement
 GElement ()=default
 
 ~GElement () override
 
virtual CStatus prepareRun ()
 
virtual CStatus checkRunResult ()
 
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)
 
- Protected Attributes inherited from CDescInfo
std::string name_
 
std::string session_
 
std::string description_
 

Detailed Description

template<typename T>
class GSingleton< T >

GAdapter的派生类,核心成员是static USingleton<T> s_singleton单例,可以方便地作为单例GElement使用

Template Parameters
T

Constructor & Destructor Documentation

◆ GSingleton()

template<typename T >
GSingleton< T >::GSingleton
explicitprivate
Here is the call graph for this function:

Member Function Documentation

◆ addElementInfo()

template<typename T >
CStatus GSingleton< T >::addElementInfo ( const std::set< GElementPtr > &  depends,
const std::string &  name,
CSize  loop 
)
finalprivate

◆ addManagers()

template<typename T >
CStatus GSingleton< T >::addManagers ( GParamManagerPtr  paramManager,
GEventManagerPtr  eventManager,
GStageManagerPtr  stageManager 
)
finalprivatevirtual

设置manager信息

Parameters
paramManager
eventManager
stageManager
Returns

Reimplemented from GElement.

◆ destroy()

template<typename T >
CStatus GSingleton< T >::destroy
finalprivatevirtual

释放函数

Reimplemented from CObject.

◆ getName()

template<typename T >
const std::string & GSingleton< T >::getName
finalprivatevirtual

获取名称信息

Returns

Reimplemented from CDescInfo.

◆ init()

template<typename T >
CStatus GSingleton< T >::init
finalprivatevirtual

初始化函数

Reimplemented from CObject.

◆ isHold()

template<typename T >
CBool GSingleton< T >::isHold
finalprivatevirtual

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

Returns

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

Reimplemented from GElement.

◆ isMatch()

template<typename T >
CBool GSingleton< T >::isMatch
finalprivatevirtual

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

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

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

Reimplemented from GElement.

◆ isRegistered()

template<typename T >
CBool GSingleton< T >::isRegistered
finalprivatevirtual

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

Returns

Reimplemented from GElement.

◆ run()

template<typename T >
CStatus GSingleton< T >::run ( )
finalprivatevirtual

流程处理函数

Implements CObject.

Friends And Related Function Documentation

◆ GPipeline

template<typename T >
friend class GPipeline
friend

Member Data Documentation

◆ s_is_init_

template<typename T >
std::atomic< CBool > GSingleton< T >::s_is_init_
staticprivate

◆ s_singleton_

template<typename T >
CGRAPH_NAMESPACE_BEGIN USingleton< T > GSingleton< T >::s_singleton_
staticprivate

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