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..aba18380af7250f682a19e24850246062dcbfc17 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,15 +200,15 @@ 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 |
+ // This return value may be ignored as false implies the Connector has |
// encountered an error, which will be visible through other means. |
- ALLOW_UNUSED_LOCAL(ok); |
+ ignore_result(receiver_->Accept(builder.message())); |
{%- endif %} |
} |
{%- endfor %} |
@@ -226,10 +226,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 +245,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 +264,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); |
}; |
@@ -285,12 +285,10 @@ void {{class_name}}_{{method.name}}_ProxyToResponder::Run( |
{{build_message(response_params_struct, "in_%s", params_description, |
"&serialization_context")}} |
- bool ok = responder_->Accept(builder.message()); |
- ALLOW_UNUSED_LOCAL(ok); |
- // 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_; |
+ ignore_result(responder_->Accept(builder.message())); |
+ // TODO(darin): Accept() returning false 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. |
responder_ = nullptr; |
} |
{%- endif -%} |
@@ -334,7 +332,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 +348,8 @@ 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}}"); |