Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(244)

Side by Side Diff: device/bluetooth/dbus/bluetooth_gatt_service_client.cc

Issue 1347193004: Refactor DBusThreadManager to split away BT clients. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/dbus/bluetooth_gatt_service_client.h" 5 #include "device/bluetooth/dbus/bluetooth_gatt_service_client.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/weak_ptr.h" 8 #include "base/memory/weak_ptr.h"
9 #include "base/observer_list.h" 9 #include "base/observer_list.h"
10 #include "dbus/bus.h" 10 #include "dbus/bus.h"
11 #include "dbus/object_manager.h" 11 #include "dbus/object_manager.h"
12 #include "third_party/cros_system_api/dbus/service_constants.h" 12 #include "third_party/cros_system_api/dbus/service_constants.h"
13 13
14 namespace chromeos { 14 namespace bluez {
15 15
16 BluetoothGattServiceClient::Properties::Properties( 16 BluetoothGattServiceClient::Properties::Properties(
17 dbus::ObjectProxy* object_proxy, 17 dbus::ObjectProxy* object_proxy,
18 const std::string& interface_name, 18 const std::string& interface_name,
19 const PropertyChangedCallback&callback) 19 const PropertyChangedCallback& callback)
20 : dbus::PropertySet(object_proxy, interface_name, callback) { 20 : dbus::PropertySet(object_proxy, interface_name, callback) {
21 RegisterProperty(bluetooth_gatt_service::kUUIDProperty, &uuid); 21 RegisterProperty(bluetooth_gatt_service::kUUIDProperty, &uuid);
22 RegisterProperty(bluetooth_gatt_service::kIncludesProperty, &includes); 22 RegisterProperty(bluetooth_gatt_service::kIncludesProperty, &includes);
23 RegisterProperty(bluetooth_gatt_service::kDeviceProperty, &device); 23 RegisterProperty(bluetooth_gatt_service::kDeviceProperty, &device);
24 RegisterProperty(bluetooth_gatt_service::kPrimaryProperty, &primary); 24 RegisterProperty(bluetooth_gatt_service::kPrimaryProperty, &primary);
25 RegisterProperty(bluetooth_gatt_service::kCharacteristicsProperty, 25 RegisterProperty(bluetooth_gatt_service::kCharacteristicsProperty,
26 &characteristics); 26 &characteristics);
27 } 27 }
28 28
29 BluetoothGattServiceClient::Properties::~Properties() { 29 BluetoothGattServiceClient::Properties::~Properties() {}
30 }
31 30
32 // The BluetoothGattServiceClient implementation used in production. 31 // The BluetoothGattServiceClient implementation used in production.
33 class BluetoothGattServiceClientImpl : public BluetoothGattServiceClient, 32 class BluetoothGattServiceClientImpl : public BluetoothGattServiceClient,
34 public dbus::ObjectManager::Interface { 33 public dbus::ObjectManager::Interface {
35 public: 34 public:
36 BluetoothGattServiceClientImpl() 35 BluetoothGattServiceClientImpl()
37 : object_manager_(NULL), 36 : object_manager_(NULL), weak_ptr_factory_(this) {}
38 weak_ptr_factory_(this) {
39 }
40 37
41 ~BluetoothGattServiceClientImpl() override { 38 ~BluetoothGattServiceClientImpl() override {
42 object_manager_->UnregisterInterface( 39 object_manager_->UnregisterInterface(
43 bluetooth_gatt_service::kBluetoothGattServiceInterface); 40 bluetooth_gatt_service::kBluetoothGattServiceInterface);
44 } 41 }
45 42
46 // BluetoothGattServiceClientImpl override. 43 // BluetoothGattServiceClientImpl override.
47 void AddObserver(BluetoothGattServiceClient::Observer* observer) override { 44 void AddObserver(BluetoothGattServiceClient::Observer* observer) override {
48 DCHECK(observer); 45 DCHECK(observer);
49 observers_.AddObserver(observer); 46 observers_.AddObserver(observer);
50 } 47 }
51 48
52 // BluetoothGattServiceClientImpl override. 49 // BluetoothGattServiceClientImpl override.
53 void RemoveObserver(BluetoothGattServiceClient::Observer* observer) override { 50 void RemoveObserver(BluetoothGattServiceClient::Observer* observer) override {
54 DCHECK(observer); 51 DCHECK(observer);
55 observers_.RemoveObserver(observer); 52 observers_.RemoveObserver(observer);
56 } 53 }
57 54
58 // BluetoothGattServiceClientImpl override. 55 // BluetoothGattServiceClientImpl override.
59 std::vector<dbus::ObjectPath> GetServices() override { 56 std::vector<dbus::ObjectPath> GetServices() override {
60 DCHECK(object_manager_); 57 DCHECK(object_manager_);
61 return object_manager_->GetObjectsWithInterface( 58 return object_manager_->GetObjectsWithInterface(
62 bluetooth_gatt_service::kBluetoothGattServiceInterface); 59 bluetooth_gatt_service::kBluetoothGattServiceInterface);
63 } 60 }
64 61
65 // BluetoothGattServiceClientImpl override. 62 // BluetoothGattServiceClientImpl override.
66 Properties* GetProperties(const dbus::ObjectPath& object_path) override { 63 Properties* GetProperties(const dbus::ObjectPath& object_path) override {
67 DCHECK(object_manager_); 64 DCHECK(object_manager_);
68 return static_cast<Properties*>( 65 return static_cast<Properties*>(object_manager_->GetProperties(
69 object_manager_->GetProperties( 66 object_path, bluetooth_gatt_service::kBluetoothGattServiceInterface));
70 object_path,
71 bluetooth_gatt_service::kBluetoothGattServiceInterface));
72 } 67 }
73 68
74 // dbus::ObjectManager::Interface override. 69 // dbus::ObjectManager::Interface override.
75 dbus::PropertySet* CreateProperties( 70 dbus::PropertySet* CreateProperties(
76 dbus::ObjectProxy* object_proxy, 71 dbus::ObjectProxy* object_proxy,
77 const dbus::ObjectPath& object_path, 72 const dbus::ObjectPath& object_path,
78 const std::string& interface_name) override { 73 const std::string& interface_name) override {
79 Properties* properties = new Properties( 74 Properties* properties = new Properties(
80 object_proxy, 75 object_proxy, interface_name,
81 interface_name,
82 base::Bind(&BluetoothGattServiceClientImpl::OnPropertyChanged, 76 base::Bind(&BluetoothGattServiceClientImpl::OnPropertyChanged,
83 weak_ptr_factory_.GetWeakPtr(), 77 weak_ptr_factory_.GetWeakPtr(), object_path));
84 object_path));
85 return static_cast<dbus::PropertySet*>(properties); 78 return static_cast<dbus::PropertySet*>(properties);
86 } 79 }
87 80
88 // dbus::ObjectManager::Interface override. 81 // dbus::ObjectManager::Interface override.
89 void ObjectAdded(const dbus::ObjectPath& object_path, 82 void ObjectAdded(const dbus::ObjectPath& object_path,
90 const std::string& interface_name) override { 83 const std::string& interface_name) override {
91 VLOG(2) << "Remote GATT service added: " << object_path.value(); 84 VLOG(2) << "Remote GATT service added: " << object_path.value();
92 FOR_EACH_OBSERVER(BluetoothGattServiceClient::Observer, observers_, 85 FOR_EACH_OBSERVER(BluetoothGattServiceClient::Observer, observers_,
93 GattServiceAdded(object_path)); 86 GattServiceAdded(object_path));
94 } 87 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 124
132 // Weak pointer factory for generating 'this' pointers that might live longer 125 // Weak pointer factory for generating 'this' pointers that might live longer
133 // than we do. 126 // than we do.
134 // Note: This should remain the last member so it'll be destroyed and 127 // Note: This should remain the last member so it'll be destroyed and
135 // invalidate its weak pointers before any other members are destroyed. 128 // invalidate its weak pointers before any other members are destroyed.
136 base::WeakPtrFactory<BluetoothGattServiceClientImpl> weak_ptr_factory_; 129 base::WeakPtrFactory<BluetoothGattServiceClientImpl> weak_ptr_factory_;
137 130
138 DISALLOW_COPY_AND_ASSIGN(BluetoothGattServiceClientImpl); 131 DISALLOW_COPY_AND_ASSIGN(BluetoothGattServiceClientImpl);
139 }; 132 };
140 133
141 BluetoothGattServiceClient::BluetoothGattServiceClient() { 134 BluetoothGattServiceClient::BluetoothGattServiceClient() {}
142 }
143 135
144 BluetoothGattServiceClient::~BluetoothGattServiceClient() { 136 BluetoothGattServiceClient::~BluetoothGattServiceClient() {}
145 }
146 137
147 // static 138 // static
148 BluetoothGattServiceClient* BluetoothGattServiceClient::Create() { 139 BluetoothGattServiceClient* BluetoothGattServiceClient::Create() {
149 return new BluetoothGattServiceClientImpl(); 140 return new BluetoothGattServiceClientImpl();
150 } 141 }
151 142
152 } // namespace chromeos 143 } // namespace bluez
OLDNEW
« no previous file with comments | « device/bluetooth/dbus/bluetooth_gatt_service_client.h ('k') | device/bluetooth/dbus/bluetooth_gatt_service_service_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698