10e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// 20e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// Copyright (C) 2015 The Android Open Source Project 30e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// 40e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// Licensed under the Apache License, Version 2.0 (the "License"); 50e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// you may not use this file except in compliance with the License. 60e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// You may obtain a copy of the License at 70e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// 80e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// http://www.apache.org/licenses/LICENSE-2.0 90e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// 100e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// Unless required by applicable law or agreed to in writing, software 110e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// distributed under the License is distributed on an "AS IS" BASIS, 120e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// See the License for the specific language governing permissions and 140e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// limitations under the License. 150e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu// 160e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 170e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu#ifndef APMANAGER_DBUS_SERVICE_DBUS_ADAPTOR_H_ 180e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu#define APMANAGER_DBUS_SERVICE_DBUS_ADAPTOR_H_ 190e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 200e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu#include <base/macros.h> 210e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 220e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu#include <dbus_bindings/org.chromium.apmanager.Service.h> 230e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 242ea547f45d2a143e1b25b275c46d1f317186b07aPeter Qiu#include "apmanager/error.h" 250e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu#include "apmanager/service_adaptor_interface.h" 260e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 270e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiunamespace apmanager { 280e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 290e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiuclass Service; 300e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 310e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiuclass ServiceDBusAdaptor : public org::chromium::apmanager::ServiceInterface, 320e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu public ServiceAdaptorInterface { 330e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu public: 340e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu ServiceDBusAdaptor(const scoped_refptr<dbus::Bus>& bus, 350e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu brillo::dbus_utils::ExportedObjectManager* object_manager, 360e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu Service* service); 370e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu ~ServiceDBusAdaptor() override; 380e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 390e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu // Implementation of org::chromium::apmanager::ServiceInterface 400e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu void Start( 410e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<>> 420e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu response) override; 432ea547f45d2a143e1b25b275c46d1f317186b07aPeter Qiu bool Stop(brillo::ErrorPtr* dbus_error) override; 440e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 450e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu // Implementation of ServiceAdaptorInterface. 460e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu RPCObjectIdentifier GetRpcObjectIdentifier() override; 470e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu void SetConfig(Config* config) override; 480e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu void SetState(const std::string& state) override; 490e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 500e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu private: 512ea547f45d2a143e1b25b275c46d1f317186b07aPeter Qiu void OnStartCompleted( 522ea547f45d2a143e1b25b275c46d1f317186b07aPeter Qiu std::unique_ptr<brillo::dbus_utils::DBusMethodResponse<>> response, 532ea547f45d2a143e1b25b275c46d1f317186b07aPeter Qiu const Error& error); 542ea547f45d2a143e1b25b275c46d1f317186b07aPeter Qiu 550e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu org::chromium::apmanager::ServiceAdaptor adaptor_; 560e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu dbus::ObjectPath object_path_; 570e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu brillo::dbus_utils::DBusObject dbus_object_; 580e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu Service* service_; 590e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 600e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu DISALLOW_COPY_AND_ASSIGN(ServiceDBusAdaptor); 610e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu}; 620e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 630e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu} // namespace apmanager 640e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu 650e92d1ea02ff4aec2a3c333dd2258d81c1211acePeter Qiu#endif // APMANAGER_DBUS_SERVICE_DBUS_ADAPTOR_H_ 66