Index: chromeos/dbus/nfc_client_helpers.h |
diff --git a/chromeos/dbus/nfc_client_helpers.h b/chromeos/dbus/nfc_client_helpers.h |
deleted file mode 100644 |
index d6b50e880487958f250e41a2e8f44db54fb7976a..0000000000000000000000000000000000000000 |
--- a/chromeos/dbus/nfc_client_helpers.h |
+++ /dev/null |
@@ -1,206 +0,0 @@ |
-// Copyright 2013 The Chromium 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 CHROMEOS_DBUS_NFC_CLIENT_HELPERS_H_ |
-#define CHROMEOS_DBUS_NFC_CLIENT_HELPERS_H_ |
- |
-#include <map> |
-#include <string> |
-#include <utility> |
- |
-#include "base/callback.h" |
-#include "base/macros.h" |
-#include "base/values.h" |
-#include "chromeos/chromeos_export.h" |
-#include "chromeos/dbus/nfc_property_set.h" |
-#include "dbus/bus.h" |
-#include "dbus/message.h" |
-#include "dbus/object_path.h" |
-#include "dbus/object_proxy.h" |
- |
-namespace chromeos { |
-namespace nfc_client_helpers { |
- |
-// Constants used to indicate exceptional error conditions. |
-CHROMEOS_EXPORT extern const char kNoResponseError[]; |
-CHROMEOS_EXPORT extern const char kUnknownObjectError[]; |
- |
-// The ErrorCallback is used by D-Bus methods to indicate failure. |
-// It receives two arguments: the name of the error in |error_name| and |
-// an optional message in |error_message|. |
-typedef base::Callback<void(const std::string& error_name, |
- const std::string& error_message)> ErrorCallback; |
- |
-// A vector of object paths is used frequently among the NFC client classes. |
-// This typedef makes the type specifier a little less verbose. |
-typedef std::vector<dbus::ObjectPath> ObjectPathVector; |
- |
-// Called when a response for a successful method call is received. |
-CHROMEOS_EXPORT void OnSuccess(const base::Closure& callback, |
- dbus::Response* response); |
- |
-// Extracts the error data from |response| and invokes |error_callback| with |
-// the resulting error name and error message. |
-CHROMEOS_EXPORT void OnError(const ErrorCallback& error_callback, |
- dbus::ErrorResponse* response); |
- |
-// DBusObjectMap is a simple data structure that facilitates keeping track of |
-// D-Bus object proxies and properties. It maintains a mapping from object |
-// paths to object proxy - property structure pairs. |
-// TODO(armansito): This is only needed until neard implements the D-Bus |
-// org.freedesktop.DBus.ObjectManager interface. Remove this once we upgrade |
-// to neard-0.14. |
-class CHROMEOS_EXPORT DBusObjectMap { |
- public: |
- // DBusObjectMap::Delegate must be implemented by classes that use an |
- // instance of DBusObjectMap to manage object proxies. |
- class Delegate { |
- public: |
- virtual ~Delegate() {} |
- |
- // Called by DBusObjectMap to create a Properties structure for the remote |
- // D-Bus object accessible through |object_proxy|. The implementation class |
- // should create and return an instance of its own subclass of |
- // ::chromeos::NfcPropertySet. DBusObjectMap will handle connecting the |
- // signals and update the properties. |
- virtual NfcPropertySet* CreateProperties( |
- dbus::ObjectProxy* object_proxy) = 0; |
- |
- // Notifies the delegate that an object was added with object path |
- // |object_path|. |
- virtual void ObjectAdded(const dbus::ObjectPath& object_path) {} |
- |
- // Notifies the delegate that an object was removed with object path |
- // |object_path|. The object proxy will still be valid before this method |
- // returns, so that delegates can perform any clean up that use the object |
- // properties. Note that the remote object will no longer be available, |
- // but the delegates can still access the cached properties of the object. |
- virtual void ObjectRemoved(const dbus::ObjectPath& object_path) {} |
- }; |
- |
- // Constructor takes in the D-Bus service name the proxies belong to and |
- // the delegate which will be used to construct properties structures. |
- // |service_name| must be a valid D-Bus service name, and |delegate| cannot |
- // be NULL. |
- DBusObjectMap(const std::string& service_name, |
- Delegate* delegate, |
- dbus::Bus* bus); |
- |
- // Destructor destroys all managed object proxies and notifies the delegate |
- // for each removed object. |
- virtual ~DBusObjectMap(); |
- |
- // Returns the object proxy for object path |object_path|. If no object proxy |
- // exists for |object_path|, returns NULL. |
- dbus::ObjectProxy* GetObjectProxy(const dbus::ObjectPath& object_path); |
- |
- // Returns the properties structure for remote object with object path |
- // |object_path|. If no properties structure exists for |object_path|, |
- // returns NULL. |
- NfcPropertySet* GetObjectProperties(const dbus::ObjectPath& object_path); |
- |
- // Updates the object proxies from the given list of object paths |
- // |object_paths|. It notifies the delegate of each added and removed object |
- // via |Delegate::ObjectAdded| and |Delegate::ObjectRemoved|. |
- void UpdateObjects(const ObjectPathVector& object_paths); |
- |
- // Creates and stores an object proxy and properties structure for a remote |
- // object with object path |object_path|. If an object proxy was already |
- // created, this operation returns false; returns true otherwise. |
- bool AddObject(const dbus::ObjectPath& object_path); |
- |
- // Removes the D-Bus object proxy and the properties structure for the |
- // remote object with object path |object_path|. If no known proxy for |
- // |object_path| exists, then this operation is a no-op. |
- void RemoveObject(const dbus::ObjectPath& object_path); |
- |
- // Invokes GetAll on the property structure belonging to object path |
- // |object_path|. If |object_path| is unknown, this method is a no-op. |
- void RefreshProperties(const dbus::ObjectPath& object_path); |
- |
- // Invokes GetAll on the property structures belonging to all object paths |
- // that are managed by this instance. |
- void RefreshAllProperties(); |
- |
- // Returns a list containing the object paths of all remote objects that are |
- // managed by this instance. |
- ObjectPathVector GetObjectPaths(); |
- |
- private: |
- typedef std::pair<dbus::ObjectProxy*, NfcPropertySet*> ObjectPropertyPair; |
- typedef std::map<dbus::ObjectPath, ObjectPropertyPair> ObjectMap; |
- |
- // Returns an instance of ObjectPropertyPair by looking up |object_path| in |
- // |object_map_|. If no entry is found, returns an instance that contains |
- // NULL pointers. |
- ObjectPropertyPair GetObjectPropertyPair(const dbus::ObjectPath& object_path); |
- |
- // Cleans up the object proxy and properties structure in |pair|. This method |
- // will remove the object proxy by calling |dbus::Bus::RemoveObjectProxy| and |
- // explicitly deallocate the properties structure. Once this method exits, |
- // both pointers stored by |pair| will become invalid and should not be used. |
- // If |pair| contains invalid pointers at the time when this method is called |
- // memory errors are likely to happen, so only valid pointers should be |
- // passed. |
- void CleanUpObjectPropertyPair(const ObjectPropertyPair& pair); |
- |
- dbus::Bus* bus_; |
- ObjectMap object_map_; |
- std::string service_name_; |
- Delegate* delegate_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DBusObjectMap); |
-}; |
- |
-// Most NFC D-Bus client classes need to be able to look up object proxies by |
-// the path of the object that owns them. For example, NfcTagClient updates tag |
-// proxies based on the adapter that owns them. ObjectProxyTree is a two-level |
-// mapping that makes this management easy. |
-class ObjectProxyTree { |
- public: |
- ObjectProxyTree(); |
- |
- // The destructor destroys all contained DBusObjectMap instances. This will |
- // cause the delegate to get notified for each removed object proxy according |
- // to the DBusObjectMap destructor. |
- virtual ~ObjectProxyTree(); |
- |
- // Creates a DBusObjectMap instance at object path |object_path|. |
- // |service_name|, |delegate|, and |bus| are passed to the constructor of the |
- // DBusObjectMap that is created. If a DBusObjectMap for |object_path| was |
- // already assigned, returns false and does nothing. Otherwise, if a new |
- // DBusObjectMap was created, returns true. |
- bool CreateObjectMap(const dbus::ObjectPath& object_path, |
- const std::string& service_name, |
- DBusObjectMap::Delegate* delegate, |
- dbus::Bus* bus); |
- |
- // Destroys the DBusObjectMap instance at object path |object_path|. |
- void RemoveObjectMap(const dbus::ObjectPath& object_path); |
- |
- // Returns the DBusObjectMap instance at object path |object_path|, or NULL |
- // if no such instance exists. |
- DBusObjectMap* GetObjectMap(const dbus::ObjectPath& object_path); |
- |
- // Returns the object proxy by searching all stored DBusObjectMap instances |
- // for |object_proxy_path|. Returns NULL, if nothing is found. |
- dbus::ObjectProxy* FindObjectProxy( |
- const dbus::ObjectPath& object_proxy_path); |
- |
- // Returns the object property structure by searching all stored DBusObjectMap |
- // instances for |object_proxy_path|. Returns NULL, if nothing is found. |
- NfcPropertySet* FindObjectProperties( |
- const dbus::ObjectPath& object_proxy_path); |
- |
- private: |
- typedef std::map<dbus::ObjectPath, DBusObjectMap*> PathsToObjectMapsType; |
- PathsToObjectMapsType paths_to_object_maps_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ObjectProxyTree); |
-}; |
- |
-} // namespace nfc_client_helpers |
-} // namespace chromeos |
- |
-#endif // CHROMEOS_DBUS_NFC_CLIENT_HELPERS_H_ |