INOS
TINOSTaskExCmdDyn< ObjectType > Class Template Reference

Class for dynamically created commands. As dynamic (programmatically) created code can not instantiate templates, this is a non template class. Instead its type specific methods are templates. More...

#include <cinostaskextmpl.h>

Inheritance diagram for TINOSTaskExCmdDyn< ObjectType >:

Public Types

typedef void(ObjectType::* tCommandFunction) (CINOSTaskExMsg *apMsg)
 Type of functions of this command. Functions of this type must be used in the constructor of this command.
 
- Public Types inherited from CINOSTaskExCmdBase
typedef bool(CINOSTaskEx::* tPreDispatchFunction) (CINOSTaskExMsg *apMsg)
 Type of pre-dispatch functions. Functions of this type can be used as a callback in SetPreDispatcher.
 
typedef void(CINOSTaskEx::* tOnMsgDoneFunction) (CINOSTaskExMsg *apMsg, CINOSTaskExDef::ERplId aRplId, tMcAppError aAppError)
 Type of OnMsgDone functions. Functions of this type can be used as a callback in SetOnMsgDone.
 

Public Member Functions

template<typename... ParamType>
CMcResult operator() (ParamType... Params, CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
 Calls this command (dispatched). This function creates and puts a message of this command to the task ex of the command.
 
 TINOSTaskExCmdDyn (const char *apName, tCommandFunction apFunction, tCommandFunction apFunctionTmd, ObjectType &aObject, uint32 auStateBitmap=0xFFFFFFFF, const char *apOption="", uint64 auCharacteristics=0, uint16 auKeyLevel=cKeyLevelMin, bool abRegisterInco=true)
 Constructor. Does not take any parameter definition. They need to be provided later with AddParam. It does not add the command to the command registry.
 
virtual ~TINOSTaskExCmdDyn ()
 Destructor.
 
- Public Member Functions inherited from CINOSTaskExCmdBase
virtual void SetPreDispatcher (const CINOSTaskExCmdHookBase *apPreDispatchHook)
 Sets the pre dispatch callback which is called before a message is of this command is dispatched.
 
virtual void SetOnMsgDone (const CINOSTaskExCmdHookBase *apOnMsgDoneHook)
 Sets the OnMsgDone callback which is called when MsgDone is called on a message of this command.
 
virtual uint32 AddCommand (bool abDeleteOnRemove=false)
 Adds this command to the module it belongs to. And makes it therefore callable. This function also checks if the parameter definitions match the types declared in the template parameters.
 
virtual uint32 AddCommand (uint64 aChar, uint16 aKeyLevel, bool abRegisterInco=true, bool abDeleteOnRemove=false)
 Adds this command to the module it belongs to. And makes it therefore callable. This function also checks if the parameter definitions match the types declared in the template parameters.
 
CINOSTaskExMsgCreateMsg (CINOSSync *apSync=DF_INOS_SYNCHRONOUS)
 Create a message of this command. Can be used for manual, customized call.
 
const charGetOption () const
 Returns the option string of this command.
 
const charGetName ()
 Returns the name of this command.
 
void SetName (const char *apName)
 Returns the name of this command.
 
CINOSTaskExMsgGetMsg ()
 Returns the message of this command.
 
void SetTask (CINOSTaskEx *apTask)
 
void AddParam (const char *apName, real64 arValue, real64 arMin, real64 arMax, const char *apUnit="", uint32 auChar=0, uint32 auFlags=0)
 Adds a real64 param description. This function may only be used if the param description has not be provided in the constructor. The funcion needs to be called in the same order as the template type definition.
 
void AddParam (const char *apName, const char *apValue, const char *apComboData=nullptr, uint32 auFlags=0)
 Adds a string (char*) param description. This function may only be used if the param description has not be provided in the constructor. The funcion needs to be called in the same order as the template type definition.
 
void AddParam (const char *apName, bool abValue, uint32 auFlags=0)
 Adds a bool param description. This function may only be used if the param description has not be provided in the constructor. The funcion needs to be called in the same order as the template type definition.
 
void SetAllowedStates (uint32 auStateBitmap)
 Sets the states in which this command is allowed to be called.
 
int operator< (CINOSTaskExCmdBase &aTaskExMsg)
 binary tree operators
 
int operator== (CINOSTaskExCmdBase &aTaskExMsg)
 
int operator< (const char *aName)
 
int operator== (const char *aName)
 
virtual ~CINOSTaskExCmdBase ()
 Destructor.
 
void Claim ()
 Claims the object of this command. This ensures that in case this command.
 
void Release (CINOSTaskExMsg *apMsg=nullptr)
 Releases the object of this command. This ensures that in case this command.
 

Protected Member Functions

virtual void Dispatch (CINOSTaskExMsg *apMsg) override
 Dispatches a message if this command. Used by CINOSTaskEx.
 
virtual void DispatchTmd (CINOSTaskExMsg *apMsg) override
 Dispatches a timed message if this command. Used by CINOSTaskEx.
 
- Protected Member Functions inherited from CINOSTaskExCmdBase
bool PreDispatch (CINOSTaskExMsg *apMsg)
 Function is called by the module (CINOSTaskEx) before the message of this command is dispatched.
 
void OnMsgDone (CINOSTaskExMsg *apMsg, CINOSTaskExDef::ERplId aRplId, tMcAppError aAppError)
 Function is called by the module (CINOSTaskEx) when MsgDone is called on a message of this command.
 
 CINOSTaskExCmdBase (const char *apName, CINOSTaskEx *apTask, uint32 auStateBitmap, const char *apOption, uint64 auCharacteristics, uint16 auKeyLevel, bool abRegisterInco)
 Constructor (base constructor is protected, as this class is abstract)
 
bool CheckParams (size_t count,...)
 Checks if thie added parameters match the template definition.
 
virtual void DeleteCommand ()
 Deletes the object of this command, dispatch if called from.
 

Protected Attributes

ObjectTypem_pObject
 Object of this command.
 
- Protected Attributes inherited from CINOSTaskExCmdBase
CINOSTaskExm_pTask
 Task of this command.
 
tPreDispatchFunction m_pPreDispatchFunction = nullptr
 Function that is called before messages of this command are dispatched.
 
tOnMsgDoneFunction m_pMsgDoneFunction = nullptr
 Function that is called when MsgDone is called on messages of this command.
 
uint64 m_uCharacteristics = 0
 Characteristics of the INCO registration of this commands.
 
uint64 m_uIsStructureBitmap = 0
 Bitmap that defines if the parameter corresponding to the bit number is a structure.
 
uint16 m_uKeyLevel = cKeyLevelMin
 Key level of the INCO registration of this commands.
 
bool m_bRegisterInco = true
 Defines if this command is registered to the INCO tree if not.
 
CINOSTaskExMsg m_CommandMsg
 Prototype message for this command.
 
CINOSTaskExMsgm_pRegisterMsg = nullptr
 Register message for this command (in the task ex for INCO tree)
 
uint32 m_uAllowedStates
 Bitmap of states in which this command is allowed to be called.
 
const charm_pOption = nullptr
 Option(s) of the module which are required for this command to be added.
 
std::atomic_ulong m_uReferenceCount
 Reference count for dynamically created and added objects. If count is 0 the.
 

Detailed Description

template<class ObjectType>
class TINOSTaskExCmdDyn< ObjectType >

Class for dynamically created commands. As dynamic (programmatically) created code can not instantiate templates, this is a non template class. Instead its type specific methods are templates.

Member Typedef Documentation

◆ tCommandFunction

template<class ObjectType >
typedef void(ObjectType::* TINOSTaskExCmdDyn< ObjectType >::tCommandFunction) (CINOSTaskExMsg *apMsg)

Type of functions of this command. Functions of this type must be used in the constructor of this command.

Parameters
apMsgCINOSTaskExMsg message of the command call.

Constructor & Destructor Documentation

◆ TINOSTaskExCmdDyn()

template<class ObjectType >
TINOSTaskExCmdDyn< ObjectType >::TINOSTaskExCmdDyn ( const char apName,
tCommandFunction  apFunction,
tCommandFunction  apFunctionTmd,
ObjectType aObject,
uint32  auStateBitmap = 0xFFFFFFFF,
const char apOption = "",
uint64  auCharacteristics = 0,
uint16  auKeyLevel = cKeyLevelMin,
bool  abRegisterInco = true 
)
inline

Constructor. Does not take any parameter definition. They need to be provided later with AddParam. It does not add the command to the command registry.

Parameters
apNameconst char* name of the command.
apFunctiontCommandFunction main function of this command.
m_pFunctionTmdtCommandFunction timed function of this command
aTaskObjectType the CINOSTaskEx to which this command belongs. will be called imediatly when this command msg is putted into the queue even if the msg has a trigger.
auStateBitmapuint32 uint32 Bitmap of the allowed states, each bit represents if the according state. 1 = allowed, 0 = not-allowed.
Option(s)of the module which are required for this command to be added at startup. Options may be seperated by comma. Nullptr defines that the command is always registered. Empty string defines that is never registered at startup.
auCharacteristicsuint64 defines the characteristics of the item, e.g. defCharShowHex | defCharReadOnly
auKeyLeveluint16 defines the key level of the item, from cKeyLevelMin (default) to cKeyLevelMax.
abRegisterIncobool defines if the command should be registered to the inco tree.

Member Function Documentation

◆ Dispatch()

template<class ObjectType >
virtual void TINOSTaskExCmdDyn< ObjectType >::Dispatch ( CINOSTaskExMsg apMsg)
inlineoverrideprotectedvirtual

Dispatches a message if this command. Used by CINOSTaskEx.

Parameters
apMsgCINOSTaskExMsg* message to be dispatched.

Implements CINOSTaskExCmdBase.

◆ DispatchTmd()

template<class ObjectType >
virtual void TINOSTaskExCmdDyn< ObjectType >::DispatchTmd ( CINOSTaskExMsg apMsg)
inlineoverrideprotectedvirtual

Dispatches a timed message if this command. Used by CINOSTaskEx.

Parameters
apMsgCINOSTaskExMsg* message to be dispatched.

Implements CINOSTaskExCmdBase.

◆ operator()()

template<class ObjectType >
template<typename... ParamType>
CMcResult TINOSTaskExCmdDyn< ObjectType >::operator() ( ParamType...  Params,
CINOSSync apSync = DF_INOS_SYNCHRONOUS 
)
inline

Calls this command (dispatched). This function creates and puts a message of this command to the task ex of the command.

Parameters
Params...The parameters of this command as defined in the template definition.
apSyncCINOSSync* sync type or sync object

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