OLD | NEW |
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_interface_kind -%} |
| 10 mojo::MakeProxy<{{param.kind.name}}>(mojo::MakePassable(params->{{param.name}}()
).Pass()) |
9 {%- elif param.kind|is_handle_kind -%} | 11 {%- elif param.kind|is_handle_kind -%} |
10 mojo::MakePassable(params->{{param.name}}()).Pass() | 12 mojo::MakePassable(params->{{param.name}}()).Pass() |
11 {%- elif param.kind|is_enum_kind -%} | 13 {%- elif param.kind|is_enum_kind -%} |
12 static_cast<{{param.kind|cpp_wrapper_type}}>(params->{{param.name}}()) | 14 static_cast<{{param.kind|cpp_wrapper_type}}>(params->{{param.name}}()) |
13 {%- else -%} | 15 {%- else -%} |
14 params->{{param.name}}() | 16 params->{{param.name}}() |
15 {%- endif -%} | 17 {%- endif -%} |
16 {%- if not loop.last %}, {% endif %} | 18 {%- if not loop.last %}, {% endif %} |
17 {%- endfor %} | 19 {%- endfor %} |
18 {%- endmacro %} | 20 {%- endmacro %} |
(...skipping 12 matching lines...) Expand all Loading... |
31 | 33 |
32 {%- macro build_message(params_name, parameters) -%} | 34 {%- macro build_message(params_name, parameters) -%} |
33 {{params_name}}* params = | 35 {{params_name}}* params = |
34 {{params_name}}::New(builder.buffer()); | 36 {{params_name}}::New(builder.buffer()); |
35 {#--- Sets #} | 37 {#--- Sets #} |
36 {% for param in parameters %} | 38 {% for param in parameters %} |
37 {%- if param.kind|is_object_kind %} | 39 {%- if param.kind|is_object_kind %} |
38 if (!in_{{param.name}}.is_null()) | 40 if (!in_{{param.name}}.is_null()) |
39 params->set_{{param.name}}( | 41 params->set_{{param.name}}( |
40 mojo::internal::Unwrap(in_{{param.name}})->Clone(builder.buffer())); | 42 mojo::internal::Unwrap(in_{{param.name}})->Clone(builder.buffer())); |
| 43 {%- elif param.kind|is_interface_kind %} |
| 44 if (!in_{{param.name}}.get()) { |
| 45 params->set_{{param.name}}(mojo::MessagePipeHandle()); |
| 46 } else if (in_{{param.name}}.has_context()) { |
| 47 // TODO(darin): Add code to delegate message pipe! |
| 48 assert(false); |
| 49 params->set_{{param.name}}(mojo::MessagePipeHandle()); |
| 50 } else { |
| 51 mojo::MessagePipe pipe; |
| 52 in_{{param.name}}.ConfigureStub(pipe.handle0.Pass()); |
| 53 in_{{param.name}}.Detach(); |
| 54 params->set_{{param.name}}(pipe.handle1.release()); |
| 55 } |
41 {%- elif param.kind|is_handle_kind %} | 56 {%- elif param.kind|is_handle_kind %} |
42 params->set_{{param.name}}(in_{{param.name}}.release()); | 57 params->set_{{param.name}}(in_{{param.name}}.release()); |
43 {%- else %} | 58 {%- else %} |
44 params->set_{{param.name}}(in_{{param.name}}); | 59 params->set_{{param.name}}(in_{{param.name}}); |
45 {%- endif %} | 60 {%- endif %} |
46 {%- endfor %} | 61 {%- endfor %} |
47 mojo::Message message; | 62 mojo::Message message; |
48 params->EncodePointersAndHandles(message.mutable_handles()); | 63 params->EncodePointersAndHandles(message.mutable_handles()); |
49 builder.Finish(&message); | 64 builder.Finish(&message); |
50 {%- endmacro %} | 65 {%- endmacro %} |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 bool ok MOJO_ALLOW_UNUSED = responder_->Accept(&message); | 173 bool ok MOJO_ALLOW_UNUSED = responder_->Accept(&message); |
159 // TODO(darin): !ok returned here indicates a malformed message, and that may | 174 // 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 | 175 // 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. | 176 // that from here. We should add a way. |
162 delete responder_; | 177 delete responder_; |
163 responder_ = NULL; | 178 responder_ = NULL; |
164 } | 179 } |
165 {%- endif -%} | 180 {%- endif -%} |
166 {%- endfor %} | 181 {%- endfor %} |
167 | 182 |
168 {{class_name}}Stub::{{class_name}}Stub({{class_name}}* sink) | 183 {{class_name}}Stub::{{class_name}}Stub() |
169 : sink_(sink) { | 184 : sink_(NULL) { |
170 } | 185 } |
171 | 186 |
172 {#--- Stub definition #} | 187 {#--- Stub definition #} |
173 | 188 |
174 bool {{class_name}}Stub::Accept(mojo::Message* message) { | 189 bool {{class_name}}Stub::Accept(mojo::Message* message) { |
175 {%- if interface.methods %} | 190 {%- if interface.methods %} |
176 switch (message->header()->name) { | 191 switch (message->header()->name) { |
177 {%- for method in interface.methods %} | 192 {%- for method in interface.methods %} |
178 case internal::k{{class_name}}_{{method.name}}_Name: { | 193 case internal::k{{class_name}}_{{method.name}}_Name: { |
179 {%- if method.response_parameters == None %} | 194 {%- if method.response_parameters == None %} |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 return true; | 234 return true; |
220 {%- else %} | 235 {%- else %} |
221 break; | 236 break; |
222 {%- endif %} | 237 {%- endif %} |
223 } | 238 } |
224 {%- endfor %} | 239 {%- endfor %} |
225 } | 240 } |
226 {%- endif %} | 241 {%- endif %} |
227 return false; | 242 return false; |
228 } | 243 } |
OLD | NEW |