blob: 8d93dea7957c5a9aeb4d6dc37ad3be1bedaf22c0 [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() {}
Alex Deymo94c06162014-03-21 20:34:46 -070020 State(RandomProvider* random_provider, ShillProvider* shill_provider,
21 SystemProvider* system_provider, TimeProvider* time_provider) :
22 random_provider_(random_provider),
23 shill_provider_(shill_provider),
24 system_provider_(system_provider),
25 time_provider_(time_provider) {}
Alex Deymo2de23f52014-02-26 14:30:13 -080026
Alex Deymo94c06162014-03-21 20:34:46 -070027 // These methods return the given provider.
28 virtual RandomProvider* random_provider() { return random_provider_.get(); }
29 virtual ShillProvider* shill_provider() { return shill_provider_.get(); }
30 virtual TimeProvider* time_provider() { return time_provider_.get(); }
31 virtual SystemProvider* system_provider() { return system_provider_.get(); }
Gilad Arnold78a78112014-03-13 14:58:06 -070032
Alex Deymo2de23f52014-02-26 14:30:13 -080033 private:
34 // Instances of the providers.
35 scoped_ptr<RandomProvider> random_provider_;
36 scoped_ptr<ShillProvider> shill_provider_;
Alex Deymobd04b142014-03-18 15:00:05 -070037 scoped_ptr<SystemProvider> system_provider_;
Gilad Arnold78a78112014-03-13 14:58:06 -070038 scoped_ptr<TimeProvider> time_provider_;
Alex Deymo2de23f52014-02-26 14:30:13 -080039};
40
41} // namespace chromeos_policy_manager
42
Gilad Arnold2cbb3852014-03-07 12:40:50 -080043#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_STATE_H_