blob: 337e82ab55c2f8f06fa558bd7070e32789893dd9 [file] [log] [blame]
Vitaly Buka4615e0d2015-10-14 15:35:12 -07001// Copyright 2015 The Weave Authors. All rights reserved.
Vitaly Buka17b0a8a2015-08-31 19:12:35 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Johan Euphrosine3523fdd2015-10-14 20:46:05 -07005#ifndef LIBWEAVE_EXAMPLES_PROVIDER_FILE_CONFIG_STORE_H_
6#define LIBWEAVE_EXAMPLES_PROVIDER_FILE_CONFIG_STORE_H_
Vitaly Buka17b0a8a2015-08-31 19:12:35 -07007
8#include <map>
9#include <string>
10#include <vector>
11
Vitaly Buka1e363672015-09-25 14:01:16 -070012#include <weave/provider/config_store.h>
Vitaly Bukaac18fcf2016-01-15 14:48:54 -080013#include <weave/provider/task_runner.h>
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070014
15namespace weave {
16namespace examples {
17
Vitaly Buka1e363672015-09-25 14:01:16 -070018class FileConfigStore : public provider::ConfigStore {
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070019 public:
Vitaly Buka919a8a92016-01-27 15:59:28 -080020 FileConfigStore(const std::string& model_id,
Vitaly Bukaac18fcf2016-01-15 14:48:54 -080021 provider::TaskRunner* task_runner);
Vitaly Buka41a90d62015-09-29 16:58:39 -070022
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070023 bool LoadDefaults(Settings* settings) override;
Vitaly Bukad1e6c4f2016-01-15 12:19:17 -080024 std::string LoadSettings(const std::string& name) override;
25 void SaveSettings(const std::string& name,
Vitaly Bukaac18fcf2016-01-15 14:48:54 -080026 const std::string& settings,
27 const DoneCallback& callback) override;
Vitaly Bukad1e6c4f2016-01-15 12:19:17 -080028
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070029 std::string LoadSettings() override;
Vitaly Buka41a90d62015-09-29 16:58:39 -070030
31 private:
Vitaly Bukad1e6c4f2016-01-15 12:19:17 -080032 std::string GetPath(const std::string& name) const;
Paul Westbrook15a832e2015-12-08 23:00:29 -080033 const std::string model_id_;
Vitaly Bukaac18fcf2016-01-15 14:48:54 -080034 provider::TaskRunner* task_runner_{nullptr};
Vitaly Buka17b0a8a2015-08-31 19:12:35 -070035};
36
37} // namespace examples
38} // namespace weave
39
Johan Euphrosine3523fdd2015-10-14 20:46:05 -070040#endif // LIBWEAVE_EXAMPLES_PROVIDER_FILE_CONFIG_STORE_H_