blob: 03ae3ecd317b0288f95311c798870753f451e091 [file] [log] [blame]
Alex Deymoaea4c1c2015-08-19 20:24:43 -07001//
2// Copyright (C) 2011 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
Darin Petkov30030592010-07-27 13:53:20 -070016
Alex Deymo39910dc2015-11-09 17:04:30 -080017#ifndef UPDATE_ENGINE_COMMON_PREFS_INTERFACE_H_
18#define UPDATE_ENGINE_COMMON_PREFS_INTERFACE_H_
Darin Petkov30030592010-07-27 13:53:20 -070019
Ben Chan9abb7632014-08-07 00:10:53 -070020#include <stdint.h>
21
Darin Petkov30030592010-07-27 13:53:20 -070022#include <string>
23
24namespace chromeos_update_engine {
25
26// The prefs interface allows access to a persistent preferences
27// store. The two reasons for providing this as an interface are
28// testing as well as easier switching to a new implementation in the
29// future, if necessary.
30
31class PrefsInterface {
32 public:
Alex Deymod6f60072015-10-12 12:22:27 -070033 // Observer class to be notified about key value changes.
34 class ObserverInterface {
35 public:
36 virtual ~ObserverInterface() = default;
37
38 // Called when the value is set for the observed |key|.
39 virtual void OnPrefSet(const std::string& key) = 0;
40
41 // Called when the observed |key| is deleted.
42 virtual void OnPrefDeleted(const std::string& key) = 0;
43 };
44
45 virtual ~PrefsInterface() = default;
Alex Deymo610277e2014-11-11 21:18:11 -080046
Darin Petkov30030592010-07-27 13:53:20 -070047 // Gets a string |value| associated with |key|. Returns true on
48 // success, false on failure (including when the |key| is not
49 // present in the store).
Alex Deymod6f60072015-10-12 12:22:27 -070050 virtual bool GetString(const std::string& key, std::string* value) const = 0;
Darin Petkov30030592010-07-27 13:53:20 -070051
52 // Associates |key| with a string |value|. Returns true on success,
53 // false otherwise.
54 virtual bool SetString(const std::string& key, const std::string& value) = 0;
55
Ben Chan9abb7632014-08-07 00:10:53 -070056 // Gets an int64_t |value| associated with |key|. Returns true on
Darin Petkov30030592010-07-27 13:53:20 -070057 // success, false on failure (including when the |key| is not
58 // present in the store).
Alex Deymod6f60072015-10-12 12:22:27 -070059 virtual bool GetInt64(const std::string& key, int64_t* value) const = 0;
Darin Petkov30030592010-07-27 13:53:20 -070060
Ben Chan9abb7632014-08-07 00:10:53 -070061 // Associates |key| with an int64_t |value|. Returns true on success,
Darin Petkov30030592010-07-27 13:53:20 -070062 // false otherwise.
63 virtual bool SetInt64(const std::string& key, const int64_t value) = 0;
Darin Petkov1cbd78f2010-07-29 12:38:34 -070064
Alex Deymoefb7c4c2013-07-09 14:34:00 -070065 // Gets a boolean |value| associated with |key|. Returns true on
66 // success, false on failure (including when the |key| is not
67 // present in the store).
Alex Deymod6f60072015-10-12 12:22:27 -070068 virtual bool GetBoolean(const std::string& key, bool* value) const = 0;
Alex Deymoefb7c4c2013-07-09 14:34:00 -070069
70 // Associates |key| with a boolean |value|. Returns true on success,
71 // false otherwise.
72 virtual bool SetBoolean(const std::string& key, const bool value) = 0;
73
Jay Srinivasan480ddfa2012-06-01 19:15:26 -070074 // Returns true if the setting exists (i.e. a file with the given key
75 // exists in the prefs directory)
Alex Deymod6f60072015-10-12 12:22:27 -070076 virtual bool Exists(const std::string& key) const = 0;
Jay Srinivasan480ddfa2012-06-01 19:15:26 -070077
78 // Returns true if successfully deleted the file corresponding to
79 // this key. Calling with non-existent keys does nothing.
80 virtual bool Delete(const std::string& key) = 0;
Alex Deymod6f60072015-10-12 12:22:27 -070081
82 // Add an observer to watch whenever the given |key| is modified. The
83 // OnPrefSet() and OnPrefDelete() methods will be called whenever any of the
84 // Set*() methods or the Delete() method are called on the given key,
85 // respectively.
86 virtual void AddObserver(const std::string& key,
87 ObserverInterface* observer) = 0;
88
89 // Remove an observer added with AddObserver(). The observer won't be called
90 // anymore for future Set*() and Delete() method calls.
91 virtual void RemoveObserver(const std::string& key,
92 ObserverInterface* observer) = 0;
Darin Petkov30030592010-07-27 13:53:20 -070093};
94
95} // namespace chromeos_update_engine
96
Alex Deymo39910dc2015-11-09 17:04:30 -080097#endif // UPDATE_ENGINE_COMMON_PREFS_INTERFACE_H_