blob: fb847a7a1d7290f84404f2a30b5f0621fe51a81f [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"
Gilad Arnold78a78112014-03-13 14:58:06 -070010#include "update_engine/policy_manager/time_provider.h"
Alex Deymo2de23f52014-02-26 14:30:13 -080011
12namespace chromeos_policy_manager {
13
14// The State class is an interface to the ensemble of providers. This class
15// gives visibility of the state providers to policy implementations.
16class State {
17 public:
18 virtual ~State() {}
19
20 // Initializes the State instance. Returns whether the initialization
21 // succeeded.
22 bool Init() {
23 return (random_provider_ && random_provider_->Init() &&
Gilad Arnold78a78112014-03-13 14:58:06 -070024 shill_provider_ && shill_provider_->Init() &&
25 time_provider_ && time_provider_->Init());
Alex Deymo2de23f52014-02-26 14:30:13 -080026 }
27
28 // These functions return the given provider.
29 RandomProvider* random_provider() { return random_provider_.get(); }
30 ShillProvider* shill_provider() { return shill_provider_.get(); }
Gilad Arnold78a78112014-03-13 14:58:06 -070031 TimeProvider* time_provider() { return time_provider_.get(); }
Alex Deymo2de23f52014-02-26 14:30:13 -080032
33 protected:
34 // Initialize the private scoped_ptr for each provider.
35 void set_random_provider(RandomProvider* random_provider) {
36 return random_provider_.reset(random_provider);
37 }
38
39 void set_shill_provider(ShillProvider* shill_provider) {
40 return shill_provider_.reset(shill_provider);
41 }
42
Gilad Arnold78a78112014-03-13 14:58:06 -070043 void set_time_provider(TimeProvider* time_provider) {
44 return time_provider_.reset(time_provider);
45 }
46
Alex Deymo2de23f52014-02-26 14:30:13 -080047 private:
48 // Instances of the providers.
49 scoped_ptr<RandomProvider> random_provider_;
50 scoped_ptr<ShillProvider> shill_provider_;
Gilad Arnold78a78112014-03-13 14:58:06 -070051 scoped_ptr<TimeProvider> time_provider_;
Alex Deymo2de23f52014-02-26 14:30:13 -080052};
53
54} // namespace chromeos_policy_manager
55
Gilad Arnold2cbb3852014-03-07 12:40:50 -080056#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_STATE_H_