shill_ipconfig_client.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROMEOS_DBUS_SHILL_IPCONFIG_CLIENT_H_ 6#define CHROMEOS_DBUS_SHILL_IPCONFIG_CLIENT_H_ 7 8#include <string> 9 10#include "base/basictypes.h" 11#include "base/callback.h" 12#include "chromeos/chromeos_export.h" 13#include "chromeos/dbus/dbus_client_implementation_type.h" 14#include "chromeos/dbus/shill_client_helper.h" 15 16namespace base { 17 18class Value; 19class DictionaryValue; 20 21} // namespace base 22 23namespace dbus { 24 25class Bus; 26class ObjectPath; 27 28} // namespace dbus 29 30namespace chromeos { 31 32class ShillPropertyChangedObserver; 33 34// ShillIPConfigClient is used to communicate with the Shill IPConfig 35// service. All methods should be called from the origin thread which 36// initializes the DBusThreadManager instance. 37class CHROMEOS_EXPORT ShillIPConfigClient { 38 public: 39 typedef ShillClientHelper::PropertyChangedHandler PropertyChangedHandler; 40 typedef ShillClientHelper::DictionaryValueCallback DictionaryValueCallback; 41 virtual ~ShillIPConfigClient(); 42 43 // Factory function, creates a new instance which is owned by the caller. 44 // For normal usage, access the singleton via DBusThreadManager::Get(). 45 static ShillIPConfigClient* Create(DBusClientImplementationType type, 46 dbus::Bus* bus); 47 48 // Adds a property changed |observer| for the ipconfig at |ipconfig_path|. 49 virtual void AddPropertyChangedObserver( 50 const dbus::ObjectPath& ipconfig_path, 51 ShillPropertyChangedObserver* observer) = 0; 52 53 // Removes a property changed |observer| for the ipconfig at |ipconfig_path|. 54 virtual void RemovePropertyChangedObserver( 55 const dbus::ObjectPath& ipconfig_path, 56 ShillPropertyChangedObserver* observer) = 0; 57 58 // Refreshes the active IP configuration after service property changes and 59 // renews the DHCP lease, if any. 60 virtual void Refresh(const dbus::ObjectPath& ipconfig_path, 61 const VoidDBusMethodCallback& callback) = 0; 62 63 // Calls GetProperties method. 64 // |callback| is called after the method call succeeds. 65 virtual void GetProperties(const dbus::ObjectPath& ipconfig_path, 66 const DictionaryValueCallback& callback) = 0; 67 68 // DEPRECATED DO NOT USE: Calls GetProperties method and blocks until the 69 // method call finishes. The caller is responsible to delete the result. 70 // Thie method returns NULL when method call fails. 71 // 72 // TODO(hashimoto): Refactor CrosListIPConfigs to remove this method. 73 // crosbug.com/29902 74 virtual base::DictionaryValue* CallGetPropertiesAndBlock( 75 const dbus::ObjectPath& ipconfig_path) = 0; 76 77 // Calls SetProperty method. 78 // |callback| is called after the method call succeeds. 79 virtual void SetProperty(const dbus::ObjectPath& ipconfig_path, 80 const std::string& name, 81 const base::Value& value, 82 const VoidDBusMethodCallback& callback) = 0; 83 84 // Calls ClearProperty method. 85 // |callback| is called after the method call succeeds. 86 virtual void ClearProperty(const dbus::ObjectPath& ipconfig_path, 87 const std::string& name, 88 const VoidDBusMethodCallback& callback) = 0; 89 90 // Calls Remove method. 91 // |callback| is called after the method call succeeds. 92 virtual void Remove(const dbus::ObjectPath& ipconfig_path, 93 const VoidDBusMethodCallback& callback) = 0; 94 95 protected: 96 // Create() should be used instead. 97 ShillIPConfigClient(); 98 99 private: 100 DISALLOW_COPY_AND_ASSIGN(ShillIPConfigClient); 101}; 102 103} // namespace chromeos 104 105#endif // CHROMEOS_DBUS_SHILL_IPCONFIG_CLIENT_H_ 106