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

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

Issue 267803008: Mojo: Force folks to handle the return value of MessageReceiver::Accept{WithResponder} (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « mojo/public/cpp/bindings/message.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 {%- import "interface_macros.tmpl" as interface_macros %} 1 {%- import "interface_macros.tmpl" as interface_macros %}
2 {%- set class_name = interface.name %} 2 {%- set class_name = interface.name %}
3 {%- set proxy_name = interface.name ~ "Proxy" %} 3 {%- set proxy_name = interface.name ~ "Proxy" %}
4 4
5 {%- macro pass_params(parameters) %} 5 {%- macro pass_params(parameters) %}
6 {%- for param in parameters %} 6 {%- for param in parameters %}
7 {%- if param.kind|is_object_kind -%} 7 {%- if param.kind|is_object_kind -%}
8 mojo::internal::Wrap(params->{{param.name}}()) 8 mojo::internal::Wrap(params->{{param.name}}())
9 {%- elif param.kind|is_handle_kind -%} 9 {%- elif param.kind|is_handle_kind -%}
10 mojo::MakePassable(params->{{param.name}}()).Pass() 10 mojo::MakePassable(params->{{param.name}}()).Pass()
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 {%- endif %} 107 {%- endif %}
108 108
109 {{build_message(params_name, method.parameters)}} 109 {{build_message(params_name, method.parameters)}}
110 110
111 {%- if method.response_parameters != None %} 111 {%- if method.response_parameters != None %}
112 mojo::MessageReceiver* responder = 112 mojo::MessageReceiver* responder =
113 new {{class_name}}_{{method.name}}_ForwardToCallback(callback); 113 new {{class_name}}_{{method.name}}_ForwardToCallback(callback);
114 if (!receiver_->AcceptWithResponder(&message, responder)) 114 if (!receiver_->AcceptWithResponder(&message, responder))
115 delete responder; 115 delete responder;
116 {%- else %} 116 {%- else %}
117 receiver_->Accept(&message); 117 bool ok MOJO_ALLOW_UNUSED = receiver_->Accept(&message);
118 // This return value may be ignored as !ok implies the Connector has
119 // encountered an error, which will be visible through other means.
118 {%- endif %} 120 {%- endif %}
119 } 121 }
120 {%- endfor %} 122 {%- endfor %}
121 123
122 {#--- ProxyToResponder definition #} 124 {#--- ProxyToResponder definition #}
123 {%- for method in interface.methods -%} 125 {%- for method in interface.methods -%}
124 {%- if method.response_parameters != None %} 126 {%- if method.response_parameters != None %}
125 {%- set message_name = 127 {%- set message_name =
126 "internal::k%s_%s_Name"|format(interface.name, method.name) %} 128 "internal::k%s_%s_Name"|format(interface.name, method.name) %}
127 {%- set params_name = 129 {%- set params_name =
(...skipping 18 matching lines...) Expand all
146 uint64_t request_id_; 148 uint64_t request_id_;
147 mutable mojo::MessageReceiver* responder_; 149 mutable mojo::MessageReceiver* responder_;
148 MOJO_DISALLOW_COPY_AND_ASSIGN({{class_name}}_{{method.name}}_ProxyToResponder) ; 150 MOJO_DISALLOW_COPY_AND_ASSIGN({{class_name}}_{{method.name}}_ProxyToResponder) ;
149 }; 151 };
150 void {{class_name}}_{{method.name}}_ProxyToResponder::Run( 152 void {{class_name}}_{{method.name}}_ProxyToResponder::Run(
151 {{interface_macros.declare_params("in_", method.response_parameters)}}) cons t { 153 {{interface_macros.declare_params("in_", method.response_parameters)}}) cons t {
152 {{compute_payload_size(params_name, method.response_parameters)}} 154 {{compute_payload_size(params_name, method.response_parameters)}}
153 mojo::internal::ResponseMessageBuilder builder( 155 mojo::internal::ResponseMessageBuilder builder(
154 {{message_name}}, payload_size, request_id_); 156 {{message_name}}, payload_size, request_id_);
155 {{build_message(params_name, method.response_parameters)}} 157 {{build_message(params_name, method.response_parameters)}}
156 responder_->Accept(&message); 158 bool ok MOJO_ALLOW_UNUSED = responder_->Accept(&message);
159 // TODO(darin): !ok returned here indicates a malformed message, and that may
160 // be good reason to close the connection. However, we don't have a way to do
161 // that from here. We should add a way.
157 delete responder_; 162 delete responder_;
158 responder_ = NULL; 163 responder_ = NULL;
159 } 164 }
160 {%- endif -%} 165 {%- endif -%}
161 {%- endfor %} 166 {%- endfor %}
162 167
163 {{class_name}}Stub::{{class_name}}Stub({{class_name}}* sink) 168 {{class_name}}Stub::{{class_name}}Stub({{class_name}}* sink)
164 : sink_(sink) { 169 : sink_(sink) {
165 } 170 }
166 171
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 return true; 219 return true;
215 {%- else %} 220 {%- else %}
216 break; 221 break;
217 {%- endif %} 222 {%- endif %}
218 } 223 }
219 {%- endfor %} 224 {%- endfor %}
220 } 225 }
221 {%- endif %} 226 {%- endif %}
222 return false; 227 return false;
223 } 228 }
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/message.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698