blob: ca1869f9564c09958b94604b2c49ef6718a2665f [file] [log] [blame]
// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef POWER_MANAGER_COMMON_CROS_CONFIG_PREFS_SOURCE_H_
#define POWER_MANAGER_COMMON_CROS_CONFIG_PREFS_SOURCE_H_
#include <memory>
#include <string>
#include <cros_config/cros_config_interface.h>
#include "power_manager/common/prefs.h"
namespace power_manager {
// PrefsSourceInterface implementation that uses libcros_config to read
// preferences.
class CrosConfigPrefsSource : public PrefsSourceInterface {
public:
// |config| must already be initialized with CrosConfig::Init().
explicit CrosConfigPrefsSource(
std::unique_ptr<brillo::CrosConfigInterface> config);
CrosConfigPrefsSource(const CrosConfigPrefsSource&) = delete;
CrosConfigPrefsSource& operator=(const CrosConfigPrefsSource&) = delete;
~CrosConfigPrefsSource() override;
// PrefsSourceInterface:
std::string GetDescription() const override;
bool ReadPrefString(const std::string& name, std::string* value_out) override;
private:
std::unique_ptr<brillo::CrosConfigInterface> config_;
};
} // namespace power_manager
#endif // POWER_MANAGER_COMMON_CROS_CONFIG_PREFS_SOURCE_H_