1/* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#include <sys/stat.h> 17#include <sys/types.h> 18 19#include "netfirewall_preference_helper.h" 20#include "netmgr_ext_log_wrapper.h" 21#include "preferences_errno.h" 22#include "preferences_helper.h" 23#include "preferences_value.h" 24using namespace std; 25 26namespace OHOS { 27namespace NetManagerStandard { 28shared_ptr<NetFirewallPreferenceHelper> NetFirewallPreferenceHelper::GetInstance() 29{ 30 static std::shared_ptr<NetFirewallPreferenceHelper> instance = make_shared<NetFirewallPreferenceHelper>(); 31 return instance; 32} 33 34bool NetFirewallPreferenceHelper::GetPreference() 35{ 36 int32_t errCode = -1; 37 ptr_ = NativePreferences::PreferencesHelper::GetPreferences(filePath_, errCode); 38 if (ptr_ == nullptr) { 39 NETMGR_EXT_LOG_E("GetPreference error code is %{public}d", errCode); 40 return false; 41 } 42 return true; 43} 44 45bool NetFirewallPreferenceHelper::GetPreference(const std::string &filePath) 46{ 47 filePath_ = filePath; 48 int32_t errCode = -1; 49 ptr_ = NativePreferences::PreferencesHelper::GetPreferences(filePath_, errCode); 50 if (ptr_ == nullptr) { 51 NETMGR_EXT_LOG_E("GetPreference error code is %{public}d", errCode); 52 return false; 53 } 54 return true; 55} 56 57bool NetFirewallPreferenceHelper::SaveInt(const std::string &key, int32_t value) 58{ 59 return Save(key, value); 60} 61 62bool NetFirewallPreferenceHelper::SaveBool(const std::string &key, bool value) 63{ 64 return Save(key, value); 65} 66 67template <typename T> bool NetFirewallPreferenceHelper::Save(const std::string &key, const T &value) 68{ 69 if (!GetPreference()) { 70 return false; 71 } 72 if (!SaveInner(ptr_, key, value)) { 73 NETMGR_EXT_LOG_E("SaveInner error"); 74 return false; 75 } 76 return RefreshSync(); 77} 78 79bool NetFirewallPreferenceHelper::SaveInner(std::shared_ptr<NativePreferences::Preferences> ptr, const std::string &key, 80 const int32_t &value) 81{ 82 if (ptr == nullptr) { 83 NETMGR_EXT_LOG_E("ptr is nullptr"); 84 return false; 85 } 86 return ptr->PutInt(key, value) == NativePreferences::E_OK; 87} 88 89bool NetFirewallPreferenceHelper::SaveInner(std::shared_ptr<NativePreferences::Preferences> ptr, const std::string &key, 90 const bool &value) 91{ 92 if (ptr == nullptr) { 93 NETMGR_EXT_LOG_E("ptr is nullptr"); 94 return false; 95 } 96 return ptr->PutBool(key, value) == NativePreferences::E_OK; 97} 98 99int32_t NetFirewallPreferenceHelper::ObtainInt(const std::string &key, int32_t defValue) 100{ 101 return Obtain(key, defValue); 102} 103 104bool NetFirewallPreferenceHelper::ObtainBool(const std::string &key, bool defValue) 105{ 106 return Obtain(key, defValue); 107} 108 109template <typename T> T NetFirewallPreferenceHelper::Obtain(const std::string &key, const T &defValue) 110{ 111 if (!GetPreference()) { 112 NETMGR_EXT_LOG_I("Obtain GetPreference failed"); 113 return defValue; 114 } 115 return ObtainInner(ptr_, key, defValue); 116} 117 118int32_t NetFirewallPreferenceHelper::ObtainInner(std::shared_ptr<NativePreferences::Preferences> ptr, 119 const std::string &key, const int32_t &defValue) 120{ 121 return ptr->GetInt(key, defValue); 122} 123 124bool NetFirewallPreferenceHelper::ObtainInner(std::shared_ptr<NativePreferences::Preferences> ptr, 125 const std::string &key, const bool &defValue) 126{ 127 return ptr->GetBool(key, defValue); 128} 129 130bool NetFirewallPreferenceHelper::RefreshSync() 131{ 132 if (!GetPreference()) { 133 NETMGR_EXT_LOG_I("RefreshSync GetPreference failed"); 134 return false; 135 } 136 if (ptr_ == nullptr) { 137 NETMGR_EXT_LOG_E("ptr_ is nullptr"); 138 return false; 139 } 140 if (ptr_->FlushSync() != NativePreferences::E_OK) { 141 NETMGR_EXT_LOG_E("RefreshSync error"); 142 return false; 143 } 144 return true; 145} 146 147bool NetFirewallPreferenceHelper::Clear(const std::string &filePath) 148{ 149 if (!GetPreference(filePath)) { 150 NETMGR_EXT_LOG_I("Clear GetPreference failed"); 151 return false; 152 } 153 if (ptr_ == nullptr) { 154 NETMGR_EXT_LOG_E("ptr_ is nullptr"); 155 return false; 156 } 157 int ret = NativePreferences::PreferencesHelper::DeletePreferences(filePath); 158 if (ret) { 159 NETMGR_EXT_LOG_E("ptr_ is nullptr"); 160 } 161 ptr_ = nullptr; 162 return true; 163} 164} // namespace NetManagerStandard 165} // namespace OHOS