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

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

Issue 2403533003: Mojo C++ Bindings: Support custom impl ref types (Closed)
Patch Set: nit, move Created 4 years, 2 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 {%- import "interface_macros.tmpl" as interface_macros %} 1 {%- import "interface_macros.tmpl" as interface_macros %}
2 {%- import "struct_macros.tmpl" as struct_macros %} 2 {%- import "struct_macros.tmpl" as struct_macros %}
3 3
4 {%- set class_name = interface.name %} 4 {%- set class_name = interface.name %}
5 {%- set proxy_name = interface.name ~ "Proxy" %} 5 {%- set proxy_name = interface.name ~ "Proxy" %}
6 {%- set namespace_as_string = "%s"|format(namespace|replace(".","::")) %} 6 {%- set namespace_as_string = "%s"|format(namespace|replace(".","::")) %}
7 7
8 {%- macro alloc_params(struct, params, message, serialization_context, 8 {%- macro alloc_params(struct, params, message, serialization_context,
9 description) %} 9 description) %}
10 ({{serialization_context}})->handles.Swap(({{message}})->mutable_handles()); 10 ({{serialization_context}})->handles.Swap(({{message}})->mutable_handles());
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 ALLOW_UNUSED_LOCAL(ok); 288 ALLOW_UNUSED_LOCAL(ok);
289 // TODO(darin): !ok returned here indicates a malformed message, and that may 289 // TODO(darin): !ok returned here indicates a malformed message, and that may
290 // be good reason to close the connection. However, we don't have a way to do 290 // be good reason to close the connection. However, we don't have a way to do
291 // that from here. We should add a way. 291 // that from here. We should add a way.
292 delete responder_; 292 delete responder_;
293 responder_ = nullptr; 293 responder_ = nullptr;
294 } 294 }
295 {%- endif -%} 295 {%- endif -%}
296 {%- endfor %} 296 {%- endfor %}
297 297
298 {{class_name}}Stub::{{class_name}}Stub() 298 {#--- StubDispatch definition #}
299 : sink_(nullptr) {
300 }
301 299
302 {{class_name}}Stub::~{{interface.name}}Stub() {} 300 // static
303 301 bool {{class_name}}StubDispatch::Accept(
304 {#--- Stub definition #} 302 {{interface.name}}* impl,
305 303 mojo::internal::SerializationContext* context,
306 bool {{class_name}}Stub::Accept(mojo::Message* message) { 304 mojo::Message* message) {
307 {%- if interface.methods %} 305 {%- if interface.methods %}
308 switch (message->header()->name) { 306 switch (message->header()->name) {
309 {%- for method in interface.methods %} 307 {%- for method in interface.methods %}
310 case internal::k{{class_name}}_{{method.name}}_Name: { 308 case internal::k{{class_name}}_{{method.name}}_Name: {
311 {%- if method.response_parameters == None %} 309 {%- if method.response_parameters == None %}
312 internal::{{class_name}}_{{method.name}}_Params_Data* params = 310 internal::{{class_name}}_{{method.name}}_Params_Data* params =
313 reinterpret_cast<internal::{{class_name}}_{{method.name}}_Params_Data* >( 311 reinterpret_cast<internal::{{class_name}}_{{method.name}}_Params_Data* >(
314 message->mutable_payload()); 312 message->mutable_payload());
315 313
316 {%- set desc = class_name~"::"~method.name %} 314 {%- set desc = class_name~"::"~method.name %}
317 {{alloc_params(method.param_struct, "params", "message", 315 {{alloc_params(method.param_struct, "params", "message", "context", desc)|
318 "&serialization_context_", desc)|indent(4)}} 316 indent(4)}}
319 // A null |sink_| means no implementation was bound. 317 // A null |impl| means no implementation was bound.
320 assert(sink_); 318 assert(impl);
321 TRACE_EVENT0("mojom", "{{class_name}}::{{method.name}}"); 319 TRACE_EVENT0("mojom", "{{class_name}}::{{method.name}}");
322 mojo::internal::MessageDispatchContext context(message); 320 mojo::internal::MessageDispatchContext context(message);
323 sink_->{{method.name}}({{pass_params(method.parameters)}}); 321 impl->{{method.name}}({{pass_params(method.parameters)}});
324 return true; 322 return true;
325 {%- else %} 323 {%- else %}
326 break; 324 break;
327 {%- endif %} 325 {%- endif %}
328 } 326 }
329 {%- endfor %} 327 {%- endfor %}
330 } 328 }
331 {%- endif %} 329 {%- endif %}
332 return false; 330 return false;
333 } 331 }
334 332
335 bool {{class_name}}Stub::AcceptWithResponder( 333 // static
336 mojo::Message* message, mojo::MessageReceiverWithStatus* responder) { 334 bool {{class_name}}StubDispatch::AcceptWithResponder(
335 {{interface.name}}* impl,
336 mojo::internal::SerializationContext* context,
337 mojo::Message* message,
338 mojo::MessageReceiverWithStatus* responder) {
337 {%- if interface.methods %} 339 {%- if interface.methods %}
338 switch (message->header()->name) { 340 switch (message->header()->name) {
339 {%- for method in interface.methods %} 341 {%- for method in interface.methods %}
340 case internal::k{{class_name}}_{{method.name}}_Name: { 342 case internal::k{{class_name}}_{{method.name}}_Name: {
341 {%- if method.response_parameters != None %} 343 {%- if method.response_parameters != None %}
342 internal::{{class_name}}_{{method.name}}_Params_Data* params = 344 internal::{{class_name}}_{{method.name}}_Params_Data* params =
343 reinterpret_cast<internal::{{class_name}}_{{method.name}}_Params_Data* >( 345 reinterpret_cast<internal::{{class_name}}_{{method.name}}_Params_Data* >(
344 message->mutable_payload()); 346 message->mutable_payload());
345 347
346 {%- set desc = class_name~"::"~method.name %} 348 {%- set desc = class_name~"::"~method.name %}
347 {{alloc_params(method.param_struct, "params", "message", 349 {{alloc_params(method.param_struct, "params", "message", "context", desc)|
348 "&serialization_context_", desc)| 350 indent(4)}}
349 indent(4)}}
350 {{class_name}}::{{method.name}}Callback callback = 351 {{class_name}}::{{method.name}}Callback callback =
351 {{class_name}}_{{method.name}}_ProxyToResponder::CreateCallback( 352 {{class_name}}_{{method.name}}_ProxyToResponder::CreateCallback(
352 message->request_id(), 353 message->request_id(),
353 message->has_flag(mojo::Message::kFlagIsSync), 354 message->has_flag(mojo::Message::kFlagIsSync), responder,
354 responder, 355 context->group_controller);
355 serialization_context_.group_controller); 356 // A null |impl| means no implementation was bound.
356 // A null |sink_| means no implementation was bound. 357 assert(impl);
357 assert(sink_);
358 TRACE_EVENT0("mojom", "{{class_name}}::{{method.name}}"); 358 TRACE_EVENT0("mojom", "{{class_name}}::{{method.name}}");
359 mojo::internal::MessageDispatchContext context(message); 359 mojo::internal::MessageDispatchContext context(message);
360 sink_->{{method.name}}( 360 impl->{{method.name}}(
361 {%- if method.parameters -%}{{pass_params(method.parameters)}}, {% endif -%}call back); 361 {%- if method.parameters -%}{{pass_params(method.parameters)}}, {% endif -%}call back);
362 return true; 362 return true;
363 {%- else %} 363 {%- else %}
364 break; 364 break;
365 {%- endif %} 365 {%- endif %}
366 } 366 }
367 {%- endfor %} 367 {%- endfor %}
368 } 368 }
369 {%- endif %} 369 {%- endif %}
370 return false; 370 return false;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 break; 440 break;
441 } 441 }
442 442
443 // Unrecognized message. 443 // Unrecognized message.
444 ReportValidationError( 444 ReportValidationError(
445 &validation_context, 445 &validation_context,
446 mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD); 446 mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD);
447 return false; 447 return false;
448 } 448 }
449 {%- endif -%} 449 {%- endif -%}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698