1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #pragma once
- #include "FunctionErrorCode.h"
- #include "FunctionDataTypeCommon.h"
- #include "AdvancedFunctionDataElement.h"
- #include <cstdint>
- #include <pthread.h>
- #include <string>
- #define SHAREMEMCLIENTDLL_CLASS_DECL
- #define INVALID_SHAREMEM_ID (uint64_t)~0
- class CShareMemInfo;
- class CBaseFunctionDataElement;
- class SHAREMEMCLIENTDLL_CLASS_DECL CShareMemClient
- {
- public:
- CShareMemClient();
- virtual ~CShareMemClient();
- unsigned short GetUserId(){ return m_dwUserId; };
- CBaseFunctionDataElement* CreateDataElement(FUNCTION_DATATYPE eDataType, const std::wstring& strName = L"");
- void ReleaseDataElement(CBaseFunctionDataElement* pDataElement);
- int Register();
- int UnRegister();
- int ReadShareMem(uint64_t dwShareMemId, CBaseFunctionDataElement** vecDataElement, unsigned int nBufferCount, unsigned int& nElementCount);
- int WriteShareMem(CBaseFunctionDataElement** vecDataElement, unsigned int nElementCount, unsigned long long& dwShareMemId);
-
- int ReleaseShareMem(unsigned int dwShareMemId);
- int ReleaseAllShareMem();
-
- private:
- static void EncodeId(unsigned short wUserId, unsigned int nShareMemId, unsigned short wContentId, uint64_t& dwShareMemId);
- static void DecodeId(uint64_t dwShareMemId, unsigned short& wUserId, unsigned int& nShareMemId, unsigned short& wContentId);
- unsigned short m_dwUserId;
- CShareMemInfo* m_ShareMemInfo;
- unsigned int m_dwShareMemCounter;
- pthread_mutex_t m_ShareMemCounterCritical;//CRITICAL_SECTIONÌæ»»Îªpthread_mutex_t
- unsigned short m_dwContentCounter;
- pthread_mutex_t m_ContentCounterCritical;
- };
|