1 // 2 // Copyright (C) 2015 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 // 16 17 #ifndef SHILL_DBUS_CHROMEOS_WIMAX_MANAGER_PROXY_H_ 18 #define SHILL_DBUS_CHROMEOS_WIMAX_MANAGER_PROXY_H_ 19 20 #include <string> 21 #include <vector> 22 23 #include <base/macros.h> 24 #include <wimax_manager/dbus-proxies.h> 25 26 #include "shill/wimax/wimax_manager_proxy_interface.h" 27 28 namespace shill { 29 30 class EventDispatcher; 31 32 class ChromeosWiMaxManagerProxy : public WiMaxManagerProxyInterface { 33 public: 34 explicit ChromeosWiMaxManagerProxy( 35 EventDispatcher* dispatcher, 36 const scoped_refptr<dbus::Bus>& bus, 37 const base::Closure& service_appeared_callback, 38 const base::Closure& service_vanished_callback); 39 ~ChromeosWiMaxManagerProxy() override; 40 41 // Inherited from WiMaxManagerProxyInterface. 42 void set_devices_changed_callback( 43 const DevicesChangedCallback& callback) override; 44 RpcIdentifiers Devices(Error* error) override; 45 46 private: 47 class PropertySet : public dbus::PropertySet { 48 public: 49 PropertySet(dbus::ObjectProxy* object_proxy, 50 const std::string& interface_name, 51 const PropertyChangedCallback& callback); 52 brillo::dbus_utils::Property<std::vector<dbus::ObjectPath>> devices; 53 54 private: 55 DISALLOW_COPY_AND_ASSIGN(PropertySet); 56 }; 57 58 static const char kPropertyDevices[]; 59 60 // Called when service appeared or vanished. 61 void OnServiceAvailable(bool available); 62 63 // Service name owner changed handler. 64 void OnServiceOwnerChanged(const std::string& old_owner, 65 const std::string& new_owner); 66 67 // Signal callbacks inherited from WiMaxManager_proxy. 68 void DevicesChanged(const std::vector<dbus::ObjectPath>& devices); 69 70 // Callback invoked when the value of property |property_name| is changed. 71 void OnPropertyChanged(const std::string& property_name); 72 73 // Called when signal is connected to the ObjectProxy. 74 void OnSignalConnected(const std::string& interface_name, 75 const std::string& signal_name, 76 bool success); 77 78 std::unique_ptr<org::chromium::WiMaxManagerProxy> proxy_; 79 std::unique_ptr<PropertySet> properties_; 80 EventDispatcher* dispatcher_; 81 base::Closure service_appeared_callback_; 82 base::Closure service_vanished_callback_; 83 bool service_available_; 84 DevicesChangedCallback devices_changed_callback_; 85 86 base::WeakPtrFactory<ChromeosWiMaxManagerProxy> weak_factory_{this}; 87 DISALLOW_COPY_AND_ASSIGN(ChromeosWiMaxManagerProxy); 88 }; 89 90 } // namespace shill 91 92 #endif // SHILL_DBUS_CHROMEOS_WIMAX_MANAGER_PROXY_H_ 93