1aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
2aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Copyright (C) 2015 The Android Open Source Project
3aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
4aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Licensed under the Apache License, Version 2.0 (the "License");
5aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// you may not use this file except in compliance with the License.
6aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// You may obtain a copy of the License at
7aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
8aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//      http://www.apache.org/licenses/LICENSE-2.0
9aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
10aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// Unless required by applicable law or agreed to in writing, software
11aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// distributed under the License is distributed on an "AS IS" BASIS,
12aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// See the License for the specific language governing permissions and
14aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo// limitations under the License.
15aea4c1cea20dda7ae7e85fc8924a2d784f70d806Alex Deymo//
16305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo
17305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo#ifndef UPDATE_ENGINE_SHILL_PROXY_H_
18305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo#define UPDATE_ENGINE_SHILL_PROXY_H_
19305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo
20305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo#include <memory>
21305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo#include <string>
22305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo
23305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo#include <base/macros.h>
24305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo#include <dbus/bus.h>
25758dd53cf503adbcb049909f25f54603d411be09Alex Deymo#include <dbus/object_path.h>
26d6deb1d0357f47d5525bfaeffa6c201b19abd3e7Alex Deymo#include <shill/dbus-proxies.h>
27305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo
28305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo#include "update_engine/shill_proxy_interface.h"
29305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo
30305345001d85ca2282112c2a30fe75c7a4773491Alex Deymonamespace chromeos_update_engine {
31305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo
32305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo// This class implements the connection to shill using real DBus calls.
33305345001d85ca2282112c2a30fe75c7a4773491Alex Deymoclass ShillProxy : public ShillProxyInterface {
34305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo public:
35305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo  explicit ShillProxy(const scoped_refptr<dbus::Bus>& bus);
36305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo  ~ShillProxy() override = default;
37305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo
38305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo  // Initializes the ShillProxy instance creating the manager proxy from the
39305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo  // |bus_|.
40305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo  bool Init();
41305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo
42305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo  // ShillProxyInterface overrides.
43305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo  org::chromium::flimflam::ManagerProxyInterface* GetManagerProxy() override;
44305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo  std::unique_ptr<org::chromium::flimflam::ServiceProxyInterface>
45758dd53cf503adbcb049909f25f54603d411be09Alex Deymo  GetServiceForPath(const dbus::ObjectPath& path) override;
46305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo
47305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo private:
48305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo  // A reference to the main bus for creating new ServiceProxy instances.
49305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo  scoped_refptr<dbus::Bus> bus_;
50305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo  std::unique_ptr<org::chromium::flimflam::ManagerProxyInterface>
51305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo      manager_proxy_;
52305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo
53305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo  DISALLOW_COPY_AND_ASSIGN(ShillProxy);
54305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo};
55305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo
56305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo}  // namespace chromeos_update_engine
57305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo
58305345001d85ca2282112c2a30fe75c7a4773491Alex Deymo#endif  // UPDATE_ENGINE_SHILL_PROXY_H_
59