GrabBag/Module/ShareMem/Inc/IVrShareMem.h

105 lines
3.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef IVRSHAREMEM_H
#define IVRSHAREMEM_H
#include <string>
#include "VrShareMem_global.h"
/**
* @brief 共享内存接口类
* 提供跨平台的共享内存创建、映射、读写操作
*/
class VRSHAREMEM_EXPORT IVrShareMem
{
public:
virtual ~IVrShareMem() = default;
/**
* @brief 创建或打开共享内存区域
* @param name 共享内存名称
* @param size 内存大小(字节)
* @param create 是否创建新的共享内存true创建false打开已存在的
* @return 成功返回SUCCESS(0)失败返回VrError.h中定义的错误码
*/
virtual int CreateOrOpen(const std::string& name, size_t size, bool create = true) = 0;
/**
* @brief 将共享内存映射到当前进程地址空间
* @return 成功返回映射地址失败返回nullptr
*/
virtual void* MapView() = 0;
/**
* @brief 取消内存映射
* @return 成功返回SUCCESS(0)失败返回VrError.h中定义的错误码
*/
virtual int UnmapView() = 0;
/**
* @brief 关闭共享内存句柄
* @return 成功返回SUCCESS(0)失败返回VrError.h中定义的错误码
*/
virtual int Close() = 0;
/**
* @brief 获取共享内存大小
* @return 内存大小(字节)
*/
virtual size_t GetSize() const = 0;
/**
* @brief 获取映射地址
* @return 映射地址未映射返回nullptr
*/
virtual void* GetMappedAddress() const = 0;
/**
* @brief 检查共享内存是否有效
* @return 有效返回true无效返回false
*/
virtual bool IsValid() const = 0;
/**
* @brief 写入数据到共享内存
* @param offset 偏移量
* @param data 数据指针
* @param size 数据大小
* @return 成功返回写入的字节数失败返回VrError.h中定义的错误码
*/
virtual int WriteData(size_t offset, const void* data, size_t size) = 0;
/**
* @brief 从共享内存读取数据
* @param offset 偏移量
* @param buffer 输出缓冲区
* @param size 读取大小
* @return 成功返回读取的字节数失败返回VrError.h中定义的错误码
*/
virtual int ReadData(size_t offset, void* buffer, size_t size) = 0;
/**
* @brief 锁定共享内存(用于同步)
* @param timeout 超时时间(毫秒),-1表示无限等待
* @return 成功返回SUCCESS(0)失败返回VrError.h中定义的错误码
*/
virtual int Lock(int timeout = -1) = 0;
/**
* @brief 解锁共享内存
* @return 成功返回SUCCESS(0)失败返回VrError.h中定义的错误码
*/
virtual int Unlock() = 0;
};
/**
* @brief 创建共享内存实例
* @return 共享内存实例指针
*/
VRSHAREMEM_EXPORT IVrShareMem* CreateShareMemInstance();
/**
* @brief 销毁共享内存实例
* @param instance 实例指针
*/
VRSHAREMEM_EXPORT void DestroyShareMemInstance(IVrShareMem* instance);
#endif // IVRSHAREMEM_H