blob: dd1e6afcd598084c280ee869a3080c8197b42b5b [file] [log] [blame]
Alex Deymo2de23f52014-02-26 14:30:13 -08001// Copyright (c) 2014 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
Gilad Arnold2cbb3852014-03-07 12:40:50 -08005#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_STATE_H_
6#define CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_STATE_H_
Alex Deymo2de23f52014-02-26 14:30:13 -08007
8#include "update_engine/policy_manager/random_provider.h"
9#include "update_engine/policy_manager/shill_provider.h"
Alex Deymobd04b142014-03-18 15:00:05 -070010#include "update_engine/policy_manager/system_provider.h"
Gilad Arnold78a78112014-03-13 14:58:06 -070011#include "update_engine/policy_manager/time_provider.h"
Alex Deymo2de23f52014-02-26 14:30:13 -080012
13namespace chromeos_policy_manager {
14
15// The State class is an interface to the ensemble of providers. This class
16// gives visibility of the state providers to policy implementations.
17class State {
18 public:
19 virtual ~State() {}
20
21 // Initializes the State instance. Returns whether the initialization
22 // succeeded.
23 bool Init() {
24 return (random_provider_ && random_provider_->Init() &&
Gilad Arnold78a78112014-03-13 14:58:06 -070025 shill_provider_ && shill_provider_->Init() &&
Alex Deymobd04b142014-03-18 15:00:05 -070026 system_provider_ && system_provider_->Init() &&
Gilad Arnold78a78112014-03-13 14:58:06 -070027 time_provider_ && time_provider_->Init());
Alex Deymo2de23f52014-02-26 14:30:13 -080028 }
29
30 // These functions return the given provider.
31 RandomProvider* random_provider() { return random_provider_.get(); }
32 ShillProvider* shill_provider() { return shill_provider_.get(); }
Gilad Arnold78a78112014-03-13 14:58:06 -070033 TimeProvider* time_provider() { return time_provider_.get(); }
Alex Deymobd04b142014-03-18 15:00:05 -070034 SystemProvider* system_provider() { return system_provider_.get(); }
Alex Deymo2de23f52014-02-26 14:30:13 -080035
36 protected:
37 // Initialize the private scoped_ptr for each provider.
38 void set_random_provider(RandomProvider* random_provider) {
39 return random_provider_.reset(random_provider);
40 }
41
42 void set_shill_provider(ShillProvider* shill_provider) {
43 return shill_provider_.reset(shill_provider);
44 }
45
Alex Deymobd04b142014-03-18 15:00:05 -070046 void set_system_provider(SystemProvider* system_provider) {
47 return system_provider_.reset(system_provider);
48 }
49
Gilad Arnold78a78112014-03-13 14:58:06 -070050 void set_time_provider(TimeProvider* time_provider) {
51 return time_provider_.reset(time_provider);
52 }
53
Alex Deymo2de23f52014-02-26 14:30:13 -080054 private:
55 // Instances of the providers.
56 scoped_ptr<RandomProvider> random_provider_;
57 scoped_ptr<ShillProvider> shill_provider_;
Alex Deymobd04b142014-03-18 15:00:05 -070058 scoped_ptr<SystemProvider> system_provider_;
Gilad Arnold78a78112014-03-13 14:58:06 -070059 scoped_ptr<TimeProvider> time_provider_;
Alex Deymo2de23f52014-02-26 14:30:13 -080060};
61
62} // namespace chromeos_policy_manager
63
Gilad Arnold2cbb3852014-03-07 12:40:50 -080064#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_STATE_H_