#ifndef IVRCONFIG_H
#define IVRCONFIG_H

#include <string>
#include <vector>
#include <utility>


struct DeviceInfo
{
    std::string name;
    std::string ip;
};


/**
 * @brief 配置加载结果
 */
struct ConfigResult
{
    std::vector<DeviceInfo>    cameraList;
    std::vector<DeviceInfo>    deviceList;
};

/**
 * @brief VrConfig接口类
 */
class IVrConfig
{
public:
    /**
     * @brief 虚析构函数
     */
    virtual ~IVrConfig() {}

    /**
     * @brief 创建实例
     * @return 实例
     */
    static bool CreateInstance(IVrConfig** ppVrConfig);

    /**
     * @brief 加载配置文件
     * @param filePath 配置文件路径
     * @return 加载的配置结果
     */
    virtual ConfigResult LoadConfig(const std::string& filePath) = 0;

    /**
     * @brief 保存配置文件
     * @param filePath 配置文件路径
     * @param configResult 配置结果
     * @return 是否保存成功
     */
    virtual bool SaveConfig(const std::string& filePath, ConfigResult& configResult) = 0;
};  

#endif // IVRCONFIG_H
