[zhoulongyu]: 完成配置库的long数据类型
This commit is contained in:
parent
9f07183680
commit
e6b0040e7b
|
@ -23,6 +23,7 @@ enum class IpcConfigKey
|
||||||
{
|
{
|
||||||
TEST_NUM = 0,
|
TEST_NUM = 0,
|
||||||
TEST_SHORT,
|
TEST_SHORT,
|
||||||
|
TEST_LONG,
|
||||||
TEST_STRING,
|
TEST_STRING,
|
||||||
END
|
END
|
||||||
};
|
};
|
||||||
|
|
|
@ -30,6 +30,10 @@ IpcConfig::IpcConfig()
|
||||||
innerMapShort.insert(std::make_pair("test_short", std::reference_wrapper<short>(mAllData.testShort)));
|
innerMapShort.insert(std::make_pair("test_short", std::reference_wrapper<short>(mAllData.testShort)));
|
||||||
mCfgMapShort.insert(std::make_pair(IpcConfigKey::TEST_SHORT, innerMapShort));
|
mCfgMapShort.insert(std::make_pair(IpcConfigKey::TEST_SHORT, innerMapShort));
|
||||||
|
|
||||||
|
std::map<std::string, std::reference_wrapper<long>> innerMapLong;
|
||||||
|
innerMapLong.insert(std::make_pair("test_long", std::reference_wrapper<long>(mAllData.testLong)));
|
||||||
|
mCfgMapLong.insert(std::make_pair(IpcConfigKey::TEST_LONG, innerMapLong));
|
||||||
|
|
||||||
std::map<std::string, std::reference_wrapper<CHAR_STRING>> innerMapString;
|
std::map<std::string, std::reference_wrapper<CHAR_STRING>> innerMapString;
|
||||||
innerMapString.insert(std::make_pair("test_string", std::reference_wrapper<CHAR_STRING>(mAllData.testString)));
|
innerMapString.insert(std::make_pair("test_string", std::reference_wrapper<CHAR_STRING>(mAllData.testString)));
|
||||||
mCfgMapString.insert(std::make_pair(IpcConfigKey::TEST_STRING, innerMapString));
|
mCfgMapString.insert(std::make_pair(IpcConfigKey::TEST_STRING, innerMapString));
|
||||||
|
@ -108,10 +112,10 @@ void IpcConfig::SetShort(const IpcConfigKey &key, const short &value)
|
||||||
}
|
}
|
||||||
const long IpcConfig::GetLong(const IpcConfigKey &key)
|
const long IpcConfig::GetLong(const IpcConfigKey &key)
|
||||||
{
|
{
|
||||||
std::map<IpcConfigKey, std::reference_wrapper<long>>::iterator iter;
|
std::map<IpcConfigKey, std::map<std::string, std::reference_wrapper<long>>>::iterator iter;
|
||||||
iter = mCfgMapLong.find(key);
|
iter = mCfgMapLong.find(key);
|
||||||
if (iter != mCfgMapLong.end()) {
|
if (iter != mCfgMapLong.end() && CHECK_MAP(iter->second)) {
|
||||||
return iter->second;
|
return iter->second.begin()->second;
|
||||||
}
|
}
|
||||||
LogError("Can't find the key.\n");
|
LogError("Can't find the key.\n");
|
||||||
constexpr long UNKNOWN_CONFIG = -1;
|
constexpr long UNKNOWN_CONFIG = -1;
|
||||||
|
@ -119,10 +123,12 @@ const long IpcConfig::GetLong(const IpcConfigKey &key)
|
||||||
}
|
}
|
||||||
void IpcConfig::SetLong(const IpcConfigKey &key, const long &value)
|
void IpcConfig::SetLong(const IpcConfigKey &key, const long &value)
|
||||||
{
|
{
|
||||||
std::map<IpcConfigKey, std::reference_wrapper<long>>::iterator iter;
|
std::map<IpcConfigKey, std::map<std::string, std::reference_wrapper<long>>>::iterator iter;
|
||||||
iter = mCfgMapLong.find(key);
|
iter = mCfgMapLong.find(key);
|
||||||
if (iter != mCfgMapLong.end()) {
|
if (iter != mCfgMapLong.end() && CHECK_MAP(iter->second)) {
|
||||||
iter->second.get() = value;
|
iter->second.begin()->second.get() = value;
|
||||||
|
const char *name = iter->second.begin()->first.c_str(); // const std::strinbg --> const char *
|
||||||
|
ConfigSetLong(mCfg, name, iter->second.begin()->second);
|
||||||
mCfgChanged = CONFIG_HAS_CHANGED;
|
mCfgChanged = CONFIG_HAS_CHANGED;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -314,6 +320,15 @@ void IpcConfig::ReadAllConfigParameters(void)
|
||||||
ConfigSetShort(mCfg, "test_short", mAllData.testShort);
|
ConfigSetShort(mCfg, "test_short", mAllData.testShort);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StatusCode longCode = ConfigGetLong(mCfg, "test_long", &(mAllData.testLong));
|
||||||
|
if (StatusCodeEqual(longCode, "CONFIG_CODE_PARAM_NOT_EXIST")) {
|
||||||
|
LogWarning("test_long doesn't exist, will make it as default.\n");
|
||||||
|
mCfgChanged = CONFIG_HAS_CHANGED;
|
||||||
|
constexpr short DEFAULT_TEST_LONG_NUM = 12;
|
||||||
|
mAllData.testLong = DEFAULT_TEST_LONG_NUM;
|
||||||
|
ConfigSetLong(mCfg, "test_long", mAllData.testLong);
|
||||||
|
}
|
||||||
|
|
||||||
const char *testString = NULL;
|
const char *testString = NULL;
|
||||||
StatusCode stringCode = ConfigGetString(mCfg, "test_string", &(testString));
|
StatusCode stringCode = ConfigGetString(mCfg, "test_string", &(testString));
|
||||||
if (StatusCodeEqual(stringCode, "CONFIG_CODE_PARAM_NOT_EXIST")) {
|
if (StatusCodeEqual(stringCode, "CONFIG_CODE_PARAM_NOT_EXIST")) {
|
||||||
|
|
|
@ -27,6 +27,7 @@ typedef struct Config_s
|
||||||
{
|
{
|
||||||
int testNum;
|
int testNum;
|
||||||
short testShort;
|
short testShort;
|
||||||
|
long testLong;
|
||||||
CHAR_STRING testString;
|
CHAR_STRING testString;
|
||||||
} Config_s;
|
} Config_s;
|
||||||
class MapInt
|
class MapInt
|
||||||
|
@ -73,7 +74,7 @@ private:
|
||||||
Config_s mAllData;
|
Config_s mAllData;
|
||||||
std::map<IpcConfigKey, std::map<std::string, std::reference_wrapper<int>>> mCfgMapInt;
|
std::map<IpcConfigKey, std::map<std::string, std::reference_wrapper<int>>> mCfgMapInt;
|
||||||
std::map<IpcConfigKey, std::map<std::string, std::reference_wrapper<short>>> mCfgMapShort;
|
std::map<IpcConfigKey, std::map<std::string, std::reference_wrapper<short>>> mCfgMapShort;
|
||||||
std::map<IpcConfigKey, std::reference_wrapper<long>> mCfgMapLong;
|
std::map<IpcConfigKey, std::map<std::string, std::reference_wrapper<long>>> mCfgMapLong;
|
||||||
std::map<IpcConfigKey, std::reference_wrapper<long long>> mCfgMapLongLong;
|
std::map<IpcConfigKey, std::reference_wrapper<long long>> mCfgMapLongLong;
|
||||||
std::map<IpcConfigKey, std::reference_wrapper<char>> mCfgMapChar;
|
std::map<IpcConfigKey, std::reference_wrapper<char>> mCfgMapChar;
|
||||||
std::map<IpcConfigKey, std::reference_wrapper<float>> mCfgMapFloat;
|
std::map<IpcConfigKey, std::reference_wrapper<float>> mCfgMapFloat;
|
||||||
|
|
|
@ -21,12 +21,17 @@ TEST(IpcConfigTest, Demo)
|
||||||
const int numShort = 888;
|
const int numShort = 888;
|
||||||
IIpcConfig::GetInstance()->SetShort(IpcConfigKey::TEST_SHORT, numShort);
|
IIpcConfig::GetInstance()->SetShort(IpcConfigKey::TEST_SHORT, numShort);
|
||||||
|
|
||||||
|
long testLong = IIpcConfig::GetInstance()->GetLong(IpcConfigKey::TEST_LONG);
|
||||||
|
LogInfo("Get test_long = %d\n", testLong);
|
||||||
|
const int numLong = 777;
|
||||||
|
IIpcConfig::GetInstance()->SetLong(IpcConfigKey::TEST_LONG, numLong);
|
||||||
|
|
||||||
const std::string testString = IIpcConfig::GetInstance()->GetString(IpcConfigKey::TEST_STRING);
|
const std::string testString = IIpcConfig::GetInstance()->GetString(IpcConfigKey::TEST_STRING);
|
||||||
LogInfo("Get testString = %s\n", testString.c_str());
|
LogInfo("Get testString = %s\n", testString.c_str());
|
||||||
const std::string string = "define";
|
const std::string string = "define";
|
||||||
IIpcConfig::GetInstance()->SetString(IpcConfigKey::TEST_STRING, string);
|
IIpcConfig::GetInstance()->SetString(IpcConfigKey::TEST_STRING, string);
|
||||||
IIpcConfig::GetInstance()->ConfigFileSave();
|
|
||||||
|
|
||||||
|
IIpcConfig::GetInstance()->ConfigFileSave();
|
||||||
IIpcConfig::GetInstance()->UnInit();
|
IIpcConfig::GetInstance()->UnInit();
|
||||||
ILogUnInit();
|
ILogUnInit();
|
||||||
DestroyLogModule();
|
DestroyLogModule();
|
||||||
|
|
|
@ -48,7 +48,6 @@ const StatusCode ConfigSetInt(VConfig *cfg, const char *name, const int value)
|
||||||
}
|
}
|
||||||
return cfg->set_int(cfg, name, value);
|
return cfg->set_int(cfg, name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
const StatusCode ConfigGetShort(VConfig *cfg, const char *name, short *value)
|
const StatusCode ConfigGetShort(VConfig *cfg, const char *name, short *value)
|
||||||
{
|
{
|
||||||
if (NULL == cfg) {
|
if (NULL == cfg) {
|
||||||
|
@ -63,6 +62,20 @@ const StatusCode ConfigSetShort(VConfig *cfg, const char *name, const short valu
|
||||||
}
|
}
|
||||||
return cfg->set_short(cfg, name, value);
|
return cfg->set_short(cfg, name, value);
|
||||||
}
|
}
|
||||||
|
const StatusCode ConfigGetLong(VConfig *cfg, const char *name, long *value)
|
||||||
|
{
|
||||||
|
if (NULL == cfg) {
|
||||||
|
return CreateStatusCode(STATUS_CODE_NOT_OK);
|
||||||
|
}
|
||||||
|
return cfg->get_long(cfg, name, value);
|
||||||
|
}
|
||||||
|
const StatusCode ConfigSetLong(VConfig *cfg, const char *name, const long value)
|
||||||
|
{
|
||||||
|
if (NULL == cfg) {
|
||||||
|
return CreateStatusCode(STATUS_CODE_NOT_OK);
|
||||||
|
}
|
||||||
|
return cfg->set_long(cfg, name, value);
|
||||||
|
}
|
||||||
|
|
||||||
const StatusCode ConfigGetString(VConfig *cfg, const char *name, const char **value)
|
const StatusCode ConfigGetString(VConfig *cfg, const char *name, const char **value)
|
||||||
{
|
{
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#define CHECK_SHORT_LIMIT(value) (value > SHRT_MAX ? false : (value < SHRT_MIN ? false : true))
|
#define CHECK_SHORT_LIMIT(value) (value > SHRT_MAX ? false : (value < SHRT_MIN ? false : true))
|
||||||
|
#define CHECK_LONG_LIMIT(value) (value > LONG_MAX ? false : (value < LONG_MIN ? false : true))
|
||||||
|
|
||||||
static const StatusCode ConfigSaveFileImpl(VConfig *cfg)
|
static const StatusCode ConfigSaveFileImpl(VConfig *cfg)
|
||||||
{
|
{
|
||||||
|
@ -76,7 +77,6 @@ static const StatusCode ConfigGetShortImpl(VConfig *cfg, const char *name, short
|
||||||
*value = (short)intValue;
|
*value = (short)intValue;
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const StatusCode ConfigSetShortImpl(VConfig *cfg, const char *name, const short value)
|
static const StatusCode ConfigSetShortImpl(VConfig *cfg, const char *name, const short value)
|
||||||
{
|
{
|
||||||
config_setting_t *root, *setting;
|
config_setting_t *root, *setting;
|
||||||
|
@ -89,6 +89,29 @@ static const StatusCode ConfigSetShortImpl(VConfig *cfg, const char *name, const
|
||||||
config_setting_set_int(setting, intValue);
|
config_setting_set_int(setting, intValue);
|
||||||
return CreateStatusCode(STATUS_CODE_OK);
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
}
|
}
|
||||||
|
static const StatusCode ConfigGetLongImpl(VConfig *cfg, const char *name, long *value)
|
||||||
|
{
|
||||||
|
long long llongValue = 0;
|
||||||
|
int result = 0;
|
||||||
|
result = config_lookup_int64(&(((Config *)cfg)->cfg), name, &llongValue);
|
||||||
|
if (CONFIG_FALSE == result && CHECK_LONG_LIMIT(llongValue)) {
|
||||||
|
return CreateConfigCode(CONFIG_CODE_PARAM_NOT_EXIST);
|
||||||
|
}
|
||||||
|
*value = (long)llongValue;
|
||||||
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
|
}
|
||||||
|
static const StatusCode ConfigSetLongImpl(VConfig *cfg, const char *name, const long value)
|
||||||
|
{
|
||||||
|
config_setting_t *root, *setting;
|
||||||
|
root = config_root_setting(&(((Config *)cfg)->cfg));
|
||||||
|
setting = config_setting_get_member(root, name);
|
||||||
|
if (!setting) {
|
||||||
|
setting = config_setting_add(root, name, CONFIG_TYPE_INT);
|
||||||
|
}
|
||||||
|
long long llongValue = value;
|
||||||
|
config_setting_set_int64(setting, llongValue);
|
||||||
|
return CreateStatusCode(STATUS_CODE_OK);
|
||||||
|
}
|
||||||
static const StatusCode ConfigGetStringImpl(VConfig *cfg, const char *name, const char **value)
|
static const StatusCode ConfigGetStringImpl(VConfig *cfg, const char *name, const char **value)
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
@ -122,6 +145,8 @@ static void ConfigImplInit(Config *cfg)
|
||||||
cfg->base.set_int = ConfigSetIntImpl;
|
cfg->base.set_int = ConfigSetIntImpl;
|
||||||
cfg->base.get_short = ConfigGetShortImpl;
|
cfg->base.get_short = ConfigGetShortImpl;
|
||||||
cfg->base.set_short = ConfigSetShortImpl;
|
cfg->base.set_short = ConfigSetShortImpl;
|
||||||
|
cfg->base.get_long = ConfigGetLongImpl;
|
||||||
|
cfg->base.set_long = ConfigSetLongImpl;
|
||||||
cfg->base.get_string = ConfigGetStringImpl;
|
cfg->base.get_string = ConfigGetStringImpl;
|
||||||
cfg->base.set_string = ConfigSetStringImpl;
|
cfg->base.set_string = ConfigSetStringImpl;
|
||||||
cfg->base.save = ConfigSaveFileImpl;
|
cfg->base.save = ConfigSaveFileImpl;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user