blob: 056d46d58eae6e1561dc6c956105305adf9ee38f [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,
Amin Hassani4b717432019-01-14 16:24:20 -080037 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) {}
David Zeuthen4e89e2c2014-04-24 11:47:00 -070045
46 // These methods return the given provider.
Amin Hassani4b717432019-01-14 16:24:20 -080047 ConfigProvider* config_provider() override { return config_provider_.get(); }
Alex Vakulenko157fe302014-08-11 15:59:58 -070048 DevicePolicyProvider* device_policy_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070049 return device_policy_provider_.get();
50 }
Amin Hassani4b717432019-01-14 16:24:20 -080051 RandomProvider* random_provider() override { return random_provider_.get(); }
52 ShillProvider* shill_provider() override { return shill_provider_.get(); }
53 SystemProvider* system_provider() override { return system_provider_.get(); }
54 TimeProvider* time_provider() override { return time_provider_.get(); }
Alex Vakulenko157fe302014-08-11 15:59:58 -070055 UpdaterProvider* updater_provider() override {
David Zeuthen4e89e2c2014-04-24 11:47:00 -070056 return updater_provider_.get();
57 }
58
59 private:
60 // Instances of the providers.
Ben Chan02f7c1d2014-10-18 15:18:02 -070061 std::unique_ptr<ConfigProvider> config_provider_;
62 std::unique_ptr<DevicePolicyProvider> device_policy_provider_;
63 std::unique_ptr<RandomProvider> random_provider_;
64 std::unique_ptr<ShillProvider> shill_provider_;
65 std::unique_ptr<SystemProvider> system_provider_;
66 std::unique_ptr<TimeProvider> time_provider_;
67 std::unique_ptr<UpdaterProvider> updater_provider_;
David Zeuthen4e89e2c2014-04-24 11:47:00 -070068};
69
Alex Deymo63784a52014-05-28 10:46:14 -070070} // namespace chromeos_update_manager
David Zeuthen4e89e2c2014-04-24 11:47:00 -070071
Gilad Arnold48415f12014-06-27 07:10:58 -070072#endif // UPDATE_ENGINE_UPDATE_MANAGER_REAL_STATE_H_