blob: b83374dca28c26ff3ac02f462116dca861f1c338 [file] [log] [blame]
Vitaly Buka1175a9b2015-08-15 10:42:17 -07001// Copyright 2015 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef BUFFET_BUFFET_CONFIG_H_
6#define BUFFET_BUFFET_CONFIG_H_
7
Vitaly Bukabecd4612015-08-16 23:31:55 -07008#include <map>
Vitaly Buka1175a9b2015-08-15 10:42:17 -07009#include <set>
10#include <string>
11#include <vector>
12
13#include <base/callback.h>
14#include <base/files/file_path.h>
15#include <chromeos/key_value_store.h>
Alex Vakulenkoe32375b2015-09-28 08:55:40 -070016#include <weave/provider/config_store.h>
Vitaly Buka1175a9b2015-08-15 10:42:17 -070017
18namespace buffet {
19
20class StorageInterface;
21
Vitaly Bukabecd4612015-08-16 23:31:55 -070022struct BuffetConfigPaths {
23 base::FilePath defaults;
24 base::FilePath settings;
25
26 base::FilePath definitions;
27 base::FilePath test_definitions;
28};
29
Vitaly Buka1175a9b2015-08-15 10:42:17 -070030// Handles reading buffet config and state files.
Alex Vakulenkoe32375b2015-09-28 08:55:40 -070031class BuffetConfig final : public weave::provider::ConfigStore {
Vitaly Buka1175a9b2015-08-15 10:42:17 -070032 public:
33 using OnChangedCallback = base::Callback<void(const weave::Settings&)>;
34 ~BuffetConfig() override = default;
35
Vitaly Bukabecd4612015-08-16 23:31:55 -070036 explicit BuffetConfig(const BuffetConfigPaths& paths);
Vitaly Buka1175a9b2015-08-15 10:42:17 -070037
38 // Config overrides.
39 bool LoadDefaults(weave::Settings* settings) override;
40 std::string LoadSettings() override;
41 void SaveSettings(const std::string& settings) override;
42 void OnSettingsChanged(const weave::Settings& settings) override;
Vitaly Bukabecd4612015-08-16 23:31:55 -070043 std::string LoadBaseCommandDefs() override;
44 std::map<std::string, std::string> LoadCommandDefs() override;
45 std::string LoadBaseStateDefs() override;
46 std::string LoadBaseStateDefaults() override;
47 std::map<std::string, std::string> LoadStateDefs() override;
48 std::vector<std::string> LoadStateDefaults() override;
Vitaly Buka1175a9b2015-08-15 10:42:17 -070049
50 void AddOnChangedCallback(const OnChangedCallback& callback);
51
52 bool LoadDefaults(const chromeos::KeyValueStore& store,
53 weave::Settings* settings);
54
55 private:
Vitaly Bukabecd4612015-08-16 23:31:55 -070056 BuffetConfigPaths paths_;
Vitaly Buka1175a9b2015-08-15 10:42:17 -070057
58 std::vector<OnChangedCallback> on_changed_;
59
60 DISALLOW_COPY_AND_ASSIGN(BuffetConfig);
61};
62
63} // namespace buffet
64
65#endif // BUFFET_BUFFET_CONFIG_H_