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;
152 if( m_uType == defType_pointer) {
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>
166 if(m_uType == defType_pointer) {
168 CINOSTaskExMsgParam::CPtrContainerBase* pContainer =
169 (CINOSTaskExMsgParam::CPtrContainerBase*)m_uValue;
172 if(*(pContainer->GetTypeInfo()) ==
typeid(T)) {
176 return ((CINOSTaskExMsgParam::CPtrContainer<T>*)pContainer)->Receive();
196 return m_pValue ? (*((T*)&m_pValue)) : (*((T*)&m_uValue));
201 template <
typename T>
203 if(m_uType != TINCOType<T>::eType) {
208 if(m_uType == defType_pointer) {
209 auto pContainer = (CINOSTaskExMsgParam::CPtrContainerBase*)m_uValue;
210 pContainer->SetPointer(aValue);
228 SetValue(&aValue,
sizeof(T),
false);
235 SetValue(value,
false);
242 {
if (m_pValue)
return m_pPartition->GetPartitionSize();
else return sizeof(m_uValue);};
243 void SetValue(
const char* apValue,
bool abInINCOVContext);
246 void SetValue(
const void* apValue,
const uint32 auDataLength,
bool abInINCOVContext);
247 void SetName(
const char* apName);
248 virtual void SetFlag(uint32 auFlag) {
251 virtual void ClearFlag(uint32 auFlag) {
254 bool IsNumber()
const
255 {
return (m_uType != defType_string);}
256 bool IsString()
const
257 {
return (m_uType == defType_string);}
281 const uint32 auBufferSize,
const uint32 auDataLength,
const bool abCut =
false)
const;
287 { m_pNext = apParam; }
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;
313 m_uType = TINCOType<T>::eType;
315 if(m_uType == defType_pointer) {
317 static_assert(
sizeof(CPtrContainer<T>) <=
sizeof(m_uValue),
"PtrContainer doesn't fit into preallocated buffer.");
318 m_uTypeSize =
sizeof(CPtrContainer<T>);
321 new (&(m_uValue)) CPtrContainer<T>(aValue);
339 m_uTypeSize =
sizeof(aValue);
341 SetValue(&aValue,
sizeof(T),
false);
347 m_pValue = NULL; m_uFlags = 0; m_pNext = 0;
349 m_uType = defType_string;
351 SetValue(aValue, abInINCOVContext);
356 m_pValue = NULL; m_uFlags = 0; m_pNext = 0;
358 m_uType = defType_string;
360 SetValue(aValue, abInINCOVContext);
364 : m_uFlags(std::move(a.m_uFlags)),
365 m_uType(std::move(a.m_uType)),
366 m_uTypeSize(std::move(a.m_uTypeSize)),
367 m_pValue(std::move(a.m_pValue)),
368 m_pPartition(std::move(a.m_pPartition)),
369 m_pNext(std::move(a.m_pNext))
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;
402 m_uTypeSize = 0; m_uType = defType_Invalid;
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) :
439 m_pTypeInfo(aTypeInfo) {};
441 virtual ~CPtrContainerBase() {};
444 virtual const void* GetPointer() = 0;
446 template <
typename T>
447 bool SetPointer(T pPointer) {
448 if(&
typeid(T) != m_pTypeInfo) {
451 iSetPointer(
reinterpret_cast<const void*
>(pPointer));
457 bool SetPointer(
double 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) :
483 CPtrContainerBase((const std::type_info*)NULL) {
ASSERT_ALWAYS(
false); };
484 virtual ~CPtrContainer() {};
493 virtual const void* GetPointer()
override {
return NULL; }
500 class CPtrContainer<T*> : CPtrContainerBase
503 explicit CPtrContainer(T* apPointer) :
504 CPtrContainerBase(&typeid(T*)),
505 m_pPointer(apPointer) {};
507 virtual ~CPtrContainer() {
515 T* pTemp = m_pPointer;
519 virtual const void* GetPointer()
override {
return m_pPointer; };
521 virtual void iSetPointer(
const void* pPointer)
override {
522 m_pPointer = (T*)pPointer;
532 class CPtrContainer<const T*> : CPtrContainerBase
535 explicit CPtrContainer(
const T* apPointer) :
536 CPtrContainerBase(&typeid(const T*)),
537 m_pPointer(apPointer) {};
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 {
546 m_pPointer = (T*)pPointer;
577class CINOSTaskExMsgParam::CPtrContainer<void*> : CINOSTaskExMsgParam::CPtrContainerBase
580 CPtrContainer() : CPtrContainerBase(NULL) {};
614 virtual real64 GetMinValue()
override {
return m_rMinValue;};
615 virtual void SetMinValue(real64 aMinValue) { m_rMinValue = aMinValue;};
617 virtual real64 GetMaxValue()
override {
return m_rMaxValue;};
618 virtual void SetMaxValue(real64 aMaxValue) { m_rMaxValue = aMaxValue;};
620 virtual const char* GetUnit()
override {
return m_pUnit != NULL ? m_pUnit :
"";};
621 virtual void SetUnit(
const char* apUnit);
623 virtual uint64 GetCharacteristics()
override {
return m_uCharacteristics;};
624 virtual void SetCharacteristics(uint64 auCharacteristics) { m_uCharacteristics = auCharacteristics;};
626 virtual const char* GetComboData()
override {
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 cinosmovepath.h:566
Definition cinospartitionmemory.h:157
Definition cinostaskexdef.h:70
Definition cinostaskexdef.h:610
virtual ~CINOSTaskExMsgDefaultParam()
destructor
CINOSTaskExMsgDefaultParam()
constructor
Definition cinostaskexdef.h:632
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 CINOSTaskExMsgParam * Clone() override
clone function (to be able to copy also derived member variables)
Definition cinostaskexdef.h:681
virtual const void * GetPointer() override
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
@ ePrintfFormatMaxSize
Definition cinostaskexdef.h:135
void AddPrintfFormat(char *&apDest, bool abWithReadabilitySupport)
Definition cinostaskex.h:396
Definition cinostaskex.h:966
uint32 INOS_OK
Definition inoserror.h:1681
#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