OLD | NEW |
1 {%- set class_name = interface.name %} | 1 {%- set class_name = interface.name %} |
2 {%- set proxy_name = interface.name ~ "Proxy" %} | 2 {%- set proxy_name = interface.name ~ "Proxy" %} |
3 | 3 |
4 {{proxy_name}}::{{proxy_name}}(mojo::MessageReceiver* receiver) | 4 {{proxy_name}}::{{proxy_name}}(mojo::MessageReceiver* receiver) |
5 : receiver_(receiver) { | 5 : receiver_(receiver) { |
6 } | 6 } |
7 | 7 |
8 {#--- Proxy definitions #} | 8 {#--- Proxy definitions #} |
9 {%- macro params_list(method) %} | 9 {%- macro params_list(method) %} |
10 {%- for param in method.parameters -%} | 10 {%- for param in method.parameters -%} |
11 {{param.kind|cpp_const_wrapper_type}} {{param.name}} | 11 {{param.kind|cpp_const_wrapper_type}} {{param.name}} |
12 {%- if not loop.last %}, {% endif %} | 12 {%- if not loop.last %}, {% endif %} |
13 {%- endfor %} | 13 {%- endfor %} |
14 {%- endmacro %} | 14 {%- endmacro %} |
15 | 15 |
16 {%- for method in interface.methods %} | 16 {%- for method in interface.methods %} |
17 {%- set name = "internal::k%s_%s_Name"|format(interface.name, method.name) %} | 17 {%- set name = "internal::k%s_%s_Name"|format(interface.name, method.name) %} |
18 {%- set params_name = | 18 {%- set params_name = |
19 "internal::%s_%s_Params_Data"|format(interface.name, method.name) %} | 19 "internal::%s_%s_Params_Data"|format(interface.name, method.name) %} |
20 void {{proxy_name}}::{{method.name}}({{params_list(method)}}) { | 20 void {{proxy_name}}::{{method.name}}({{params_list(method)}}) { |
21 size_t payload_size = | 21 size_t payload_size = |
22 mojo::internal::Align(sizeof({{params_name}})); | 22 mojo::internal::Align(sizeof({{params_name}})); |
23 {#--- Computes #} | 23 {#--- Computes #} |
24 {%- for param in method.parameters %} | 24 {%- for param in method.parameters %} |
25 {%- if param.kind|is_object_kind %} | 25 {%- if param.kind|is_object_kind %} |
26 payload_size += mojo::internal::ComputeSizeOf( | 26 if (!{{param.name}}.is_null()) |
27 mojo::internal::Unwrap({{param.name}})); | 27 payload_size += mojo::internal::Unwrap({{param.name}})->ComputeSize(); |
28 {%- endif %} | 28 {%- endif %} |
29 {%- endfor %} | 29 {%- endfor %} |
30 | 30 |
31 mojo::internal::MessageBuilder builder({{name}}, payload_size); | 31 mojo::internal::MessageBuilder builder({{name}}, payload_size); |
32 | 32 |
33 {{params_name}}* params = | 33 {{params_name}}* params = |
34 {{params_name}}::New(builder.buffer()); | 34 {{params_name}}::New(builder.buffer()); |
35 | 35 |
36 {#--- Sets #} | 36 {#--- Sets #} |
37 {% for param in method.parameters %} | 37 {% for param in method.parameters %} |
38 {%- if param.kind|is_object_kind %} | 38 {%- if param.kind|is_object_kind %} |
39 params->set_{{param.name}}( | 39 if (!{{param.name}}.is_null()) |
40 mojo::internal::Clone(mojo::internal::Unwrap({{param.name}}), | 40 params->set_{{param.name}}( |
41 builder.buffer())); | 41 mojo::internal::Unwrap({{param.name}})->Clone(builder.buffer())); |
42 {%- elif param.kind|is_handle_kind %} | 42 {%- elif param.kind|is_handle_kind %} |
43 params->set_{{param.name}}({{param.name}}.release()); | 43 params->set_{{param.name}}({{param.name}}.release()); |
44 {%- else %} | 44 {%- else %} |
45 params->set_{{param.name}}({{param.name}}); | 45 params->set_{{param.name}}({{param.name}}); |
46 {%- endif %} | 46 {%- endif %} |
47 {%- endfor %} | 47 {%- endfor %} |
48 | 48 |
49 mojo::Message message; | 49 mojo::Message message; |
50 mojo::internal::EncodePointersAndHandles(params, &message.handles); | 50 params->EncodePointersAndHandles(&message.handles); |
51 | 51 |
52 message.data = builder.Finish(); | 52 message.data = builder.Finish(); |
53 | 53 |
54 receiver_->Accept(&message); | 54 receiver_->Accept(&message); |
55 } | 55 } |
56 {%- endfor %} | 56 {%- endfor %} |
57 | 57 |
58 {{class_name}}Stub::{{class_name}}Stub({{class_name}}* sink) | 58 {{class_name}}Stub::{{class_name}}Stub({{class_name}}* sink) |
59 : sink_(sink) { | 59 : sink_(sink) { |
60 } | 60 } |
(...skipping 13 matching lines...) Expand all Loading... |
74 {%- endmacro %} | 74 {%- endmacro %} |
75 | 75 |
76 bool {{class_name}}Stub::Accept(mojo::Message* message) { | 76 bool {{class_name}}Stub::Accept(mojo::Message* message) { |
77 switch (message->data->header.name) { | 77 switch (message->data->header.name) { |
78 {%- for method in interface.methods %} | 78 {%- for method in interface.methods %} |
79 case internal::k{{class_name}}_{{method.name}}_Name: { | 79 case internal::k{{class_name}}_{{method.name}}_Name: { |
80 internal::{{class_name}}_{{method.name}}_Params_Data* params = | 80 internal::{{class_name}}_{{method.name}}_Params_Data* params = |
81 reinterpret_cast<internal::{{class_name}}_{{method.name}}_Params_Data*
>( | 81 reinterpret_cast<internal::{{class_name}}_{{method.name}}_Params_Data*
>( |
82 message->data->payload); | 82 message->data->payload); |
83 | 83 |
84 if (!mojo::internal::DecodePointersAndHandles(params, message)) | 84 if (!params->DecodePointersAndHandles(message)) |
85 return false; | 85 return false; |
86 sink_->{{method.name}}({{params(method)}}); | 86 sink_->{{method.name}}({{params(method)}}); |
87 mojo::internal::CloseHandles(params); | 87 params->CloseHandles(); |
88 break; | 88 break; |
89 } | 89 } |
90 {%- endfor %} | 90 {%- endfor %} |
91 } | 91 } |
92 return true; | 92 return true; |
93 } | 93 } |
OLD | NEW |