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

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

Issue 2766523002: mojo: MessageReceiver*::AcceptWithResponder() now take a unique_ptr to the responder (Closed)
Patch Set: 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_handler.h" 5 #include "mojo/public/cpp/bindings/lib/control_message_handler.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 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 73
74 if (message->header()->name == interface_control::kRunOrClosePipeMessageId) 74 if (message->header()->name == interface_control::kRunOrClosePipeMessageId)
75 return RunOrClosePipe(message); 75 return RunOrClosePipe(message);
76 76
77 NOTREACHED(); 77 NOTREACHED();
78 return false; 78 return false;
79 } 79 }
80 80
81 bool ControlMessageHandler::AcceptWithResponder( 81 bool ControlMessageHandler::AcceptWithResponder(
82 Message* message, 82 Message* message,
83 MessageReceiverWithStatus* responder) { 83 std::unique_ptr<MessageReceiverWithStatus> responder) {
84 if (!ValidateControlRequestWithResponse(message)) 84 if (!ValidateControlRequestWithResponse(message))
85 return false; 85 return false;
86 86
87 if (message->header()->name == interface_control::kRunMessageId) 87 if (message->header()->name == interface_control::kRunMessageId)
88 return Run(message, responder); 88 return Run(message, std::move(responder));
89 89
90 NOTREACHED(); 90 NOTREACHED();
91 return false; 91 return false;
92 } 92 }
93 93
94 bool ControlMessageHandler::Run(Message* message, 94 bool ControlMessageHandler::Run(
95 MessageReceiverWithStatus* responder) { 95 Message* message,
96 std::unique_ptr<MessageReceiverWithStatus> responder) {
96 interface_control::internal::RunMessageParams_Data* params = 97 interface_control::internal::RunMessageParams_Data* params =
97 reinterpret_cast<interface_control::internal::RunMessageParams_Data*>( 98 reinterpret_cast<interface_control::internal::RunMessageParams_Data*>(
98 message->mutable_payload()); 99 message->mutable_payload());
99 interface_control::RunMessageParamsPtr params_ptr; 100 interface_control::RunMessageParamsPtr params_ptr;
100 Deserialize<interface_control::RunMessageParamsDataView>(params, &params_ptr, 101 Deserialize<interface_control::RunMessageParamsDataView>(params, &params_ptr,
101 &context_); 102 &context_);
102 auto& input = *params_ptr->input; 103 auto& input = *params_ptr->input;
103 interface_control::RunOutputPtr output = interface_control::RunOutput::New(); 104 interface_control::RunOutputPtr output = interface_control::RunOutput::New();
104 if (input.is_query_version()) { 105 if (input.is_query_version()) {
105 output->set_query_version_result( 106 output->set_query_version_result(
(...skipping 13 matching lines...) Expand all
119 MessageBuilder builder(interface_control::kRunMessageId, 120 MessageBuilder builder(interface_control::kRunMessageId,
120 Message::kFlagIsResponse, size, 0); 121 Message::kFlagIsResponse, size, 0);
121 builder.message()->set_request_id(message->request_id()); 122 builder.message()->set_request_id(message->request_id());
122 123
123 interface_control::internal::RunResponseMessageParams_Data* response_params = 124 interface_control::internal::RunResponseMessageParams_Data* response_params =
124 nullptr; 125 nullptr;
125 Serialize<interface_control::RunResponseMessageParamsDataView>( 126 Serialize<interface_control::RunResponseMessageParamsDataView>(
126 response_params_ptr, builder.buffer(), &response_params, &context_); 127 response_params_ptr, builder.buffer(), &response_params, &context_);
127 bool ok = responder->Accept(builder.message()); 128 bool ok = responder->Accept(builder.message());
128 ALLOW_UNUSED_LOCAL(ok); 129 ALLOW_UNUSED_LOCAL(ok);
129 delete responder;
130 130
131 return true; 131 return true;
132 } 132 }
133 133
134 bool ControlMessageHandler::RunOrClosePipe(Message* message) { 134 bool ControlMessageHandler::RunOrClosePipe(Message* message) {
135 interface_control::internal::RunOrClosePipeMessageParams_Data* params = 135 interface_control::internal::RunOrClosePipeMessageParams_Data* params =
136 reinterpret_cast< 136 reinterpret_cast<
137 interface_control::internal::RunOrClosePipeMessageParams_Data*>( 137 interface_control::internal::RunOrClosePipeMessageParams_Data*>(
138 message->mutable_payload()); 138 message->mutable_payload());
139 interface_control::RunOrClosePipeMessageParamsPtr params_ptr; 139 interface_control::RunOrClosePipeMessageParamsPtr params_ptr;
140 Deserialize<interface_control::RunOrClosePipeMessageParamsDataView>( 140 Deserialize<interface_control::RunOrClosePipeMessageParamsDataView>(
141 params, &params_ptr, &context_); 141 params, &params_ptr, &context_);
142 auto& input = *params_ptr->input; 142 auto& input = *params_ptr->input;
143 if (input.is_require_version()) 143 if (input.is_require_version())
144 return interface_version_ >= input.get_require_version()->version; 144 return interface_version_ >= input.get_require_version()->version;
145 145
146 return false; 146 return false;
147 } 147 }
148 148
149 } // namespace internal 149 } // namespace internal
150 } // namespace mojo 150 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698