26#ifndef INC_CINOSTASKEXDEF_H
27#define INC_CINOSTASKEXDEF_H
55#define DF_INOS_TASKEX_MSG_PARAM_NAME_LENGTH 32
105 static constexpr char*
const s_pReplyIdStrings[CINOSTaskExDef::eRplTimeout + 1] = {
139 const char* GetName()
const
141 uint16 GetType()
const
149 {
return m_uTypeSize;};
150 const std::type_info* GetTypeInfo()
const;
155 return const_cast<void*
>(((CINOSTaskExMsgParam::CPtrContainerBase*)m_uValue)->GetPointer());
157 if (m_pValue)
return m_pValue;
else return m_uValue;
159 const void* GetValue()
const
163 template <
typename T>
168 CINOSTaskExMsgParam::CPtrContainerBase*
pContainer =
169 (CINOSTaskExMsgParam::CPtrContainerBase*)m_uValue;
176 return ((CINOSTaskExMsgParam::CPtrContainer<T>*)
pContainer)->Receive();
196 return m_pValue ? (*((
T*)&m_pValue)) : (*((
T*)&m_uValue));
201 template <
typename T>
209 auto pContainer = (CINOSTaskExMsgParam::CPtrContainerBase*)m_uValue;
228 SetValue(&
aValue,
sizeof(
T),
false);
235 SetValue(
value,
false);
242 {
if (m_pValue)
return m_pPartition->GetPartitionSize();
else return sizeof(m_uValue);};
247 void SetName(
const char*
apName);
251 virtual void ClearFlag(uint32
auFlag) {
254 bool IsNumber()
const
256 bool IsString()
const
289 eFlgMandatory = 0x00000001,
290 eFlgNoSubstitution = 0x00000002,
291 eFlgOversized = 0x00000004,
292 eFlgStructure = 0x0000008,
296 virtual real64 GetMinValue() {
return REAL64MIN;};
297 virtual real64 GetMaxValue() {
return REAL64MAX;};
298 virtual const char* GetUnit() {
return "";};
299 virtual uint64 GetCharacteristics() {
return 0;};
300 virtual const char* GetComboData() {
return NULL;};
309 template <
typename T>
311 m_pValue =
NULL; m_uFlags = 0; m_pNext = 0;
317 static_assert(
sizeof(
CPtrContainer<T>) <=
sizeof(m_uValue),
"PtrContainer doesn't fit into preallocated buffer.");
339 m_uTypeSize =
sizeof(
aValue);
341 SetValue(&
aValue,
sizeof(
T),
false);
347 m_pValue =
NULL; m_uFlags = 0; m_pNext = 0;
356 m_pValue =
NULL; m_uFlags = 0; m_pNext = 0;
366 m_uTypeSize(
std::
move(
a.m_uTypeSize)),
368 m_pPartition(
std::
move(
a.m_pPartition)),
373 memcpy(m_uValue,
a.m_uValue, m_uTypeSize);
385 void AllocExBuffer();
394 friend class CINOSEvtLogMsgArg;
395 friend class CMcResult;
396 friend class CMcResultStream;
401 { m_cName[0] = 0; m_uFlags = 0; m_pNext = 0; m_pValue = 0;
403 memset(m_uValue, 0,
sizeof(m_uValue));};
409 char m_cName[DF_INOS_TASKEX_MSG_PARAM_NAME_LENGTH];
411 char* m_pName = m_cName;
435 class CPtrContainerBase
438 CPtrContainerBase(
const std::type_info*
aTypeInfo) :
441 virtual ~CPtrContainerBase() {};
444 virtual const void* GetPointer() = 0;
446 template <
typename T>
448 if(&
typeid(
T) != m_pTypeInfo) {
451 iSetPointer(
reinterpret_cast<const void*
>(
pPointer));
462 const std::type_info* GetTypeInfo() {
return m_pTypeInfo; };
465 virtual void iSetPointer(
const void*
pPointer) = 0;
467 const std::type_info* m_pTypeInfo;
476 class CPtrContainer : CPtrContainerBase
479 virtual void iSetPointer(
const void*
pPointer)
override {};
482 explicit CPtrContainer(
T aValue) :
484 virtual ~CPtrContainer() {};
493 virtual const void* GetPointer()
override {
return NULL; }
500 class CPtrContainer<
T*> : CPtrContainerBase
504 CPtrContainerBase(&
typeid(
T*)),
507 virtual ~CPtrContainer() {
519 virtual const void* GetPointer()
override {
return m_pPointer; };
521 virtual void iSetPointer(
const void*
pPointer)
override {
532 class CPtrContainer<
const T*> : CPtrContainerBase
539 virtual ~CPtrContainer() {};
543 const T* Receive() {
return m_pPointer; }
544 virtual const void* GetPointer()
override {
return m_pPointer; }
545 virtual void iSetPointer(
const void*
pPointer)
override {
577class CINOSTaskExMsgParam::CPtrContainer<
void*> : CINOSTaskExMsgParam::CPtrContainerBase
580 CPtrContainer() : CPtrContainerBase(
NULL) {};
614 virtual real64 GetMinValue() {
return m_rMinValue;};
617 virtual real64 GetMaxValue() {
return m_rMaxValue;};
620 virtual const char* GetUnit() {
return m_pUnit !=
NULL ? m_pUnit :
"";};
621 virtual void SetUnit(
const char*
apUnit);
623 virtual uint64 GetCharacteristics() {
return m_uCharacteristics;};
626 virtual const char* GetComboData() {
return m_pComboData;};
627 virtual void SetComboData(
const char*
apComboData);
634 m_rMinValue(REAL64MIN),
635 m_rMaxValue(REAL64MAX),
636 m_uCharacteristics(0),
638 m_pComboData(
NULL) {};
642 m_rMinValue(
a.m_rMinValue),
643 m_rMaxValue(
a.m_rMaxValue),
644 m_uCharacteristics(
a.m_uCharacteristics),
649 SetComboData(
a.m_pComboData);
653 template <
typename T>
656 m_rMinValue(REAL64MIN),
657 m_rMaxValue(REAL64MAX),
658 m_uCharacteristics(0),
660 m_pComboData(
NULL) {};
665 m_rMinValue(REAL64MIN),
666 m_rMaxValue(REAL64MAX),
667 m_uCharacteristics(0),
669 m_pComboData(
NULL) {};
674 m_rMinValue(REAL64MIN),
675 m_rMaxValue(REAL64MAX),
676 m_uCharacteristics(0),
678 m_pComboData(
NULL) {};
691 uint64 m_uCharacteristics;
#define DECLARE_DYNAMIC(aClass)
Definition cinospartitionmemory.h:328
uint32 tMcAppError
Definition cinostaskexdef.h:53
Definition cinosmcmodule.h:1900
Definition cinosmovepath.h:566
Definition cinospartitionmemory.h:157
Definition cinostaskexdef.h:70
Definition cinostaskexdef.h:610
virtual ~CINOSTaskExMsgDefaultParam()
destructor
CINOSTaskExMsgDefaultParam()
constructor
Definition cinostaskexdef.h:632
virtual CINOSTaskExMsgParam * Clone()
clone function (to be able to copy also derived member variables)
Definition cinostaskexdef.h:681
CINOSTaskExMsgDefaultParam(const CINOSTaskExMsgDefaultParam &a)
copy constructor
Definition cinostaskexdef.h:640
CINOSTaskExMsgDefaultParam(char *aValue)
Definition cinostaskexdef.h:663
CINOSTaskExMsgDefaultParam(T aValue)
Definition cinostaskexdef.h:654
CINOSTaskExMsgDefaultParam(const char *aValue)
Definition cinostaskexdef.h:672
virtual const void * GetPointer()
Definition cinostaskexdef.h:585
Definition cinostaskexdef.h:129
uint32 GetValueBufferSize()
Definition cinostaskexdef.h:241
uint32 SetTypedValue(const char *value)
SetTypedValue, makes the cast internally.
Definition cinostaskexdef.h:234
void ToString(char *apDest, uint32 aSize)
Writes the string representation into the buffer, always 0 determinated.
T GetTypedValue() const
Definition cinostaskexdef.h:164
int32 ToINCOValue(uint16 *apINCOType, uint8 *apINCOValue, const uint32 auBufferSize, const uint32 auDataLength, const bool abCut=false) const
CINOSTaskExMsgParam(const char *aValue, const char *apName=NULL, bool abInINCOVContext=false)
Definition cinostaskexdef.h:355
virtual CINOSTaskExMsgParam * Clone()
clone function (to be able to copy also derived member variables)
Definition cinostaskexdef.h:378
CINOSTaskExMsgParam * GetNext() const
Definition cinostaskexdef.h:284
uint32 GetFlag()
get param flags
Definition cinostaskexdef.h:144
CINOSTaskExMsgParam(char *aValue, const char *apName=NULL, bool abInINCOVContext=false)
Definition cinostaskexdef.h:346
CINOSTaskExMsgParam(T aValue, const char *apName=NULL, bool abInINCOVContext=false)
Definition cinostaskexdef.h:310
uint32 SetTypedValue(T aValue)
SetTypedValue.
Definition cinostaskexdef.h:202
uint32 GetTypeSize() const
Definition cinostaskexdef.h:148
virtual ~CINOSTaskExMsgParam()
destructor
void SetValue(const void *apValue, const uint32 auDataLength, bool abInINCOVContext)
CINOSTaskExMsgParam(CINOSTaskExMsgParam &&a)
Move CTOR used by e.g. CINCOVServerSession::AsyncResultReady.
Definition cinostaskexdef.h:363
void AddPrintfFormat(char *&apDest, bool abWithReadabilitySupport)
@ ePrintfFormatMaxSize
Definition cinostaskexdef.h:135
Definition cinostaskex.h:396
Definition cinostaskex.h:966
uint32 INOS_OK
Definition inoserror.h:1677
#define INOS_OR(variable, mask)
Definition inosmacro.h:201
#define ASSERT_ALWAYS(f)
Definition inosmacro.h:696
#define INOS_AND(variable, mask)
Definition inosmacro.h:210