blob: e83c49dd3337d00184ef26d805ba81a654aa48cd [file] [log] [blame]
Alex Deymoaea4c1c2015-08-19 20:24:43 -07001//
2// Copyright (C) 2014 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//
David Zeuthen4e89e2c2014-04-24 11:47:00 -070016
Gilad Arnold48415f12014-06-27 07:10:58 -070017#ifndef UPDATE_ENGINE_UPDATE_MANAGER_REAL_STATE_H_
18#define UPDATE_ENGINE_UPDATE_MANAGER_REAL_STATE_H_
David Zeuthen4e89e2c2014-04-24 11:47:00 -070019
Ben Chan02f7c1d2014-10-18 15:18:02 -070020#include <memory>
David Zeuthen4e89e2c2014-04-24 11:47:00 -070021
Alex Deymo63784a52014-05-28 10:46:14 -070022#include "update_engine/update_manager/state.h"
David Zeuthen4e89e2c2014-04-24 11:47:00 -070023
Alex Deymo63784a52014-05-28 10:46:14 -070024namespace chromeos_update_manager {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070025
26// State concrete implementation.
27class RealState : public State {
28 public:
Alex Deymo610277e2014-11-11 21:18:11 -080029 ~RealState() override {}
David Zeuthen4e89e2c2014-04-24 11:47:00 -070030
31 RealState(ConfigProvider* config_provider,
32 DevicePolicyProvider* device_policy_provider,
33 RandomProvider* random_provider,
34 ShillProvider* shill_provider,
35 SystemProvider* system_provider,
36 TimeProvider* time_provider,
37 UpdaterProvider* updater_provider) :
38 config_provider_(config_provider),
39 device_policy_provider_(device_policy_provider),
40 random_provider_(random_provider),
41 shill_provider_(shill_provider),
42 system_provider_(system_provider),
43 time_provider_(time_provider),
44 updater_provider_(updater_provider) {}
45
46 // These methods return the given provider.
Alex Vakulenko157fe302014-08-11 15:59:58 -070047 ConfigProvider* config_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070048 return config_provider_.get();
49 }
Alex Vakulenko157fe302014-08-11 15:59:58 -070050 DevicePolicyProvider* device_policy_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070051 return device_policy_provider_.get();
52 }
Alex Vakulenko157fe302014-08-11 15:59:58 -070053 RandomProvider* random_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070054 return random_provider_.get();
55 }
Alex Vakulenko157fe302014-08-11 15:59:58 -070056 ShillProvider* shill_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070057 return shill_provider_.get();
58 }
Alex Vakulenko157fe302014-08-11 15:59:58 -070059 SystemProvider* system_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070060 return system_provider_.get();
61 }
Alex Vakulenko157fe302014-08-11 15:59:58 -070062 TimeProvider* time_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070063 return time_provider_.get();
64 }
Alex Vakulenko157fe302014-08-11 15:59:58 -070065 UpdaterProvider* updater_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070066 return updater_provider_.get();
67 }
68
69 private:
70 // Instances of the providers.
Ben Chan02f7c1d2014-10-18 15:18:02 -070071 std::unique_ptr<ConfigProvider> config_provider_;
72 std::unique_ptr<DevicePolicyProvider> device_policy_provider_;
73 std::unique_ptr<RandomProvider> random_provider_;
74 std::unique_ptr<ShillProvider> shill_provider_;
75 std::unique_ptr<SystemProvider> system_provider_;
76 std::unique_ptr<TimeProvider> time_provider_;
77 std::unique_ptr<UpdaterProvider> updater_provider_;
David Zeuthen4e89e2c2014-04-24 11:47:00 -070078};
79
Alex Deymo63784a52014-05-28 10:46:14 -070080} // namespace chromeos_update_manager
David Zeuthen4e89e2c2014-04-24 11:47:00 -070081
Gilad Arnold48415f12014-06-27 07:10:58 -070082#endif // UPDATE_ENGINE_UPDATE_MANAGER_REAL_STATE_H_