From b8eaa1b907d63feb5a4352722b3d0548470ebb3b Mon Sep 17 00:00:00 2001 From: youyouyuai Date: Tue, 6 Jul 2021 08:32:00 +0000 Subject: [PATCH 1/2] static memory use pointer Signed-off-by: youyouyuai --- adapter/properties.cpp | 71 ++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 38 deletions(-) diff --git a/adapter/properties.cpp b/adapter/properties.cpp index 0eaa624..e04d683 100644 --- a/adapter/properties.cpp +++ b/adapter/properties.cpp @@ -188,24 +188,23 @@ static bool CheckCache(const PropertyCache *cache) } -static bool GetSwitchCache(bool isFirst, SwitchCache& switchCache, uint32_t propType, bool defaultValue) +static bool GetSwitchCache(bool isFirst, SwitchCache* switchCache, uint32_t propType, bool defaultValue) { int notLocked; std::string key = GetPropertyName(propType); - - if (isFirst || CheckCache(&switchCache.cache)) { + if (isFirst || CheckCache(&switchCache->cache)) { notLocked = LockByProp(propType); if (!notLocked) { - RefreshCacheBuf(&switchCache.cache, key.c_str()); - if (strcmp(switchCache.cache.propertyValue, "true") == 0) { - switchCache.isOn = true; - } else if (strcmp(switchCache.cache.propertyValue, "false") == 0) { - switchCache.isOn = false; + RefreshCacheBuf(&switchCache->cache, key.c_str()); + if (strcmp(switchCache->cache.propertyValue, "true") == 0) { + switchCache->isOn = true; + } else if (strcmp(switchCache->cache.propertyValue, "false") == 0) { + switchCache->isOn = false; } else { - switchCache.isOn = defaultValue; + switchCache->isOn = defaultValue; } UnlockByProp(propType); - return switchCache.isOn; + return switchCache->isOn; } else { SwitchCache tmpCache = {{nullptr, 0xffffffff, ""}, defaultValue}; RefreshCacheBuf(&tmpCache.cache, key.c_str()); @@ -219,7 +218,7 @@ static bool GetSwitchCache(bool isFirst, SwitchCache& switchCache, uint32_t prop return tmpCache.isOn; } } else { - return switchCache.isOn; + return switchCache->isOn; } } @@ -230,7 +229,7 @@ bool IsDebugOn() bool IsSingleDebugOn() { - static SwitchCache switchCache = {{nullptr, 0xffffffff, ""}, false}; + static SwitchCache *switchCache = new SwitchCache{{nullptr, 0xffffffff, ""}, false}; static std::atomic_flag isFirstFlag = ATOMIC_FLAG_INIT; bool isFirst = !isFirstFlag.test_and_set(); return GetSwitchCache(isFirst, switchCache, PROP_SINGLE_DEBUG, false); @@ -238,7 +237,7 @@ bool IsSingleDebugOn() bool IsPersistDebugOn() { - static SwitchCache switchCache = {{nullptr, 0xffffffff, ""}, false}; + static SwitchCache *switchCache = new SwitchCache{{nullptr, 0xffffffff, ""}, false}; static std::atomic_flag isFirstFlag = ATOMIC_FLAG_INIT; bool isFirst = !isFirstFlag.test_and_set(); return GetSwitchCache(isFirst, switchCache, PROP_PERSIST_DEBUG, false); @@ -246,7 +245,7 @@ bool IsPersistDebugOn() bool IsPrivateSwitchOn() { - static SwitchCache switchCache = {{nullptr, 0xffffffff, ""}, true}; + static SwitchCache *switchCache = new SwitchCache{{nullptr, 0xffffffff, ""}, true}; static std::atomic_flag isFirstFlag = ATOMIC_FLAG_INIT; bool isFirst = !isFirstFlag.test_and_set(); return GetSwitchCache(isFirst, switchCache, PROP_PRIVATE, true); @@ -254,7 +253,7 @@ bool IsPrivateSwitchOn() bool IsProcessSwitchOn() { - static SwitchCache switchCache = {{nullptr, 0xffffffff, ""}, false}; + static SwitchCache *switchCache = new SwitchCache{{nullptr, 0xffffffff, ""}, false}; static std::atomic_flag isFirstFlag = ATOMIC_FLAG_INIT; bool isFirst = !isFirstFlag.test_and_set(); return GetSwitchCache(isFirst, switchCache, PROP_PROCESS_FLOWCTRL, false); @@ -262,7 +261,7 @@ bool IsProcessSwitchOn() bool IsDomainSwitchOn() { - static SwitchCache switchCache = {{nullptr, 0xffffffff, ""}, false}; + static SwitchCache *switchCache = new SwitchCache{{nullptr, 0xffffffff, ""}, false}; static std::atomic_flag isFirstFlag = ATOMIC_FLAG_INIT; bool isFirst = !isFirstFlag.test_and_set(); return GetSwitchCache(isFirst, switchCache, PROP_DOMAIN_FLOWCTRL, false); @@ -301,17 +300,17 @@ static uint16_t GetCacheLevel(char propertyChar) uint16_t GetGlobalLevel() { std::string key = GetPropertyName(PROP_GLOBAL_LOG_LEVEL); - static LogLevelCache levelCache = {{nullptr, 0xffffffff, ""}, LOG_LEVEL_MIN}; + static LogLevelCache *levelCache = new LogLevelCache{{nullptr, 0xffffffff, ""}, LOG_LEVEL_MIN}; static std::atomic_flag isFirstFlag = ATOMIC_FLAG_INIT; int notLocked; - if (!isFirstFlag.test_and_set() || CheckCache(&levelCache.cache)) { + if (!isFirstFlag.test_and_set() || CheckCache(&levelCache->cache)) { notLocked = LockByProp(PROP_GLOBAL_LOG_LEVEL); if (!notLocked) { - RefreshCacheBuf(&levelCache.cache, key.c_str()); - levelCache.logLevel = GetCacheLevel(levelCache.cache.propertyValue[0]); + RefreshCacheBuf(&levelCache->cache, key.c_str()); + levelCache->logLevel = GetCacheLevel(levelCache->cache.propertyValue[0]); UnlockByProp(PROP_GLOBAL_LOG_LEVEL); - return levelCache.logLevel; + return levelCache->logLevel; } else { LogLevelCache tmpCache = {{nullptr, 0xffffffff, ""}, LOG_LEVEL_MIN}; RefreshCacheBuf(&tmpCache.cache, key.c_str()); @@ -319,28 +318,26 @@ uint16_t GetGlobalLevel() return tmpCache.logLevel; } } else { - return levelCache.logLevel; + return levelCache->logLevel; } } uint16_t GetDomainLevel(uint32_t domain) { - static std::unordered_map domainMap; + static std::unordered_map *domainMap = new std::unordered_map(); std::unordered_map::iterator it; std::string key = GetPropertyName(PROP_DOMAIN_LOG_LEVEL) + std::to_string(domain); int notLocked; - it = domainMap.find(domain); - if (it == domainMap.end()) { // new domain - LogLevelCache* levelCache = new(LogLevelCache); - levelCache->cache.pinfo = nullptr; - levelCache->cache.serial = 0xffffffff; - levelCache->logLevel = LOG_LEVEL_MIN; + it = domainMap->find(domain); + if (it == domainMap->end()) { // new domain + LogLevelCache* levelCache = new LogLevelCache{{nullptr, 0xffffffff, ""}, LOG_LEVEL_MIN}; RefreshCacheBuf(&levelCache->cache, key.c_str()); levelCache->logLevel = GetCacheLevel(levelCache->cache.propertyValue[0]); notLocked = LockByProp(PROP_DOMAIN_LOG_LEVEL); if (!notLocked) { - domainMap.insert({ domain, levelCache }); + domainMap->insert({ domain, levelCache }); UnlockByProp(PROP_DOMAIN_LOG_LEVEL); } else { uint16_t level = levelCache->logLevel; @@ -370,23 +367,21 @@ uint16_t GetDomainLevel(uint32_t domain) uint16_t GetTagLevel(const std::string& tag) { - static std::unordered_map tagMap; + static std::unordered_map *tagMap = new std::unordered_map(); std::unordered_map::iterator it; std::string tagStr = tag; std::string key = GetPropertyName(PROP_TAG_LOG_LEVEL) + tagStr; int notLocked; - it = tagMap.find(tagStr); - if (it == tagMap.end()) { - LogLevelCache* levelCache = new(LogLevelCache); - levelCache->cache.pinfo = nullptr; - levelCache->cache.serial = 0xffffffff; - levelCache->logLevel = LOG_LEVEL_MIN; + it = tagMap->find(tagStr); + if (it == tagMap->end()) { + LogLevelCache* levelCache = new LogLevelCache{{nullptr, 0xffffffff, ""}, LOG_LEVEL_MIN}; RefreshCacheBuf(&levelCache->cache, key.c_str()); levelCache->logLevel = GetCacheLevel(levelCache->cache.propertyValue[0]); notLocked = LockByProp(PROP_TAG_LOG_LEVEL); if (!notLocked) { - tagMap.insert({ tagStr, levelCache }); + tagMap->insert({ tagStr, levelCache }); UnlockByProp(PROP_TAG_LOG_LEVEL); } else { uint16_t level = levelCache->logLevel; -- Gitee From 988ca37d2d11e7e78270dee8474e2f0d12ce117f Mon Sep 17 00:00:00 2001 From: youyouyuai Date: Wed, 7 Jul 2021 06:22:08 +0000 Subject: [PATCH 2/2] codeing style Signed-off-by: youyouyuai --- adapter/properties.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/adapter/properties.cpp b/adapter/properties.cpp index e04d683..e0142b8 100644 --- a/adapter/properties.cpp +++ b/adapter/properties.cpp @@ -188,23 +188,23 @@ static bool CheckCache(const PropertyCache *cache) } -static bool GetSwitchCache(bool isFirst, SwitchCache* switchCache, uint32_t propType, bool defaultValue) +static bool GetSwitchCache(bool isFirst, SwitchCache& switchCache, uint32_t propType, bool defaultValue) { int notLocked; std::string key = GetPropertyName(propType); - if (isFirst || CheckCache(&switchCache->cache)) { + if (isFirst || CheckCache(&switchCache.cache)) { notLocked = LockByProp(propType); if (!notLocked) { - RefreshCacheBuf(&switchCache->cache, key.c_str()); - if (strcmp(switchCache->cache.propertyValue, "true") == 0) { - switchCache->isOn = true; - } else if (strcmp(switchCache->cache.propertyValue, "false") == 0) { - switchCache->isOn = false; + RefreshCacheBuf(&switchCache.cache, key.c_str()); + if (strcmp(switchCache.cache.propertyValue, "true") == 0) { + switchCache.isOn = true; + } else if (strcmp(switchCache.cache.propertyValue, "false") == 0) { + switchCache.isOn = false; } else { - switchCache->isOn = defaultValue; + switchCache.isOn = defaultValue; } UnlockByProp(propType); - return switchCache->isOn; + return switchCache.isOn; } else { SwitchCache tmpCache = {{nullptr, 0xffffffff, ""}, defaultValue}; RefreshCacheBuf(&tmpCache.cache, key.c_str()); @@ -218,7 +218,7 @@ static bool GetSwitchCache(bool isFirst, SwitchCache* switchCache, uint32_t prop return tmpCache.isOn; } } else { - return switchCache->isOn; + return switchCache.isOn; } } @@ -232,7 +232,7 @@ bool IsSingleDebugOn() static SwitchCache *switchCache = new SwitchCache{{nullptr, 0xffffffff, ""}, false}; static std::atomic_flag isFirstFlag = ATOMIC_FLAG_INIT; bool isFirst = !isFirstFlag.test_and_set(); - return GetSwitchCache(isFirst, switchCache, PROP_SINGLE_DEBUG, false); + return GetSwitchCache(isFirst, *switchCache, PROP_SINGLE_DEBUG, false); } bool IsPersistDebugOn() @@ -240,7 +240,7 @@ bool IsPersistDebugOn() static SwitchCache *switchCache = new SwitchCache{{nullptr, 0xffffffff, ""}, false}; static std::atomic_flag isFirstFlag = ATOMIC_FLAG_INIT; bool isFirst = !isFirstFlag.test_and_set(); - return GetSwitchCache(isFirst, switchCache, PROP_PERSIST_DEBUG, false); + return GetSwitchCache(isFirst, *switchCache, PROP_PERSIST_DEBUG, false); } bool IsPrivateSwitchOn() @@ -248,7 +248,7 @@ bool IsPrivateSwitchOn() static SwitchCache *switchCache = new SwitchCache{{nullptr, 0xffffffff, ""}, true}; static std::atomic_flag isFirstFlag = ATOMIC_FLAG_INIT; bool isFirst = !isFirstFlag.test_and_set(); - return GetSwitchCache(isFirst, switchCache, PROP_PRIVATE, true); + return GetSwitchCache(isFirst, *switchCache, PROP_PRIVATE, true); } bool IsProcessSwitchOn() @@ -256,7 +256,7 @@ bool IsProcessSwitchOn() static SwitchCache *switchCache = new SwitchCache{{nullptr, 0xffffffff, ""}, false}; static std::atomic_flag isFirstFlag = ATOMIC_FLAG_INIT; bool isFirst = !isFirstFlag.test_and_set(); - return GetSwitchCache(isFirst, switchCache, PROP_PROCESS_FLOWCTRL, false); + return GetSwitchCache(isFirst, *switchCache, PROP_PROCESS_FLOWCTRL, false); } bool IsDomainSwitchOn() @@ -264,7 +264,7 @@ bool IsDomainSwitchOn() static SwitchCache *switchCache = new SwitchCache{{nullptr, 0xffffffff, ""}, false}; static std::atomic_flag isFirstFlag = ATOMIC_FLAG_INIT; bool isFirst = !isFirstFlag.test_and_set(); - return GetSwitchCache(isFirst, switchCache, PROP_DOMAIN_FLOWCTRL, false); + return GetSwitchCache(isFirst, *switchCache, PROP_DOMAIN_FLOWCTRL, false); } static uint16_t GetCacheLevel(char propertyChar) -- Gitee