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

Unified Diff: mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl

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 side-by-side diff with in-line comments
Download patch
Index: mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
index a23b10785770ad4ab9ec8dc59dda7a96aad10917..cef92e84b729bb5b2681dbacb9a8faa870daed14 100644
--- a/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
+++ b/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
@@ -169,14 +169,14 @@ bool {{proxy_name}}::{{method.name}}(
"&serialization_context")}}
bool result = false;
- mojo::MessageReceiver* responder =
+ std::unique_ptr<mojo::MessageReceiver> responder(
new {{class_name}}_{{method.name}}_HandleSyncResponse(
&result
{%- for param in method.response_parameters -%}
, param_{{param.name}}
-{%- endfor %});
- if (!receiver_->AcceptWithResponder(builder.message(), responder))
- delete responder;
+{%- endfor %}));
+ ignore_result(receiver_->AcceptWithResponder(builder.message(),
+ std::move(responder)));
return result;
}
{%- endif %}
@@ -200,10 +200,11 @@ void {{proxy_name}}::{{method.name}}(
"&serialization_context")}}
{%- if method.response_parameters != None %}
- mojo::MessageReceiver* responder =
- new {{class_name}}_{{method.name}}_ForwardToCallback(std::move(callback));
- if (!receiver_->AcceptWithResponder(builder.message(), responder))
- delete responder;
+ std::unique_ptr<mojo::MessageReceiver> responder(
+ new {{class_name}}_{{method.name}}_ForwardToCallback(
+ std::move(callback)));
+ ignore_result(receiver_->AcceptWithResponder(builder.message(),
+ std::move(responder)));
{%- else %}
bool ok = receiver_->Accept(builder.message());
// This return value may be ignored as !ok implies the Connector has
@@ -226,10 +227,10 @@ class {{class_name}}_{{method.name}}_ProxyToResponder {
static {{class_name}}::{{method.name}}Callback CreateCallback(
uint64_t request_id,
bool is_sync,
- mojo::MessageReceiverWithStatus* responder) {
+ std::unique_ptr<mojo::MessageReceiverWithStatus> responder) {
std::unique_ptr<{{class_name}}_{{method.name}}_ProxyToResponder> proxy(
new {{class_name}}_{{method.name}}_ProxyToResponder(
- request_id, is_sync, responder));
+ request_id, is_sync, std::move(responder)));
return base::Bind(&{{class_name}}_{{method.name}}_ProxyToResponder::Run,
base::Passed(&proxy));
}
@@ -245,17 +246,17 @@ class {{class_name}}_{{method.name}}_ProxyToResponder {
#endif
// If the Callback was dropped then deleting the responder will close
// the pipe so the calling application knows to stop waiting for a reply.
- delete responder_;
+ responder_ = nullptr;
}
private:
{{class_name}}_{{method.name}}_ProxyToResponder(
uint64_t request_id,
bool is_sync,
- mojo::MessageReceiverWithStatus* responder)
+ std::unique_ptr<mojo::MessageReceiverWithStatus> responder)
: request_id_(request_id),
is_sync_(is_sync),
- responder_(responder) {
+ responder_(std::move(responder)) {
}
void Run(
@@ -264,7 +265,7 @@ class {{class_name}}_{{method.name}}_ProxyToResponder {
uint64_t request_id_;
bool is_sync_;
- mojo::MessageReceiverWithStatus* responder_;
+ std::unique_ptr<mojo::MessageReceiverWithStatus> responder_;
DISALLOW_COPY_AND_ASSIGN({{class_name}}_{{method.name}}_ProxyToResponder);
};
@@ -290,7 +291,6 @@ void {{class_name}}_{{method.name}}_ProxyToResponder::Run(
// TODO(darin): !ok returned here indicates a malformed message, and that may
// be good reason to close the connection. However, we don't have a way to do
// that from here. We should add a way.
- delete responder_;
responder_ = nullptr;
}
{%- endif -%}
@@ -334,7 +334,7 @@ bool {{class_name}}StubDispatch::Accept(
bool {{class_name}}StubDispatch::AcceptWithResponder(
{{interface.name}}* impl,
mojo::Message* message,
- mojo::MessageReceiverWithStatus* responder) {
+ std::unique_ptr<mojo::MessageReceiverWithStatus> responder) {
{%- if interface.methods %}
switch (message->header()->name) {
{%- for method in interface.methods %}
@@ -350,7 +350,7 @@ bool {{class_name}}StubDispatch::AcceptWithResponder(
{{class_name}}::{{method.name}}Callback callback =
{{class_name}}_{{method.name}}_ProxyToResponder::CreateCallback(
message->request_id(),
- message->has_flag(mojo::Message::kFlagIsSync), responder);
+ message->has_flag(mojo::Message::kFlagIsSync), std::move(responder));
// A null |impl| means no implementation was bound.
assert(impl);
TRACE_EVENT0("mojom", "{{class_name}}::{{method.name}}");

Powered by Google App Engine
This is Rietveld 408576698