71 lines
1.7 KiB
C
71 lines
1.7 KiB
C
|
|
#ifndef GALAXYSDKMANAGER_H
|
|||
|
|
#define GALAXYSDKMANAGER_H
|
|||
|
|
|
|||
|
|
#include <mutex>
|
|||
|
|
#include <atomic>
|
|||
|
|
|
|||
|
|
// Galaxy SDK 头文件
|
|||
|
|
#ifdef _WIN32
|
|||
|
|
// Windows 平台使用 C++ API
|
|||
|
|
#define _WINSOCKAPI_ // 防止winsock.h被包含,避免与winsock2.h冲突
|
|||
|
|
#include "GXIAPIBase.h"
|
|||
|
|
#include "IGXFactory.h"
|
|||
|
|
using namespace GxIAPICPP;
|
|||
|
|
#else
|
|||
|
|
// Linux/ARM 平台使用 C API
|
|||
|
|
#include "GxIAPI.h"
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief GalaxySDKManager 单例类
|
|||
|
|
* 管理大恒Galaxy SDK的全局初始化和反初始化
|
|||
|
|
* 使用引用计数确保SDK在所有设备关闭后才反初始化
|
|||
|
|
*/
|
|||
|
|
class GalaxySDKManager
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
/**
|
|||
|
|
* @brief 获取单例实例
|
|||
|
|
* @return 单例实例引用
|
|||
|
|
*/
|
|||
|
|
static GalaxySDKManager& GetInstance();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 初始化SDK(引用计数+1)
|
|||
|
|
* @return 0-成功,其他-失败
|
|||
|
|
*/
|
|||
|
|
int InitSDK();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 反初始化SDK(引用计数-1,为0时真正反初始化)
|
|||
|
|
* @return 0-成功,其他-失败
|
|||
|
|
*/
|
|||
|
|
int UninitSDK();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 检查SDK是否已初始化
|
|||
|
|
* @return true-已初始化,false-未初始化
|
|||
|
|
*/
|
|||
|
|
bool IsSDKInitialized() const;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief 获取当前引用计数
|
|||
|
|
* @return 引用计数
|
|||
|
|
*/
|
|||
|
|
int GetRefCount() const;
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
GalaxySDKManager();
|
|||
|
|
~GalaxySDKManager();
|
|||
|
|
|
|||
|
|
// 禁止拷贝和赋值
|
|||
|
|
GalaxySDKManager(const GalaxySDKManager&) = delete;
|
|||
|
|
GalaxySDKManager& operator=(const GalaxySDKManager&) = delete;
|
|||
|
|
|
|||
|
|
std::mutex m_mutex; // 互斥锁
|
|||
|
|
std::atomic<int> m_refCount; // 引用计数
|
|||
|
|
bool m_bSDKInitialized; // SDK是否已初始化
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#endif // GALAXYSDKMANAGER_H
|