26#ifndef INC_CINOSTASKEXDEF_H
27#define INC_CINOSTASKEXDEF_H
56#define DF_INOS_TASKEX_MSG_PARAM_NAME_LENGTH 32
106 static constexpr char*
const s_pReplyIdStrings[CINOSTaskExDef::eRplTimeout + 1] = {
140 const char* GetName()
const
142 uint16 GetType()
const
150 {
return m_uTypeSize;};
151 const std::type_info* GetTypeInfo()
const;
153 if( m_uType == defType_pointer) {
156 return const_cast<void*
>(((CINOSTaskExMsgParam::CPtrContainerBase*)m_uValue)->GetPointer());
158 if (m_pValue)
return m_pValue;
else return m_uValue;
160 const void* GetValue()
const
164 template <
typename T>
167 if(m_uType == defType_pointer) {
169 CINOSTaskExMsgParam::CPtrContainerBase* pContainer =
170 (CINOSTaskExMsgParam::CPtrContainerBase*)m_uValue;
173 if(*(pContainer->GetTypeInfo()) ==
typeid(T)) {
177 return ((CINOSTaskExMsgParam::CPtrContainer<T>*)pContainer)->Receive();
197 return m_pValue ? (*((T*)&m_pValue)) : (*((T*)&m_uValue));
202 template <
typename T>
204 if(m_uType != TINCOType<T>::eType) {
209 if(m_uType == defType_pointer) {
210 auto pContainer = (CINOSTaskExMsgParam::CPtrContainerBase*)m_uValue;
211 pContainer->SetPointer(aValue);
229 SetValue(&aValue,
sizeof(T),
false);
236 SetValue(value,
false);
243 {
if (m_pValue)
return m_pPartition->GetPartitionSize();
else return sizeof(m_uValue);};
244 void SetValue(
const char* apValue,
bool abInINCOVContext);
247 void SetValue(
const void* apValue,
const uint32 auDataLength,
bool abInINCOVContext);
248 void SetName(
const char* apName);
249 virtual void SetFlag(uint32 auFlag) {
252 virtual void ClearFlag(uint32 auFlag) {
255 bool IsNumber()
const
256 {
return (m_uType != defType_string);}
257 bool IsString()
const
258 {
return (m_uType == defType_string);}
282 const uint32 auBufferSize,
const uint32 auDataLength,
const bool abCut =
false)
const;
288 { m_pNext = apParam; }
290 eFlgMandatory = 0x00000001,
291 eFlgNoSubstitution = 0x00000002,
292 eFlgOversized = 0x00000004,
293 eFlgStructure = 0x0000008,
297 virtual real64 GetMinValue() {
return REAL64MIN;};
298 virtual real64 GetMaxValue() {
return REAL64MAX;};
299 virtual const char* GetUnit() {
return "";};
300 virtual uint64 GetCharacteristics() {
return 0;};
301 virtual const char* GetComboData() {
return NULL;};
310 template <
typename T>
312 m_pValue = NULL; m_uFlags = 0; m_pNext = 0;
314 m_uType = TINCOType<T>::eType;
316 if(m_uType == defType_pointer) {
318 static_assert(
sizeof(CPtrContainer<T>) <=
sizeof(m_uValue),
"PtrContainer doesn't fit into preallocated buffer.");
319 m_uTypeSize =
sizeof(CPtrContainer<T>);
322 new (&(m_uValue)) CPtrContainer<T>(std::move(aValue));
340 m_uTypeSize =
sizeof(aValue);
342 SetValue(&aValue,
sizeof(T),
false);
348 m_pValue = NULL; m_uFlags = 0; m_pNext = 0;
350 m_uType = defType_string;
352 SetValue(aValue, abInINCOVContext);
357 m_pValue = NULL; m_uFlags = 0; m_pNext = 0;
359 m_uType = defType_string;
361 SetValue(aValue, abInINCOVContext);
365 : m_uFlags(std::move(a.m_uFlags)),
366 m_uType(std::move(a.m_uType)),
367 m_uTypeSize(std::move(a.m_uTypeSize)),
368 m_pValue(std::move(a.m_pValue)),
369 m_pPartition(std::move(a.m_pPartition)),
370 m_pNext(std::move(a.m_pNext))
374 memcpy(m_uValue, a.m_uValue, m_uTypeSize);
386 void AllocExBuffer();
395 friend class CINOSEvtLogMsgArg;
396 friend class CMcResult;
397 friend class CMcResultStream;
398 friend class CINOSMovePath;
402 { m_cName[0] = 0; m_uFlags = 0; m_pNext = 0; m_pValue = 0;
403 m_uTypeSize = 0; m_uType = defType_Invalid;
404 memset(m_uValue, 0,
sizeof(m_uValue));};
410 char m_cName[DF_INOS_TASKEX_MSG_PARAM_NAME_LENGTH];
412 char* m_pName = m_cName;
436 class CPtrContainerBase
439 CPtrContainerBase(
const std::type_info* aTypeInfo) :
440 m_pTypeInfo(aTypeInfo) {};
442 virtual ~CPtrContainerBase() {};
445 virtual const void* GetPointer() {
return nullptr; };
447 template <
typename T>
448 bool SetPointer(T pPointer) {
449 if(&
typeid(T) != m_pTypeInfo) {
452 reinterpret_cast<CPtrContainer<T>*
>(
this)->iSetPointer(pPointer);
458 bool SetPointer(
double pPointer) {
463 const std::type_info* GetTypeInfo() {
return m_pTypeInfo; };
465 const std::type_info* m_pTypeInfo;
474 class CPtrContainer : CPtrContainerBase
478 explicit CPtrContainer(T aValue) :
479 CPtrContainerBase((const std::type_info*)NULL) {
ASSERT_ALWAYS(
false); };
480 virtual ~CPtrContainer() {};
491 virtual void iSetPointer(T pPointer) {};
499 class CPtrContainer<T*> : CPtrContainerBase
502 explicit CPtrContainer(T* apPointer) :
503 CPtrContainerBase(&typeid(T*)),
504 m_pPointer(apPointer) {};
506 virtual ~CPtrContainer() {
514 T* pTemp = m_pPointer;
518 virtual const void* GetPointer()
override {
return m_pPointer; };
520 virtual void iSetPointer(T* pPointer) {
523 m_pPointer = (T*)pPointer;
533 class CPtrContainer<const T*> : CPtrContainerBase
536 explicit CPtrContainer(
const T* apPointer) :
537 CPtrContainerBase(&typeid(const T*)),
538 m_pPointer(apPointer) {};
540 virtual ~CPtrContainer() {};
544 const T* Receive() {
return m_pPointer; }
545 virtual const void* GetPointer()
override {
return m_pPointer; }
546 virtual void iSetPointer(
const T* pPointer) {
547 m_pPointer = (T*)pPointer;
557 class CPtrContainer<std::shared_ptr<T>> : CPtrContainerBase
560 explicit CPtrContainer(std::shared_ptr<T> apPointer) :
561 CPtrContainerBase(&typeid(std::shared_ptr<T>)),
562 m_ShrdPtr(std::move(apPointer)) {};
564 virtual ~CPtrContainer() {};
567 std::shared_ptr<T> Receive() {
return m_ShrdPtr; }
569 virtual void iSetPointer(std::shared_ptr<T> pPointer) {
574 std::shared_ptr<T> m_ShrdPtr;
601class CINOSTaskExMsgParam::CPtrContainer<void*> : CINOSTaskExMsgParam::CPtrContainerBase
604 CPtrContainer() : CPtrContainerBase(NULL) {};
638 virtual real64 GetMinValue()
override {
return m_rMinValue;};
639 virtual void SetMinValue(real64 aMinValue) { m_rMinValue = aMinValue;};
641 virtual real64 GetMaxValue()
override {
return m_rMaxValue;};
642 virtual void SetMaxValue(real64 aMaxValue) { m_rMaxValue = aMaxValue;};
644 virtual const char* GetUnit()
override {
return m_pUnit != NULL ? m_pUnit :
"";};
645 virtual void SetUnit(
const char* apUnit);
647 virtual uint64 GetCharacteristics()
override {
return m_uCharacteristics;};
648 virtual void SetCharacteristics(uint64 auCharacteristics) { m_uCharacteristics = auCharacteristics;};
650 virtual const char* GetComboData()
override {
return m_pComboData;};
651 virtual void SetComboData(
const char* apComboData);
658 m_rMinValue(REAL64MIN),
659 m_rMaxValue(REAL64MAX),
660 m_uCharacteristics(0),
662 m_pComboData(NULL) {};
666 m_rMinValue(a.m_rMinValue),
667 m_rMaxValue(a.m_rMaxValue),
668 m_uCharacteristics(a.m_uCharacteristics),
673 SetComboData(a.m_pComboData);
677 template <
typename T>
680 m_rMinValue(REAL64MIN),
681 m_rMaxValue(REAL64MAX),
682 m_uCharacteristics(0),
684 m_pComboData(NULL) {};
689 m_rMinValue(REAL64MIN),
690 m_rMaxValue(REAL64MAX),
691 m_uCharacteristics(0),
693 m_pComboData(NULL) {};
698 m_rMinValue(REAL64MIN),
699 m_rMaxValue(REAL64MAX),
700 m_uCharacteristics(0),
702 m_pComboData(NULL) {};
715 uint64 m_uCharacteristics;
#define DECLARE_DYNAMIC(aClass)
Definition cinospartitionmemory.h:328
uint32 tMcAppError
Definition cinostaskexdef.h:54
Definition cinospartitionmemory.h:157
Definition cinostaskexdef.h:71
Definition cinostaskexdef.h:634
virtual ~CINOSTaskExMsgDefaultParam()
destructor
CINOSTaskExMsgDefaultParam()
constructor
Definition cinostaskexdef.h:656
CINOSTaskExMsgDefaultParam(const CINOSTaskExMsgDefaultParam &a)
copy constructor
Definition cinostaskexdef.h:664
CINOSTaskExMsgDefaultParam(char *aValue)
Definition cinostaskexdef.h:687
CINOSTaskExMsgDefaultParam(T aValue)
Definition cinostaskexdef.h:678
CINOSTaskExMsgDefaultParam(const char *aValue)
Definition cinostaskexdef.h:696
virtual CINOSTaskExMsgParam * Clone() override
clone function (to be able to copy also derived member variables)
Definition cinostaskexdef.h:705
virtual const void * GetPointer() override
Definition cinostaskexdef.h:609
Definition cinostaskexdef.h:130
uint32 GetValueBufferSize()
Definition cinostaskexdef.h:242
uint32 SetTypedValue(const char *value)
SetTypedValue, makes the cast internally.
Definition cinostaskexdef.h:235
void ToString(char *apDest, uint32 aSize)
Writes the string representation into the buffer, always 0 determinated.
T GetTypedValue() const
Definition cinostaskexdef.h:165
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:356
virtual CINOSTaskExMsgParam * Clone()
clone function (to be able to copy also derived member variables)
Definition cinostaskexdef.h:379
CINOSTaskExMsgParam * GetNext() const
Definition cinostaskexdef.h:285
@ ePrintfFormatMaxSize
Definition cinostaskexdef.h:136
uint32 GetFlag()
get param flags
Definition cinostaskexdef.h:145
CINOSTaskExMsgParam(char *aValue, const char *apName=NULL, bool abInINCOVContext=false)
Definition cinostaskexdef.h:347
CINOSTaskExMsgParam(T aValue, const char *apName=NULL, bool abInINCOVContext=false)
Definition cinostaskexdef.h:311
uint32 SetTypedValue(T aValue)
SetTypedValue.
Definition cinostaskexdef.h:203
uint32 GetTypeSize() const
Definition cinostaskexdef.h:149
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:364
void AddPrintfFormat(char *&apDest, bool abWithReadabilitySupport)
Definition cinostaskex.h:396
Definition cinostaskex.h:966
uint32 INOS_OK
Definition inoserror.h:1726
#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