Ipc config backup.

This commit is contained in:
fancy 2023-09-16 08:36:11 -07:00
parent 0e8ecc75d4
commit a60d476935
3 changed files with 55 additions and 3 deletions

View File

@ -16,6 +16,7 @@ public:
virtual const StatusCode Init(void) { return CreateStatusCode(STATUS_CODE_OK); } virtual const StatusCode Init(void) { return CreateStatusCode(STATUS_CODE_OK); }
virtual const StatusCode UnInit(void) { return CreateStatusCode(STATUS_CODE_OK); } virtual const StatusCode UnInit(void) { return CreateStatusCode(STATUS_CODE_OK); }
virtual const int GetInt(const IpcConfigKey &key) { return -1; } virtual const int GetInt(const IpcConfigKey &key) { return -1; }
virtual void SetInt(const IpcConfigKey &key, const int &value) {}
}; };
bool CreateIpcConfig(void); bool CreateIpcConfig(void);
#endif #endif

View File

@ -1,6 +1,17 @@
#include "IpcConfig.h" #include "IpcConfig.h"
#include "ILog.h" #include "ILog.h"
#include <string.h> #include <string.h>
// #include <utility>
IpcConfig::IpcConfig()
{
mCfgChanged = CONFIG_HAS_NOT_CHANGED;
mCfgMapInt.insert(
std::make_pair<
IpcConfigKey,
std::reference_wrapper<int>>(
IpcConfigKey::TEST_NUM,
std::reference_wrapper<int>(mAllData.testNum)));
}
const StatusCode IpcConfig::Init(void) const StatusCode IpcConfig::Init(void)
{ {
memset(&mAllData, 0, sizeof(Config_s)); memset(&mAllData, 0, sizeof(Config_s));
@ -15,12 +26,38 @@ const StatusCode IpcConfig::Init(void)
} }
const StatusCode IpcConfig::UnInit(void) const StatusCode IpcConfig::UnInit(void)
{ {
if (CONFIG_HAS_CHANGED == mCfgChanged)
{
LogInfo("Save config files.\n");
ConfigSaveFile(mCfg);
}
CloseConfigFile(mCfg); CloseConfigFile(mCfg);
return CreateStatusCode(STATUS_CODE_OK); return CreateStatusCode(STATUS_CODE_OK);
} }
const int IpcConfig::GetInt(const IpcConfigKey &key) const int IpcConfig::GetInt(const IpcConfigKey &key)
{ {
return 0; std::map<IpcConfigKey, std::reference_wrapper<int>>::iterator iter;
iter = mCfgMapInt.find(key);
if (iter != mCfgMapInt.end())
{
return iter->second;
}
LogError("Can't find the key.\n");
constexpr int UNKNOWN_CONFIG = -1;
return UNKNOWN_CONFIG;
}
void IpcConfig::SetInt(const IpcConfigKey &key, const int &value)
{
std::map<IpcConfigKey, std::reference_wrapper<int>>::iterator iter;
iter = mCfgMapInt.find(key);
if (iter != mCfgMapInt.end())
{
iter->second.get() = value;
}
else
{
LogError("Can't find the key.\n");
}
} }
void IpcConfig::ReadAllConfigParameters(void) void IpcConfig::ReadAllConfigParameters(void)
{ {
@ -30,7 +67,7 @@ void IpcConfig::ReadAllConfigParameters(void)
{ {
LogWarning("test_num doesn't exist, will make it as default.\n"); LogWarning("test_num doesn't exist, will make it as default.\n");
configChanging = true; configChanging = true;
constexpr int DEFAULT_TEST_NUM = 0; constexpr int DEFAULT_TEST_NUM = 10;
mAllData.testNum = DEFAULT_TEST_NUM; mAllData.testNum = DEFAULT_TEST_NUM;
ConfigSetInt(mCfg, "test_num", mAllData.testNum); ConfigSetInt(mCfg, "test_num", mAllData.testNum);
} }

View File

@ -4,24 +4,38 @@
#include "IIpcConfig.h" #include "IIpcConfig.h"
#include "Config.h" #include "Config.h"
#include <memory> #include <memory>
#include <map>
constexpr bool CONFIG_HAS_CHANGED = true;
constexpr bool CONFIG_HAS_NOT_CHANGED = false;
typedef struct Config_s typedef struct Config_s
{ {
int testNum; int testNum;
} Config_s; } Config_s;
class MapInt
{
public:
MapInt() = default;
~MapInt() = default;
};
class IpcConfig : public IIpcConfig class IpcConfig : public IIpcConfig
{ {
public: public:
IpcConfig() = default; IpcConfig();
virtual ~IpcConfig() = default; virtual ~IpcConfig() = default;
const StatusCode Init(void) override; const StatusCode Init(void) override;
const StatusCode UnInit(void) override; const StatusCode UnInit(void) override;
const int GetInt(const IpcConfigKey &key) override; const int GetInt(const IpcConfigKey &key) override;
void SetInt(const IpcConfigKey &key, const int &value) override;
private: private:
void ReadAllConfigParameters(void); void ReadAllConfigParameters(void);
private: private:
bool mCfgChanged;
VConfig *mCfg; VConfig *mCfg;
Config_s mAllData; Config_s mAllData;
std::map<IpcConfigKey, std::reference_wrapper<int>> mCfgMapInt;
std::map<IpcConfigKey, std::reference_wrapper<long int>> mCfgMapUInt;
std::map<IpcConfigKey, std::reference_wrapper<std::string>> mCfgMapString;
}; };
#endif #endif