ShareMemClientInterface.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include "FunctionErrorCode.h"
  3. #include "FunctionDataTypeCommon.h"
  4. #include "AdvancedFunctionDataElement.h"
  5. #include <cstdint>
  6. #include <pthread.h>
  7. #include <string>
  8. #define SHAREMEMCLIENTDLL_CLASS_DECL
  9. #define INVALID_SHAREMEM_ID (uint64_t)~0
  10. class CShareMemInfo;
  11. class CBaseFunctionDataElement;
  12. class SHAREMEMCLIENTDLL_CLASS_DECL CShareMemClient
  13. {
  14. public:
  15. CShareMemClient();
  16. virtual ~CShareMemClient();
  17. unsigned short GetUserId(){ return m_dwUserId; };
  18. CBaseFunctionDataElement* CreateDataElement(FUNCTION_DATATYPE eDataType, const std::wstring& strName = L"");
  19. void ReleaseDataElement(CBaseFunctionDataElement* pDataElement);
  20. int Register();
  21. int UnRegister();
  22. int ReadShareMem(uint64_t dwShareMemId, CBaseFunctionDataElement** vecDataElement, unsigned int nBufferCount, unsigned int& nElementCount);
  23. int WriteShareMem(CBaseFunctionDataElement** vecDataElement, unsigned int nElementCount, unsigned long long& dwShareMemId);
  24. int ReleaseShareMem(unsigned int dwShareMemId);
  25. int ReleaseAllShareMem();
  26. private:
  27. static void EncodeId(unsigned short wUserId, unsigned int nShareMemId, unsigned short wContentId, uint64_t& dwShareMemId);
  28. static void DecodeId(uint64_t dwShareMemId, unsigned short& wUserId, unsigned int& nShareMemId, unsigned short& wContentId);
  29. unsigned short m_dwUserId;
  30. CShareMemInfo* m_ShareMemInfo;
  31. unsigned int m_dwShareMemCounter;
  32. pthread_mutex_t m_ShareMemCounterCritical;//CRITICAL_SECTIONÌæ»»Îªpthread_mutex_t
  33. unsigned short m_dwContentCounter;
  34. pthread_mutex_t m_ContentCounterCritical;
  35. };