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

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

Issue 2114523002: Move more Mojo bindings helpers out of internal namespace (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@group-controller
Patch Set: rebase Created 4 years, 5 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> 9 #include <utility>
10 10
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 FROM_HERE, 63 FROM_HERE,
64 base::Bind(&InterfaceEndpointClient::RaiseError, endpoint_client_)); 64 base::Bind(&InterfaceEndpointClient::RaiseError, endpoint_client_));
65 } 65 }
66 } 66 }
67 } 67 }
68 68
69 // MessageReceiver implementation: 69 // MessageReceiver implementation:
70 bool Accept(Message* message) override { 70 bool Accept(Message* message) override {
71 DCHECK(task_runner_->RunsTasksOnCurrentThread()); 71 DCHECK(task_runner_->RunsTasksOnCurrentThread());
72 accept_was_invoked_ = true; 72 accept_was_invoked_ = true;
73 DCHECK(message->has_flag(internal::kMessageIsResponse)); 73 DCHECK(message->has_flag(Message::kFlagIsResponse));
74 74
75 bool result = false; 75 bool result = false;
76 76
77 if (endpoint_client_) 77 if (endpoint_client_)
78 result = endpoint_client_->Accept(message); 78 result = endpoint_client_->Accept(message);
79 79
80 return result; 80 return result;
81 } 81 }
82 82
83 // MessageReceiverWithStatus implementation: 83 // MessageReceiverWithStatus implementation:
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 188
189 void InterfaceEndpointClient::RaiseError() { 189 void InterfaceEndpointClient::RaiseError() {
190 DCHECK(thread_checker_.CalledOnValidThread()); 190 DCHECK(thread_checker_.CalledOnValidThread());
191 191
192 handle_.group_controller()->RaiseError(); 192 handle_.group_controller()->RaiseError();
193 } 193 }
194 194
195 bool InterfaceEndpointClient::Accept(Message* message) { 195 bool InterfaceEndpointClient::Accept(Message* message) {
196 DCHECK(thread_checker_.CalledOnValidThread()); 196 DCHECK(thread_checker_.CalledOnValidThread());
197 DCHECK(controller_); 197 DCHECK(controller_);
198 DCHECK(!message->has_flag(internal::kMessageExpectsResponse)); 198 DCHECK(!message->has_flag(Message::kFlagExpectsResponse));
199 199
200 if (encountered_error_) 200 if (encountered_error_)
201 return false; 201 return false;
202 202
203 return controller_->SendMessage(message); 203 return controller_->SendMessage(message);
204 } 204 }
205 205
206 bool InterfaceEndpointClient::AcceptWithResponder(Message* message, 206 bool InterfaceEndpointClient::AcceptWithResponder(Message* message,
207 MessageReceiver* responder) { 207 MessageReceiver* responder) {
208 DCHECK(thread_checker_.CalledOnValidThread()); 208 DCHECK(thread_checker_.CalledOnValidThread());
209 DCHECK(controller_); 209 DCHECK(controller_);
210 DCHECK(message->has_flag(internal::kMessageExpectsResponse)); 210 DCHECK(message->has_flag(Message::kFlagExpectsResponse));
211 211
212 if (encountered_error_) 212 if (encountered_error_)
213 return false; 213 return false;
214 214
215 // Reserve 0 in case we want it to convey special meaning in the future. 215 // Reserve 0 in case we want it to convey special meaning in the future.
216 uint64_t request_id = next_request_id_++; 216 uint64_t request_id = next_request_id_++;
217 if (request_id == 0) 217 if (request_id == 0)
218 request_id = next_request_id_++; 218 request_id = next_request_id_++;
219 219
220 message->set_request_id(request_id); 220 message->set_request_id(request_id);
221 221
222 bool is_sync = message->has_flag(internal::kMessageIsSync); 222 bool is_sync = message->has_flag(Message::kFlagIsSync);
223 if (!controller_->SendMessage(message)) 223 if (!controller_->SendMessage(message))
224 return false; 224 return false;
225 225
226 if (!is_sync) { 226 if (!is_sync) {
227 // We assume ownership of |responder|. 227 // We assume ownership of |responder|.
228 async_responders_[request_id] = base::WrapUnique(responder); 228 async_responders_[request_id] = base::WrapUnique(responder);
229 return true; 229 return true;
230 } 230 }
231 231
232 SyncCallRestrictions::AssertSyncCallAllowed(); 232 SyncCallRestrictions::AssertSyncCallAllowed();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 if (encountered_error_) 267 if (encountered_error_)
268 return; 268 return;
269 encountered_error_ = true; 269 encountered_error_ = true;
270 if (!error_handler_.is_null()) 270 if (!error_handler_.is_null())
271 error_handler_.Run(); 271 error_handler_.Run();
272 } 272 }
273 273
274 bool InterfaceEndpointClient::HandleValidatedMessage(Message* message) { 274 bool InterfaceEndpointClient::HandleValidatedMessage(Message* message) {
275 DCHECK_EQ(handle_.id(), message->interface_id()); 275 DCHECK_EQ(handle_.id(), message->interface_id());
276 276
277 if (message->has_flag(internal::kMessageExpectsResponse)) { 277 if (message->has_flag(Message::kFlagExpectsResponse)) {
278 if (!incoming_receiver_) 278 if (!incoming_receiver_)
279 return false; 279 return false;
280 280
281 MessageReceiverWithStatus* responder = 281 MessageReceiverWithStatus* responder =
282 new ResponderThunk(weak_ptr_factory_.GetWeakPtr(), task_runner_); 282 new ResponderThunk(weak_ptr_factory_.GetWeakPtr(), task_runner_);
283 bool ok = incoming_receiver_->AcceptWithResponder(message, responder); 283 bool ok = incoming_receiver_->AcceptWithResponder(message, responder);
284 if (!ok) 284 if (!ok)
285 delete responder; 285 delete responder;
286 return ok; 286 return ok;
287 } else if (message->has_flag(internal::kMessageIsResponse)) { 287 } else if (message->has_flag(Message::kFlagIsResponse)) {
288 uint64_t request_id = message->request_id(); 288 uint64_t request_id = message->request_id();
289 289
290 if (message->has_flag(internal::kMessageIsSync)) { 290 if (message->has_flag(Message::kFlagIsSync)) {
291 auto it = sync_responses_.find(request_id); 291 auto it = sync_responses_.find(request_id);
292 if (it == sync_responses_.end()) 292 if (it == sync_responses_.end())
293 return false; 293 return false;
294 it->second->response.reset(new Message()); 294 it->second->response.reset(new Message());
295 message->MoveTo(it->second->response.get()); 295 message->MoveTo(it->second->response.get());
296 *it->second->response_received = true; 296 *it->second->response_received = true;
297 return true; 297 return true;
298 } 298 }
299 299
300 auto it = async_responders_.find(request_id); 300 auto it = async_responders_.find(request_id);
301 if (it == async_responders_.end()) 301 if (it == async_responders_.end())
302 return false; 302 return false;
303 std::unique_ptr<MessageReceiver> responder = std::move(it->second); 303 std::unique_ptr<MessageReceiver> responder = std::move(it->second);
304 async_responders_.erase(it); 304 async_responders_.erase(it);
305 return responder->Accept(message); 305 return responder->Accept(message);
306 } else { 306 } else {
307 if (!incoming_receiver_) 307 if (!incoming_receiver_)
308 return false; 308 return false;
309 309
310 return incoming_receiver_->Accept(message); 310 return incoming_receiver_->Accept(message);
311 } 311 }
312 } 312 }
313 313
314 } // namespace mojo 314 } // 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