blob: 3eedb618ec3964e22c7f343749c07c7547f9eed5 [file] [log] [blame]
David Rochbergb8b89b12012-02-28 16:11:33 -05001// Copyright (c) 2012 The Chromium OS 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#include "shill/dbus_objectmanager_proxy.h"
5
6#include <base/logging.h>
7
8#include "cellular_error.h"
9
10using std::string;
11
12namespace shill {
13
14DBusObjectManagerProxy::DBusObjectManagerProxy(
David Rochbergb8b89b12012-02-28 16:11:33 -050015 DBus::Connection *connection,
16 const string &path,
17 const string &service)
Eric Shienbrood9a245532012-03-07 14:20:39 -050018 : proxy_(connection, path, service) {}
David Rochbergb8b89b12012-02-28 16:11:33 -050019DBusObjectManagerProxy::~DBusObjectManagerProxy() {}
20
Eric Shienbrood9a245532012-03-07 14:20:39 -050021void DBusObjectManagerProxy::GetManagedObjects(
22 Error *error,
23 const ManagedObjectsCallback &callback,
24 int timeout) {
25 scoped_ptr<ManagedObjectsCallback> cb(new ManagedObjectsCallback(callback));
26 try {
27 proxy_.GetManagedObjects(cb.get(), timeout);
28 } catch (DBus::Error e) {
29 if (error)
30 CellularError::FromDBusError(e, error);
31 }
32}
33
34void DBusObjectManagerProxy::set_interfaces_added_callback(
35 const InterfacesAddedSignalCallback &callback) {
36 proxy_.set_interfaces_added_callback(callback);
37}
38
39void DBusObjectManagerProxy::set_interfaces_removed_callback(
40 const InterfacesRemovedSignalCallback &callback) {
41 proxy_.set_interfaces_removed_callback(callback);
David Rochbergb8b89b12012-02-28 16:11:33 -050042}
43
44// Inherited from DBusObjectManagerProxyInterface.
Eric Shienbrood9a245532012-03-07 14:20:39 -050045DBusObjectManagerProxy::Proxy::Proxy(DBus::Connection *connection,
David Rochbergb8b89b12012-02-28 16:11:33 -050046 const std::string &path,
47 const std::string &service)
Eric Shienbrood9a245532012-03-07 14:20:39 -050048 : DBus::ObjectProxy(*connection, path, service.c_str()) {}
David Rochbergb8b89b12012-02-28 16:11:33 -050049
50DBusObjectManagerProxy::Proxy::~Proxy() {}
51
Eric Shienbrood9a245532012-03-07 14:20:39 -050052void DBusObjectManagerProxy::Proxy::set_interfaces_added_callback(
53 const InterfacesAddedSignalCallback &callback) {
54 interfaces_added_callback_ = callback;
55}
56
57void DBusObjectManagerProxy::Proxy::set_interfaces_removed_callback(
58 const InterfacesRemovedSignalCallback &callback) {
59 interfaces_removed_callback_ = callback;
60}
61
David Rochbergb8b89b12012-02-28 16:11:33 -050062// Signal callback
63void DBusObjectManagerProxy::Proxy::InterfacesAdded(
64 const ::DBus::Path &object_path,
65 const DBusInterfaceToProperties &interface_to_properties) {
66 VLOG(2) << __func__ << "(" << object_path << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -050067 interfaces_added_callback_.Run(object_path, interface_to_properties);
David Rochbergb8b89b12012-02-28 16:11:33 -050068}
69
70// Signal callback
71void DBusObjectManagerProxy::Proxy::InterfacesRemoved(
72 const ::DBus::Path &object_path,
73 const std::vector< std::string > &interfaces) {
74 VLOG(2) << __func__ << "(" << object_path << ")";
Eric Shienbrood9a245532012-03-07 14:20:39 -050075 interfaces_removed_callback_.Run(object_path, interfaces);
David Rochbergb8b89b12012-02-28 16:11:33 -050076}
77
78// Method callback
79void DBusObjectManagerProxy::Proxy::GetManagedObjectsCallback(
80 const DBusObjectsWithProperties &objects_with_properties,
81 const DBus::Error &dberror,
82 void *data) {
83 VLOG(2) << __func__;
84 shill::Error error;
85 CellularError::FromDBusError(dberror, &error);
Eric Shienbrood9a245532012-03-07 14:20:39 -050086 scoped_ptr<ManagedObjectsCallback> callback(
87 reinterpret_cast<ManagedObjectsCallback *>(data));
David Rochbergb8b89b12012-02-28 16:11:33 -050088
Eric Shienbrood9a245532012-03-07 14:20:39 -050089 callback->Run(objects_with_properties, error);
David Rochbergb8b89b12012-02-28 16:11:33 -050090}
91
92} // namespace shill