/* * Copyright 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include #include #include "common/lru.h" #include "osi/include/config.h" #include "osi/include/log.h" #include "raw_address.h" class BtifConfigCache { public: explicit BtifConfigCache(size_t capacity); ~BtifConfigCache(); void Clear(); void Init(std::unique_ptr source); std::vector GetPersistentSectionNames(); config_t PersistentSectionCopy(); bool HasSection(const std::string& section_name); bool HasUnpairedSection(const std::string& section_name); bool HasPersistentSection(const std::string& section_name); bool HasKey(const std::string& section_name, const std::string& key); bool RemoveKey(const std::string& section_name, const std::string& key); void RemovePersistentSectionsWithKey(const std::string& key); // Setters and getters void SetString(std::string section_name, std::string key, std::string value); std::optional GetString(const std::string& section_name, const std::string& key); void SetInt(std::string section_name, std::string key, int value); std::optional GetInt(const std::string& section_name, const std::string& key); void SetUint64(std::string section_name, std::string key, uint64_t value); std::optional GetUint64(const std::string& section_name, const std::string& key); void SetBool(std::string section_name, std::string key, bool value); std::optional GetBool(const std::string& section_name, const std::string& key); private: bluetooth::common::LruCache unpaired_devices_cache_; config_t paired_devices_list_; };