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

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

Issue 2766523002: mojo: MessageReceiver*::AcceptWithResponder() now take a unique_ptr to the responder (Closed)
Patch Set: comments Created 3 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
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/lib/control_message_proxy.h" 5 #include "mojo/public/cpp/bindings/lib/control_message_proxy.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 auto params_ptr = interface_control::RunMessageParams::New(); 78 auto params_ptr = interface_control::RunMessageParams::New();
79 params_ptr->input = std::move(input_ptr); 79 params_ptr->input = std::move(input_ptr);
80 size_t size = PrepareToSerialize<interface_control::RunMessageParamsDataView>( 80 size_t size = PrepareToSerialize<interface_control::RunMessageParamsDataView>(
81 params_ptr, &context); 81 params_ptr, &context);
82 MessageBuilder builder(interface_control::kRunMessageId, 82 MessageBuilder builder(interface_control::kRunMessageId,
83 Message::kFlagExpectsResponse, size, 0); 83 Message::kFlagExpectsResponse, size, 0);
84 84
85 interface_control::internal::RunMessageParams_Data* params = nullptr; 85 interface_control::internal::RunMessageParams_Data* params = nullptr;
86 Serialize<interface_control::RunMessageParamsDataView>( 86 Serialize<interface_control::RunMessageParamsDataView>(
87 params_ptr, builder.buffer(), &params, &context); 87 params_ptr, builder.buffer(), &params, &context);
88 MessageReceiver* responder = new RunResponseForwardToCallback(callback); 88 std::unique_ptr<MessageReceiver> responder =
89 if (!receiver->AcceptWithResponder(builder.message(), responder)) 89 base::MakeUnique<RunResponseForwardToCallback>(callback);
90 delete responder; 90 ignore_result(
91 receiver->AcceptWithResponder(builder.message(), std::move(responder)));
91 } 92 }
92 93
93 Message ConstructRunOrClosePipeMessage( 94 Message ConstructRunOrClosePipeMessage(
94 interface_control::RunOrClosePipeInputPtr input_ptr) { 95 interface_control::RunOrClosePipeInputPtr input_ptr) {
95 SerializationContext context; 96 SerializationContext context;
96 97
97 auto params_ptr = interface_control::RunOrClosePipeMessageParams::New(); 98 auto params_ptr = interface_control::RunOrClosePipeMessageParams::New();
98 params_ptr->input = std::move(input_ptr); 99 params_ptr->input = std::move(input_ptr);
99 100
100 size_t size = PrepareToSerialize< 101 size_t size = PrepareToSerialize<
101 interface_control::RunOrClosePipeMessageParamsDataView>(params_ptr, 102 interface_control::RunOrClosePipeMessageParamsDataView>(params_ptr,
102 &context); 103 &context);
103 MessageBuilder builder(interface_control::kRunOrClosePipeMessageId, 0, size, 104 MessageBuilder builder(interface_control::kRunOrClosePipeMessageId, 0, size,
104 0); 105 0);
105 106
106 interface_control::internal::RunOrClosePipeMessageParams_Data* params = 107 interface_control::internal::RunOrClosePipeMessageParams_Data* params =
107 nullptr; 108 nullptr;
108 Serialize<interface_control::RunOrClosePipeMessageParamsDataView>( 109 Serialize<interface_control::RunOrClosePipeMessageParamsDataView>(
109 params_ptr, builder.buffer(), &params, &context); 110 params_ptr, builder.buffer(), &params, &context);
110 return std::move(*builder.message()); 111 return std::move(*builder.message());
111 } 112 }
112 113
113 void SendRunOrClosePipeMessage( 114 void SendRunOrClosePipeMessage(
114 MessageReceiverWithResponder* receiver, 115 MessageReceiverWithResponder* receiver,
115 interface_control::RunOrClosePipeInputPtr input_ptr) { 116 interface_control::RunOrClosePipeInputPtr input_ptr) {
116 Message message(ConstructRunOrClosePipeMessage(std::move(input_ptr))); 117 Message message(ConstructRunOrClosePipeMessage(std::move(input_ptr)));
117 118
118 bool ok = receiver->Accept(&message); 119 ignore_result(receiver->Accept(&message));
119 ALLOW_UNUSED_LOCAL(ok);
120 } 120 }
121 121
122 void RunVersionCallback( 122 void RunVersionCallback(
123 const base::Callback<void(uint32_t)>& callback, 123 const base::Callback<void(uint32_t)>& callback,
124 interface_control::RunResponseMessageParamsPtr run_response) { 124 interface_control::RunResponseMessageParamsPtr run_response) {
125 uint32_t version = 0u; 125 uint32_t version = 0u;
126 if (run_response->output && run_response->output->is_query_version_result()) 126 if (run_response->output && run_response->output->is_query_version_result())
127 version = run_response->output->get_query_version_result()->version; 127 version = run_response->output->get_query_version_result()->version;
128 callback.Run(version); 128 callback.Run(version);
129 } 129 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 } 179 }
180 180
181 void ControlMessageProxy::OnConnectionError() { 181 void ControlMessageProxy::OnConnectionError() {
182 encountered_error_ = true; 182 encountered_error_ = true;
183 if (!run_loop_quit_closure_.is_null()) 183 if (!run_loop_quit_closure_.is_null())
184 RunFlushForTestingClosure(); 184 RunFlushForTestingClosure();
185 } 185 }
186 186
187 } // namespace internal 187 } // namespace internal
188 } // namespace mojo 188 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/lib/control_message_handler.cc ('k') | mojo/public/cpp/bindings/lib/interface_endpoint_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698