SharePacketHelper.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #ifndef __DAHUA_MEMORY_SHAREPACKETHELPER_H__
  2. #define __DAHUA_MEMORY_SHAREPACKETHELPER_H__
  3. #include "Memory/Packet.h"
  4. #include <string>
  5. namespace Dahua{
  6. namespace Memory{
  7. /// 参数基类
  8. struct BaseArg
  9. {
  10. BaseArg(uint32_t argType) : type(argType) {}
  11. uint32_t type;
  12. };
  13. /// 内存池参数
  14. struct SharePacketArg : public BaseArg
  15. {
  16. enum
  17. {
  18. MAP_POOL, ///< 映射共享内存(应用进程使用)
  19. INIT_POOL ///< 初始化共享内存(守护进程使用)
  20. };
  21. SharePacketArg(int type = MAP_POOL) : BaseArg(type) {}
  22. uint32_t poolSize; ///< 内存池大小
  23. std::string poolType; ///< "ShareMemory" or "AvMemory"
  24. uint32_t pageSize; ///< 页大小(buddy算法有关, 一次能申请的最小内存)
  25. uint32_t orderNum; ///< order数量(buddy算法有关,一次能申请的最大内存=(2^(order - 1))*pageSize)
  26. uint32_t debugMode; ///< 调试模式 0:正常版本 1:检测右边越界 2:检测左边越界
  27. };
  28. class MEMORY_API CSharePacketHelper
  29. {
  30. public:
  31. /// 获取实例
  32. static CSharePacketHelper* instance();
  33. /// \由原始数据包构造一个用于发送的描述信息包
  34. /// \param pkt [in] 原始数据包
  35. /// \return 描述信息CPacket
  36. /// \note 是否成功由CPacket的valid接口校验
  37. CPacket toDescribePacket(const CPacket& pkt);
  38. /// \由描述信息包还原出原始数据包
  39. /// \param pkt [in] 描述信息包
  40. /// \return 原始数据包
  41. /// \note 是否成功由CPacket的valid接口校验
  42. CPacket toOriginalPacket(const CPacket& pkt);
  43. /// \初始化共享内存
  44. /// \param [in] arg 初始化内存的参数
  45. /// \retval true 成功 false 失败
  46. bool initSharePacket(BaseArg * arg);
  47. };
  48. } // namespace Memory
  49. } // namespace Dahua
  50. #endif // end of __DAHUA_MEMORY_SHAREPACKETHELPER_H__