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

Side by Side Diff: chromeos/dbus/leadership_daemon_manager_client.cc

Issue 972983003: ChromeOS DBus: leaderd API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix minor nit Created 5 years, 9 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
« no previous file with comments | « chromeos/dbus/leadership_daemon_manager_client.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/leadership_daemon_manager_client.h" 5 #include "chromeos/dbus/leadership_daemon_manager_client.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/weak_ptr.h" 9 #include "base/memory/weak_ptr.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 public dbus::ObjectManager::Interface { 46 public dbus::ObjectManager::Interface {
47 public: 47 public:
48 LeadershipDaemonManagerClientImpl(); 48 LeadershipDaemonManagerClientImpl();
49 ~LeadershipDaemonManagerClientImpl() override; 49 ~LeadershipDaemonManagerClientImpl() override;
50 50
51 // LeadershipDaemonManagerClient overrides. 51 // LeadershipDaemonManagerClient overrides.
52 void AddObserver(Observer* observer) override; 52 void AddObserver(Observer* observer) override;
53 void RemoveObserver(Observer* observer) override; 53 void RemoveObserver(Observer* observer) override;
54 void JoinGroup(const std::string& group, 54 void JoinGroup(const std::string& group,
55 const base::DictionaryValue& options, 55 const base::DictionaryValue& options,
56 const StringDBusMethodCallback& callback) override; 56 const ObjectPathDBusMethodCallback& callback) override;
57 void LeaveGroup(const std::string& object_path, 57 void LeaveGroup(const std::string& object_path,
58 const VoidDBusMethodCallback& callback) override; 58 const VoidDBusMethodCallback& callback) override;
59 void SetScore(const std::string& object_path, 59 void SetScore(const std::string& object_path,
60 int score, 60 int score,
61 const VoidDBusMethodCallback& callback) override; 61 const VoidDBusMethodCallback& callback) override;
62 void PokeLeader(const std::string& object_path, 62 void PokeLeader(const std::string& object_path,
63 const VoidDBusMethodCallback& callback) override; 63 const VoidDBusMethodCallback& callback) override;
64 void Ping(const StringDBusMethodCallback& callback) override; 64 void Ping(const StringDBusMethodCallback& callback) override;
65 const GroupProperties* GetGroupProperties( 65 const GroupProperties* GetGroupProperties(
66 const dbus::ObjectPath& object_path) override; 66 const dbus::ObjectPath& object_path) override;
(...skipping 11 matching lines...) Expand all
78 void ObjectRemoved(const dbus::ObjectPath& object_path, 78 void ObjectRemoved(const dbus::ObjectPath& object_path,
79 const std::string& interface_name) override; 79 const std::string& interface_name) override;
80 80
81 private: 81 private:
82 // Called by dbus::PropertySet when a property value is changed, 82 // Called by dbus::PropertySet when a property value is changed,
83 // either by result of a signal or response to a GetAll() or Get() 83 // either by result of a signal or response to a GetAll() or Get()
84 // call. Informs observers. 84 // call. Informs observers.
85 void OnGroupPropertyChanged(const dbus::ObjectPath& object_path, 85 void OnGroupPropertyChanged(const dbus::ObjectPath& object_path,
86 const std::string& property_name); 86 const std::string& property_name);
87 87
88 void OnObjectPathDBusMethod(const ObjectPathDBusMethodCallback& callback,
89 dbus::Response* response);
88 void OnStringDBusMethod(const StringDBusMethodCallback& callback, 90 void OnStringDBusMethod(const StringDBusMethodCallback& callback,
89 dbus::Response* response); 91 dbus::Response* response);
90 void OnVoidDBusMethod(const VoidDBusMethodCallback& callback, 92 void OnVoidDBusMethod(const VoidDBusMethodCallback& callback,
91 dbus::Response* response); 93 dbus::Response* response);
92 94
93 // List of observers interested in event notifications from us. 95 // List of observers interested in event notifications from us.
94 ObserverList<Observer> observers_; 96 ObserverList<Observer> observers_;
95 dbus::ObjectManager* object_manager_; 97 dbus::ObjectManager* object_manager_;
96 base::WeakPtrFactory<LeadershipDaemonManagerClientImpl> weak_ptr_factory_; 98 base::WeakPtrFactory<LeadershipDaemonManagerClientImpl> weak_ptr_factory_;
97 99
(...skipping 17 matching lines...) Expand all
115 } 117 }
116 118
117 void LeadershipDaemonManagerClientImpl::RemoveObserver(Observer* observer) { 119 void LeadershipDaemonManagerClientImpl::RemoveObserver(Observer* observer) {
118 DCHECK(observer); 120 DCHECK(observer);
119 observers_.RemoveObserver(observer); 121 observers_.RemoveObserver(observer);
120 } 122 }
121 123
122 void LeadershipDaemonManagerClientImpl::JoinGroup( 124 void LeadershipDaemonManagerClientImpl::JoinGroup(
123 const std::string& group, 125 const std::string& group,
124 const base::DictionaryValue& options, 126 const base::DictionaryValue& options,
125 const StringDBusMethodCallback& callback) { 127 const ObjectPathDBusMethodCallback& callback) {
126 dbus::ObjectProxy* object_proxy = object_manager_->GetObjectProxy( 128 dbus::ObjectProxy* object_proxy = object_manager_->GetObjectProxy(
127 dbus::ObjectPath(leaderd::kLeaderdManagerPath)); 129 dbus::ObjectPath(leaderd::kLeaderdManagerPath));
128 if (!object_proxy) { 130 if (!object_proxy) {
129 base::MessageLoop::current()->PostTask( 131 base::MessageLoop::current()->PostTask(
130 FROM_HERE, 132 FROM_HERE,
131 base::Bind(&LeadershipDaemonManagerClientImpl::OnStringDBusMethod, 133 base::Bind(&LeadershipDaemonManagerClientImpl::OnObjectPathDBusMethod,
132 weak_ptr_factory_.GetWeakPtr(), callback, nullptr)); 134 weak_ptr_factory_.GetWeakPtr(), callback, nullptr));
133 return; 135 return;
134 } 136 }
135 137
136 dbus::MethodCall method_call(leaderd::kManagerInterface, 138 dbus::MethodCall method_call(leaderd::kManagerInterface,
137 leaderd::kJoinGroupMethod); 139 leaderd::kJoinGroupMethod);
138 dbus::MessageWriter writer(&method_call); 140 dbus::MessageWriter writer(&method_call);
139 writer.AppendString(group); 141 writer.AppendString(group);
140 dbus::AppendValueData(&writer, options); 142 dbus::AppendValueData(&writer, options);
141 object_proxy->CallMethod( 143 object_proxy->CallMethod(
142 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, 144 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
143 base::Bind(&LeadershipDaemonManagerClientImpl::OnStringDBusMethod, 145 base::Bind(&LeadershipDaemonManagerClientImpl::OnObjectPathDBusMethod,
144 weak_ptr_factory_.GetWeakPtr(), callback)); 146 weak_ptr_factory_.GetWeakPtr(), callback));
145 } 147 }
146 148
147 void LeadershipDaemonManagerClientImpl::LeaveGroup( 149 void LeadershipDaemonManagerClientImpl::LeaveGroup(
148 const std::string& object_path, 150 const std::string& object_path,
149 const VoidDBusMethodCallback& callback) { 151 const VoidDBusMethodCallback& callback) {
150 dbus::ObjectProxy* object_proxy = 152 dbus::ObjectProxy* object_proxy =
151 object_manager_->GetObjectProxy(dbus::ObjectPath(object_path)); 153 object_manager_->GetObjectProxy(dbus::ObjectPath(object_path));
152 if (!object_proxy) { 154 if (!object_proxy) {
153 base::MessageLoop::current()->PostTask( 155 base::MessageLoop::current()->PostTask(
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 } 293 }
292 } 294 }
293 295
294 void LeadershipDaemonManagerClientImpl::OnGroupPropertyChanged( 296 void LeadershipDaemonManagerClientImpl::OnGroupPropertyChanged(
295 const dbus::ObjectPath& object_path, 297 const dbus::ObjectPath& object_path,
296 const std::string& property_name) { 298 const std::string& property_name) {
297 FOR_EACH_OBSERVER(Observer, observers_, 299 FOR_EACH_OBSERVER(Observer, observers_,
298 GroupPropertyChanged(object_path, property_name)); 300 GroupPropertyChanged(object_path, property_name));
299 } 301 }
300 302
303 void LeadershipDaemonManagerClientImpl::OnObjectPathDBusMethod(
304 const ObjectPathDBusMethodCallback& callback,
305 dbus::Response* response) {
306 if (!response) {
307 callback.Run(DBUS_METHOD_CALL_FAILURE, dbus::ObjectPath());
308 return;
309 }
310
311 dbus::MessageReader reader(response);
312 dbus::ObjectPath result;
313 if (!reader.PopObjectPath(&result)) {
314 callback.Run(DBUS_METHOD_CALL_FAILURE, result);
315 return;
316 }
317
318 callback.Run(DBUS_METHOD_CALL_SUCCESS, result);
319 }
320
301 void LeadershipDaemonManagerClientImpl::OnStringDBusMethod( 321 void LeadershipDaemonManagerClientImpl::OnStringDBusMethod(
302 const StringDBusMethodCallback& callback, 322 const StringDBusMethodCallback& callback,
303 dbus::Response* response) { 323 dbus::Response* response) {
304 if (!response) { 324 if (!response) {
305 callback.Run(DBUS_METHOD_CALL_FAILURE, std::string()); 325 callback.Run(DBUS_METHOD_CALL_FAILURE, std::string());
306 return; 326 return;
307 } 327 }
308 328
309 dbus::MessageReader reader(response); 329 dbus::MessageReader reader(response);
310 std::string result; 330 std::string result;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 383
364 LeadershipDaemonManagerClient::~LeadershipDaemonManagerClient() { 384 LeadershipDaemonManagerClient::~LeadershipDaemonManagerClient() {
365 } 385 }
366 386
367 // static 387 // static
368 LeadershipDaemonManagerClient* LeadershipDaemonManagerClient::Create() { 388 LeadershipDaemonManagerClient* LeadershipDaemonManagerClient::Create() {
369 return new LeadershipDaemonManagerClientImpl(); 389 return new LeadershipDaemonManagerClientImpl();
370 } 390 }
371 391
372 } // namespace chromeos 392 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/leadership_daemon_manager_client.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698