blob: 212d8298ea5a948d9eb1b68c0101c4eed96e1bae [file] [log] [blame]
/*
* 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 <map>
#include <unordered_set>
#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<config_t> source);
std::vector<std::string> 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<std::string> GetString(const std::string& section_name,
const std::string& key);
void SetInt(std::string section_name, std::string key, int value);
std::optional<int> GetInt(const std::string& section_name,
const std::string& key);
void SetUint64(std::string section_name, std::string key, uint64_t value);
std::optional<uint64_t> GetUint64(const std::string& section_name,
const std::string& key);
void SetBool(std::string section_name, std::string key, bool value);
std::optional<bool> GetBool(const std::string& section_name,
const std::string& key);
private:
bluetooth::common::LegacyLruCache<std::string, section_t>
unpaired_devices_cache_;
config_t paired_devices_list_;
};