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

Side by Side Diff: mojo/public/cpp/bindings/lib/interface_endpoint_client.cc

Issue 2932193002: Use OnceCallback for Mojo binding connection error handlers. (Closed)
Patch Set: Call Run() on rvalue. Created 3 years, 6 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 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 "mojo/public/cpp/bindings/interface_endpoint_client.h" 5 #include "mojo/public/cpp/bindings/interface_endpoint_client.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <utility>
10
11 #include "base/bind.h" 9 #include "base/bind.h"
12 #include "base/location.h" 10 #include "base/location.h"
13 #include "base/logging.h" 11 #include "base/logging.h"
14 #include "base/macros.h" 12 #include "base/macros.h"
15 #include "base/memory/ptr_util.h" 13 #include "base/memory/ptr_util.h"
16 #include "base/single_thread_task_runner.h" 14 #include "base/single_thread_task_runner.h"
17 #include "base/stl_util.h" 15 #include "base/stl_util.h"
18 #include "mojo/public/cpp/bindings/associated_group.h" 16 #include "mojo/public/cpp/bindings/associated_group.h"
19 #include "mojo/public/cpp/bindings/associated_group_controller.h" 17 #include "mojo/public/cpp/bindings/associated_group_controller.h"
20 #include "mojo/public/cpp/bindings/interface_endpoint_controller.h" 18 #include "mojo/public/cpp/bindings/interface_endpoint_controller.h"
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 encountered_error_ = true; 300 encountered_error_ = true;
303 301
304 // Response callbacks may hold on to resource, and there's no need to keep 302 // Response callbacks may hold on to resource, and there's no need to keep
305 // them alive any longer. Note that it's allowed that a pending response 303 // them alive any longer. Note that it's allowed that a pending response
306 // callback may own this endpoint, so we simply move the responders onto the 304 // callback may own this endpoint, so we simply move the responders onto the
307 // stack here and let them be destroyed when the stack unwinds. 305 // stack here and let them be destroyed when the stack unwinds.
308 AsyncResponderMap responders = std::move(async_responders_); 306 AsyncResponderMap responders = std::move(async_responders_);
309 307
310 control_message_proxy_.OnConnectionError(); 308 control_message_proxy_.OnConnectionError();
311 309
312 if (!error_handler_.is_null()) { 310 if (error_handler_) {
313 base::Closure error_handler = std::move(error_handler_); 311 std::move(error_handler_).Run();
314 error_handler.Run(); 312 } else if (error_with_reason_handler_) {
315 } else if (!error_with_reason_handler_.is_null()) {
316 ConnectionErrorWithReasonCallback error_with_reason_handler =
317 std::move(error_with_reason_handler_);
318 if (reason) { 313 if (reason) {
319 error_with_reason_handler.Run(reason->custom_reason, reason->description); 314 std::move(error_with_reason_handler_)
315 .Run(reason->custom_reason, reason->description);
320 } else { 316 } else {
321 error_with_reason_handler.Run(0, std::string()); 317 std::move(error_with_reason_handler_).Run(0, std::string());
322 } 318 }
323 } 319 }
324 } 320 }
325 321
326 void InterfaceEndpointClient::QueryVersion( 322 void InterfaceEndpointClient::QueryVersion(
327 const base::Callback<void(uint32_t)>& callback) { 323 const base::Callback<void(uint32_t)>& callback) {
328 control_message_proxy_.QueryVersion(callback); 324 control_message_proxy_.QueryVersion(callback);
329 } 325 }
330 326
331 void InterfaceEndpointClient::RequireVersion(uint32_t version) { 327 void InterfaceEndpointClient::RequireVersion(uint32_t version) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 return responder->Accept(message); 399 return responder->Accept(message);
404 } else { 400 } else {
405 if (mojo::internal::ControlMessageHandler::IsControlMessage(message)) 401 if (mojo::internal::ControlMessageHandler::IsControlMessage(message))
406 return control_message_handler_.Accept(message); 402 return control_message_handler_.Accept(message);
407 403
408 return incoming_receiver_->Accept(message); 404 return incoming_receiver_->Accept(message);
409 } 405 }
410 } 406 }
411 407
412 } // namespace mojo 408 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/lib/connector.cc ('k') | mojo/public/cpp/bindings/lib/interface_ptr_state.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698