blob: 1e2d10e1f24bf98b6e44e70dc4127f2aaeb64946 [file] [log] [blame]
David Zeuthen4e89e2c2014-04-24 11:47:00 -07001// 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 Arnold48415f12014-06-27 07:10:58 -07005#ifndef UPDATE_ENGINE_UPDATE_MANAGER_REAL_STATE_H_
6#define UPDATE_ENGINE_UPDATE_MANAGER_REAL_STATE_H_
David Zeuthen4e89e2c2014-04-24 11:47:00 -07007
8#include <base/memory/scoped_ptr.h>
9
Alex Deymo63784a52014-05-28 10:46:14 -070010#include "update_engine/update_manager/state.h"
David Zeuthen4e89e2c2014-04-24 11:47:00 -070011
Alex Deymo63784a52014-05-28 10:46:14 -070012namespace chromeos_update_manager {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070013
14// State concrete implementation.
15class RealState : public State {
16 public:
17 virtual ~RealState() {}
18
19 RealState(ConfigProvider* config_provider,
20 DevicePolicyProvider* device_policy_provider,
21 RandomProvider* random_provider,
22 ShillProvider* shill_provider,
23 SystemProvider* system_provider,
24 TimeProvider* time_provider,
25 UpdaterProvider* updater_provider) :
26 config_provider_(config_provider),
27 device_policy_provider_(device_policy_provider),
28 random_provider_(random_provider),
29 shill_provider_(shill_provider),
30 system_provider_(system_provider),
31 time_provider_(time_provider),
32 updater_provider_(updater_provider) {}
33
34 // These methods return the given provider.
Alex Vakulenko157fe302014-08-11 15:59:58 -070035 ConfigProvider* config_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070036 return config_provider_.get();
37 }
Alex Vakulenko157fe302014-08-11 15:59:58 -070038 DevicePolicyProvider* device_policy_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070039 return device_policy_provider_.get();
40 }
Alex Vakulenko157fe302014-08-11 15:59:58 -070041 RandomProvider* random_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070042 return random_provider_.get();
43 }
Alex Vakulenko157fe302014-08-11 15:59:58 -070044 ShillProvider* shill_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070045 return shill_provider_.get();
46 }
Alex Vakulenko157fe302014-08-11 15:59:58 -070047 SystemProvider* system_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070048 return system_provider_.get();
49 }
Alex Vakulenko157fe302014-08-11 15:59:58 -070050 TimeProvider* time_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070051 return time_provider_.get();
52 }
Alex Vakulenko157fe302014-08-11 15:59:58 -070053 UpdaterProvider* updater_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070054 return updater_provider_.get();
55 }
56
57 private:
58 // Instances of the providers.
59 scoped_ptr<ConfigProvider> config_provider_;
60 scoped_ptr<DevicePolicyProvider> device_policy_provider_;
61 scoped_ptr<RandomProvider> random_provider_;
62 scoped_ptr<ShillProvider> shill_provider_;
63 scoped_ptr<SystemProvider> system_provider_;
64 scoped_ptr<TimeProvider> time_provider_;
65 scoped_ptr<UpdaterProvider> updater_provider_;
66};
67
Alex Deymo63784a52014-05-28 10:46:14 -070068} // namespace chromeos_update_manager
David Zeuthen4e89e2c2014-04-24 11:47:00 -070069
Gilad Arnold48415f12014-06-27 07:10:58 -070070#endif // UPDATE_ENGINE_UPDATE_MANAGER_REAL_STATE_H_