18e745fdaSopenharmony_ci/*
28e745fdaSopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
38e745fdaSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
48e745fdaSopenharmony_ci * you may not use this file except in compliance with the License.
58e745fdaSopenharmony_ci * You may obtain a copy of the License at
68e745fdaSopenharmony_ci *
78e745fdaSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
88e745fdaSopenharmony_ci *
98e745fdaSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
108e745fdaSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
118e745fdaSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
128e745fdaSopenharmony_ci * See the License for the specific language governing permissions and
138e745fdaSopenharmony_ci * limitations under the License.
148e745fdaSopenharmony_ci */
158e745fdaSopenharmony_ci
168e745fdaSopenharmony_ci#ifndef NET_FIREWALL_PREFERENCES_HELPER_H
178e745fdaSopenharmony_ci#define NET_FIREWALL_PREFERENCES_HELPER_H
188e745fdaSopenharmony_ci
198e745fdaSopenharmony_ci#include <map>
208e745fdaSopenharmony_ci
218e745fdaSopenharmony_ci#include "preferences.h"
228e745fdaSopenharmony_ci
238e745fdaSopenharmony_cinamespace OHOS {
248e745fdaSopenharmony_cinamespace NetManagerStandard {
258e745fdaSopenharmony_ciclass NetFirewallPreferenceHelper {
268e745fdaSopenharmony_cipublic:
278e745fdaSopenharmony_ci    NetFirewallPreferenceHelper() = default;
288e745fdaSopenharmony_ci    ~NetFirewallPreferenceHelper() = default;
298e745fdaSopenharmony_ci
308e745fdaSopenharmony_ci    static std::shared_ptr<NetFirewallPreferenceHelper> GetInstance();
318e745fdaSopenharmony_ci
328e745fdaSopenharmony_ci    /**
338e745fdaSopenharmony_ci     * Save int data using preferences
348e745fdaSopenharmony_ci     *
358e745fdaSopenharmony_ci     * @param key String
368e745fdaSopenharmony_ci     * @param value Integer value
378e745fdaSopenharmony_ci     * @return If get preferences success and save inner int value success, there is a return to true,
388e745fdaSopenharmony_ci     * otherwise it will be false
398e745fdaSopenharmony_ci     */
408e745fdaSopenharmony_ci    bool SaveInt(const std::string &key, int32_t value);
418e745fdaSopenharmony_ci
428e745fdaSopenharmony_ci    /**
438e745fdaSopenharmony_ci     * Save bool data using preferences
448e745fdaSopenharmony_ci     *
458e745fdaSopenharmony_ci     * @param key String
468e745fdaSopenharmony_ci     * @param value Bool value
478e745fdaSopenharmony_ci     * @return If get preferences success and save inner bool value success, there is a return to true,
488e745fdaSopenharmony_ci     * otherwise it will be false
498e745fdaSopenharmony_ci     */
508e745fdaSopenharmony_ci    bool SaveBool(const std::string &key, bool value);
518e745fdaSopenharmony_ci
528e745fdaSopenharmony_ci    /**
538e745fdaSopenharmony_ci     * Get integer data using preferences
548e745fdaSopenharmony_ci     *
558e745fdaSopenharmony_ci     * @param key String
568e745fdaSopenharmony_ci     * @param value Integer value
578e745fdaSopenharmony_ci     */
588e745fdaSopenharmony_ci    int32_t ObtainInt(const std::string &key, int32_t defValue);
598e745fdaSopenharmony_ci
608e745fdaSopenharmony_ci    /**
618e745fdaSopenharmony_ci     * Get bool data
628e745fdaSopenharmony_ci     *
638e745fdaSopenharmony_ci     * @param key String
648e745fdaSopenharmony_ci     * @param defValue Value
658e745fdaSopenharmony_ci     * @return If get preferences success and obtain inner bool value success,
668e745fdaSopenharmony_ci     * there is a return to true, otherwise it will be false
678e745fdaSopenharmony_ci     */
688e745fdaSopenharmony_ci    bool ObtainBool(const std::string &key, bool defValue);
698e745fdaSopenharmony_ci
708e745fdaSopenharmony_ci    /**
718e745fdaSopenharmony_ci     * Cleaning Data using preferences
728e745fdaSopenharmony_ci     *
738e745fdaSopenharmony_ci     * @param filePath File path
748e745fdaSopenharmony_ci     * @return If there is a preference file and get preferences not null, and delete preferences success,
758e745fdaSopenharmony_ci     * it will return to true, otherwise it will be false
768e745fdaSopenharmony_ci     */
778e745fdaSopenharmony_ci    bool Clear(const std::string &filePath);
788e745fdaSopenharmony_ci
798e745fdaSopenharmony_ci    /**
808e745fdaSopenharmony_ci     * Get Object Handle
818e745fdaSopenharmony_ci     *
828e745fdaSopenharmony_ci     * @param filePath File path
838e745fdaSopenharmony_ci     * @return If there is a preference file and get preferences not null, it will return to true,
848e745fdaSopenharmony_ci     * otherwise it will be false
858e745fdaSopenharmony_ci     */
868e745fdaSopenharmony_ci    bool GetPreference(const std::string &filePath);
878e745fdaSopenharmony_ci
888e745fdaSopenharmony_ciprivate:
898e745fdaSopenharmony_ci    bool GetPreference();
908e745fdaSopenharmony_ci
918e745fdaSopenharmony_ci    bool RefreshSync();
928e745fdaSopenharmony_ci
938e745fdaSopenharmony_ci    template <typename T> bool Save(const std::string &key, const T &defValue);
948e745fdaSopenharmony_ci
958e745fdaSopenharmony_ci    bool SaveInner(std::shared_ptr<NativePreferences::Preferences> ptr, const std::string &key, const int32_t &value);
968e745fdaSopenharmony_ci
978e745fdaSopenharmony_ci    bool SaveInner(std::shared_ptr<NativePreferences::Preferences> ptr, const std::string &key, const bool &value);
988e745fdaSopenharmony_ci
998e745fdaSopenharmony_ci    template <typename T> T Obtain(const std::string &key, const T &defValue);
1008e745fdaSopenharmony_ci
1018e745fdaSopenharmony_ci    int32_t ObtainInner(std::shared_ptr<NativePreferences::Preferences> ptr, const std::string &key,
1028e745fdaSopenharmony_ci        const int32_t &defValue);
1038e745fdaSopenharmony_ci
1048e745fdaSopenharmony_ci    bool ObtainInner(std::shared_ptr<NativePreferences::Preferences> ptr, const std::string &key, const bool &defValue);
1058e745fdaSopenharmony_ci
1068e745fdaSopenharmony_ci    std::shared_ptr<NativePreferences::Preferences> ptr_ = nullptr;
1078e745fdaSopenharmony_ci    std::string filePath_;
1088e745fdaSopenharmony_ci};
1098e745fdaSopenharmony_ci} // namespace NetManagerStandard
1108e745fdaSopenharmony_ci} // namespace OHOS
1118e745fdaSopenharmony_ci#endif // NET_FIREWALL_PREFERENCES_HELPER_H