| // Copyright 2019 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef DLCSERVICE_DBUS_ADAPTORS_DBUS_ADAPTOR_H_ |
| #define DLCSERVICE_DBUS_ADAPTORS_DBUS_ADAPTOR_H_ |
| |
| #include <memory> |
| #include <string> |
| #include <vector> |
| |
| #include <base/memory/weak_ptr.h> |
| #include <dlcservice/proto_bindings/dlcservice.pb.h> |
| #include <imageloader/dbus-proxies.h> |
| |
| #include "dlcservice/dbus_adaptors/org.chromium.DlcServiceInterface.h" |
| #include "dlcservice/dlc_service.h" |
| |
| namespace dlcservice { |
| |
| class DBusService : public org::chromium::DlcServiceInterfaceInterface { |
| public: |
| // Will take the ownership of |dlc_service|. |
| explicit DBusService(DlcServiceInterface* dlc_service); |
| ~DBusService() = default; |
| |
| // org::chromium::DlServiceInterfaceInterface overrides: |
| bool InstallDlc(brillo::ErrorPtr* err, const std::string& id_in) override; |
| bool InstallWithOmahaUrl(brillo::ErrorPtr* err, |
| const std::string& id_in, |
| const std::string& omaha_url_in) override; |
| bool Uninstall(brillo::ErrorPtr* err, const std::string& id_in) override; |
| bool Purge(brillo::ErrorPtr* err, const std::string& id_in) override; |
| bool GetDlcState(brillo::ErrorPtr* err, |
| const std::string& id_in, |
| DlcState* dlc_state_out) override; |
| bool GetInstalled(brillo::ErrorPtr* err, |
| std::vector<std::string>* ids_out) override; |
| bool GetExistingDlcs(brillo::ErrorPtr* err, |
| DlcsWithContent* dlc_list_out) override; |
| // Only for update_engine to call. |
| bool GetDlcsToUpdate(brillo::ErrorPtr* err, |
| std::vector<std::string>* ids_out) override; |
| // Only for update_engine to call. |
| bool InstallCompleted(brillo::ErrorPtr* err, |
| const std::vector<std::string>& ids_in) override; |
| // Only for update_engine to call. |
| bool UpdateCompleted(brillo::ErrorPtr* err, |
| const std::vector<std::string>& ids_in) override; |
| |
| private: |
| DlcServiceInterface* dlc_service_; |
| |
| DBusService(const DBusService&) = delete; |
| DBusService& operator=(const DBusService&) = delete; |
| }; |
| |
| class DBusAdaptor : public org::chromium::DlcServiceInterfaceAdaptor, |
| public StateChangeReporterInterface { |
| public: |
| // Will take the ownership of |dbus_service|. |
| explicit DBusAdaptor(std::unique_ptr<DBusService> dbus_service); |
| ~DBusAdaptor() override = default; |
| |
| // |StateChangeReporterInterface| overrides. |
| void DlcStateChanged(const DlcState& dlc_state) override; |
| |
| private: |
| std::unique_ptr<DBusService> dbus_service_; |
| |
| DBusAdaptor(const DBusAdaptor&) = delete; |
| DBusAdaptor& operator=(const DBusAdaptor&) = delete; |
| }; |
| |
| } // namespace dlcservice |
| |
| #endif // DLCSERVICE_DBUS_ADAPTORS_DBUS_ADAPTOR_H_ |