OLD | NEW |
1 {%- for method in interface.methods %} | 1 {%- for method in interface.methods %} |
2 const int _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name =
{{method.ordinal}}; | 2 const int _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name =
{{method.ordinal}}; |
3 {%- endfor %} | 3 {%- endfor %} |
4 | 4 |
5 {#--- Interface Enums #} | 5 {#--- Interface Enums #} |
6 {%- from "enum_definition.tmpl" import enum_def -%} | 6 {%- from "enum_definition.tmpl" import enum_def -%} |
7 {%- for enum in interface.enums %} | 7 {%- for enum in interface.enums %} |
8 {{ enum_def(enum, typepkg, package) }} | 8 {{ enum_def(enum, typepkg, package) }} |
9 {%- endfor %} | 9 {%- endfor %} |
10 | 10 |
11 class _{{interface|name}}ServiceDescription implements {{descpkg}}ServiceDescrip
tion { | 11 class _{{interface|name}}ServiceDescription implements {{descpkg}}ServiceDescrip
tion { |
12 {%- if should_gen_mojom_types and interface.service_name %} | 12 {%- if should_gen_mojom_types and interface.service_name %} |
13 dynamic getTopLevelInterface([Function responseFactory]){ | 13 void getTopLevelInterface(Function responder){ |
14 var interfaceTypeKey = getRuntimeTypeInfo().services["{{interface.service_na
me}}"]; | 14 var interfaceTypeKey = getRuntimeTypeInfo().services["{{interface.service_na
me}}"]; |
15 var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey]; | 15 var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey]; |
16 return responseFactory(userDefinedType.interfaceType); | 16 responder(userDefinedType.interfaceType); |
17 } | 17 } |
18 | 18 |
19 dynamic getTypeDefinition(String typeKey, [Function responseFactory]) => | 19 void getTypeDefinition(String typeKey, Function responder) { |
20 responseFactory(getAllMojomTypeDefinitions()[typeKey]); | 20 responder(getAllMojomTypeDefinitions()[typeKey]); |
| 21 } |
21 | 22 |
22 dynamic getAllTypeDefinitions([Function responseFactory]) => | 23 void getAllTypeDefinitions(Function responder) { |
23 responseFactory(getAllMojomTypeDefinitions()); | 24 responder(getAllMojomTypeDefinitions()); |
| 25 } |
24 {%- else %} | 26 {%- else %} |
25 dynamic getTopLevelInterface([Function responseFactory]) => | 27 void getTopLevelInterface(Function responder) { |
26 responseFactory(null); | 28 responder(null); |
| 29 } |
27 | 30 |
28 dynamic getTypeDefinition(String typeKey, [Function responseFactory]) => | 31 void getTypeDefinition(String typeKey, Function responder) { |
29 responseFactory(null); | 32 responder(null); |
| 33 } |
30 | 34 |
31 dynamic getAllTypeDefinitions([Function responseFactory]) => | 35 void getAllTypeDefinitions(Function responder) { |
32 responseFactory(null); | 36 responder(null); |
| 37 } |
33 {%- endif %} | 38 {%- endif %} |
34 } | 39 } |
35 | 40 |
36 abstract class {{interface|name}} { | 41 abstract class {{interface|name}} { |
37 {%- if interface.service_name %} | 42 {%- if interface.service_name %} |
38 static const String serviceName = "{{interface.service_name}}"; | 43 static const String serviceName = "{{interface.service_name}}"; |
39 {%- else %} | 44 {%- else %} |
40 static const String serviceName = null; | 45 static const String serviceName = null; |
41 {%- endif %} | 46 {%- endif %} |
42 | 47 |
(...skipping 18 matching lines...) Expand all Loading... |
61 } | 66 } |
62 | 67 |
63 {%- for method in interface.methods %} | 68 {%- for method in interface.methods %} |
64 {%- if method.response_parameters == None %} | 69 {%- if method.response_parameters == None %} |
65 void {{method|name}}( | 70 void {{method|name}}( |
66 {%- for parameter in method.parameters -%} | 71 {%- for parameter in method.parameters -%} |
67 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {%
endif %} | 72 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {%
endif %} |
68 {%- endfor -%} | 73 {%- endfor -%} |
69 ); | 74 ); |
70 {%- else %} | 75 {%- else %} |
71 dynamic {{method|name}}( | 76 void {{method|name}}( |
72 {%- for parameter in method.parameters -%} | 77 {%- for parameter in method.parameters -%} |
73 {{parameter.kind|dart_type}} {{parameter|name}}, | 78 {{parameter.kind|dart_type}} {{parameter|name}}, |
74 {%- endfor -%} | 79 {%- endfor -%} |
75 [Function responseFactory = null]); | 80 void callback( |
| 81 {%- for param in method.response_parameters -%} |
| 82 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif
%} |
| 83 {%- endfor -%} |
| 84 )); |
76 {%- endif %} | 85 {%- endif %} |
77 {%- endfor %} | 86 {%- endfor %} |
78 | 87 |
79 {#--- Interface Constants #} | 88 {#--- Interface Constants #} |
80 {%- for constant in interface.constants %} | 89 {%- for constant in interface.constants %} |
81 static const {{constant.kind|dart_type}} {{constant|name}} = {{constant.resolv
ed_value}}; | 90 static const {{constant.kind|dart_type}} {{constant|name}} = {{constant.resolv
ed_value}}; |
82 {%- endfor %} | 91 {%- endfor %} |
83 } | 92 } |
84 | 93 |
85 abstract class {{interface|name}}Interface | 94 abstract class {{interface|name}}Interface |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 {%- for method in interface.methods %} | 134 {%- for method in interface.methods %} |
126 {%- if method.response_parameters != None %} | 135 {%- if method.response_parameters != None %} |
127 {%- set response_struct = method.response_param_struct %} | 136 {%- set response_struct = method.response_param_struct %} |
128 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name: | 137 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name: |
129 var r = {{response_struct|name}}.deserialize( | 138 var r = {{response_struct|name}}.deserialize( |
130 message.payload); | 139 message.payload); |
131 if (!message.header.hasRequestId) { | 140 if (!message.header.hasRequestId) { |
132 proxyError("Expected a message with a valid request Id."); | 141 proxyError("Expected a message with a valid request Id."); |
133 return; | 142 return; |
134 } | 143 } |
135 Completer c = completerMap[message.header.requestId]; | 144 Function callback = callbackMap[message.header.requestId]; |
136 if (c == null) { | 145 if (callback == null) { |
137 proxyError( | 146 proxyError( |
138 "Message had unknown request Id: ${message.header.requestId}"); | 147 "Message had unknown request Id: ${message.header.requestId}"); |
139 return; | 148 return; |
140 } | 149 } |
141 completerMap.remove(message.header.requestId); | 150 callbackMap.remove(message.header.requestId); |
142 if (c.isCompleted) { | 151 callback( |
143 proxyError("Response completer already completed"); | 152 {%- for param in method.response_parameters -%} |
144 return; | 153 r.{{param|name}} {% if not loop.last %}, {% endif %} |
145 } | 154 {%- endfor -%} |
146 c.complete(r); | 155 ); |
147 break; | 156 break; |
148 {%- endif %} | 157 {%- endif %} |
149 {%- endfor %} | 158 {%- endfor %} |
150 default: | 159 default: |
151 proxyError("Unexpected message type: ${message.header.type}"); | 160 proxyError("Unexpected message type: ${message.header.type}"); |
152 close(immediate: true); | 161 close(immediate: true); |
153 break; | 162 break; |
154 } | 163 } |
155 } | 164 } |
156 | 165 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 var params = new {{request_struct|name}}(); | 221 var params = new {{request_struct|name}}(); |
213 {%- for parameter in method.parameters %} | 222 {%- for parameter in method.parameters %} |
214 params.{{parameter|name}} = {{parameter|name}}; | 223 params.{{parameter|name}} = {{parameter|name}}; |
215 {%- endfor %} | 224 {%- endfor %} |
216 ctrl.sendMessage(params, | 225 ctrl.sendMessage(params, |
217 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name); | 226 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name); |
218 } | 227 } |
219 {%- else %} | 228 {%- else %} |
220 {%- set request_struct = method.param_struct %} | 229 {%- set request_struct = method.param_struct %} |
221 {%- set response_struct = method.response_param_struct %} | 230 {%- set response_struct = method.response_param_struct %} |
222 dynamic {{method|name}}( | 231 void {{method|name}}( |
223 {%- for parameter in method.parameters -%} | 232 {%- for parameter in method.parameters -%} |
224 {{parameter.kind|dart_type}} {{parameter|name}}, | 233 {{parameter.kind|dart_type}} {{parameter|name}}, |
225 {%- endfor -%} | 234 {%- endfor -%} |
226 [Function responseFactory = null]) { | 235 void callback( |
| 236 {%- for param in method.response_parameters -%} |
| 237 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif
%} |
| 238 {%- endfor -%} |
| 239 )) { |
227 if (impl != null) { | 240 if (impl != null) { |
228 return new Future(() => impl.{{method|name}}( | 241 impl.{{method|name}}( |
229 {%- for parameter in method.parameters -%} | 242 {%- for parameter in method.parameters -%} |
230 {{parameter|name}}, | 243 {{parameter|name}}, |
231 {%- endfor -%} | 244 {%- endfor -%} |
232 _{{interface|name}}StubControl._{{response_struct|name|lower_camel}}Fact
ory)); | 245 callback); |
| 246 return; |
233 } | 247 } |
234 var params = new {{request_struct|name}}(); | 248 var params = new {{request_struct|name}}(); |
235 {%- for parameter in method.parameters %} | 249 {%- for parameter in method.parameters %} |
236 params.{{parameter|name}} = {{parameter|name}}; | 250 params.{{parameter|name}} = {{parameter|name}}; |
237 {%- endfor %} | 251 {%- endfor %} |
238 return ctrl.sendMessageWithRequestId( | 252 ctrl.sendMessageWithRequestId( |
239 params, | 253 params, |
240 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name, | 254 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name, |
241 -1, | 255 -1, |
242 bindings.MessageHeader.kMessageExpectsResponse); | 256 bindings.MessageHeader.kMessageExpectsResponse, |
| 257 callback); |
243 } | 258 } |
244 {%- endif %} | 259 {%- endif %} |
245 {%- endfor %} | 260 {%- endfor %} |
246 } | 261 } |
247 | 262 |
248 class _{{interface|name}}StubControl | 263 class _{{interface|name}}StubControl |
249 extends bindings.StubMessageHandler | 264 extends bindings.StubMessageHandler |
250 implements bindings.StubControl<{{interface|name}}> { | 265 implements bindings.StubControl<{{interface|name}}> { |
251 {{interface|name}} _impl; | 266 {{interface|name}} _impl; |
252 | 267 |
253 _{{interface|name}}StubControl.fromEndpoint( | 268 _{{interface|name}}StubControl.fromEndpoint( |
254 core.MojoMessagePipeEndpoint endpoint, [{{interface|name}} impl]) | 269 core.MojoMessagePipeEndpoint endpoint, [{{interface|name}} impl]) |
255 : super.fromEndpoint(endpoint, autoBegin: impl != null) { | 270 : super.fromEndpoint(endpoint, autoBegin: impl != null) { |
256 _impl = impl; | 271 _impl = impl; |
257 } | 272 } |
258 | 273 |
259 _{{interface|name}}StubControl.fromHandle( | 274 _{{interface|name}}StubControl.fromHandle( |
260 core.MojoHandle handle, [{{interface|name}} impl]) | 275 core.MojoHandle handle, [{{interface|name}} impl]) |
261 : super.fromHandle(handle, autoBegin: impl != null) { | 276 : super.fromHandle(handle, autoBegin: impl != null) { |
262 _impl = impl; | 277 _impl = impl; |
263 } | 278 } |
264 | 279 |
265 _{{interface|name}}StubControl.unbound([this._impl]) : super.unbound(); | 280 _{{interface|name}}StubControl.unbound([this._impl]) : super.unbound(); |
266 | 281 |
267 String get serviceName => {{interface|name}}.serviceName; | 282 String get serviceName => {{interface|name}}.serviceName; |
268 | 283 |
269 {% for method in interface.methods %} | 284 {% for method in interface.methods %} |
270 {%- if method.response_parameters != None %} | 285 {%- if method.response_parameters != None %} |
271 {%- set response_struct = method.response_param_struct %} | 286 {%- set response_struct = method.response_param_struct %} |
272 static {{response_struct|name}} _{{response_struct|name|lower_camel}}Factory( | 287 Function _{{response_struct|name|lower_camel}}Responder( |
273 {%- for param in method.response_parameters -%} | 288 int requestId) { |
274 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif %} | 289 return ( |
275 {%- endfor -%} | 290 {%- for param in method.response_parameters -%} |
276 ) { | 291 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif
%} |
277 var result = new {{response_struct|name}}(); | 292 {%- endfor -%} |
278 {%- for param in method.response_parameters %} | 293 ) { |
279 result.{{param|name}} = {{param|name}}; | 294 var result = new {{response_struct|name}}(); |
280 {%- endfor %} | 295 {%- for param in method.response_parameters %} |
281 return result; | 296 result.{{param|name}} = {{param|name}}; |
| 297 {%- endfor %} |
| 298 sendResponse(buildResponseWithId( |
| 299 result, |
| 300 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name, |
| 301 requestId, |
| 302 bindings.MessageHeader.kMessageIsResponse)); |
| 303 }; |
282 } | 304 } |
283 {%- endif %} | 305 {%- endif %} |
284 {%- endfor %} | 306 {%- endfor %} |
285 | 307 |
286 dynamic handleMessage(bindings.ServiceMessage message) { | 308 void handleMessage(bindings.ServiceMessage message) { |
287 if (bindings.ControlMessageHandler.isControlMessage(message)) { | 309 if (bindings.ControlMessageHandler.isControlMessage(message)) { |
288 return bindings.ControlMessageHandler.handleMessage(this, | 310 bindings.ControlMessageHandler.handleMessage( |
289 {{interface.version}}, | 311 this, {{interface.version}}, message); |
290 message); | 312 return; |
291 } | 313 } |
292 if (_impl == null) { | 314 if (_impl == null) { |
293 throw new core.MojoApiError("$this has no implementation set"); | 315 throw new core.MojoApiError("$this has no implementation set"); |
294 } | 316 } |
295 switch (message.header.type) { | 317 switch (message.header.type) { |
296 {%- for method in interface.methods %} | 318 {%- for method in interface.methods %} |
297 {%- set request_struct = method.param_struct %} | 319 {%- set request_struct = method.param_struct %} |
298 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name: | 320 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name: |
299 {%- if method.parameters %} | 321 {%- if method.parameters %} |
300 var params = {{request_struct|name}}.deserialize( | 322 var params = {{request_struct|name}}.deserialize( |
301 message.payload); | 323 message.payload); |
302 {%- endif %} | 324 {%- endif %} |
303 {%- if method.response_parameters == None %} | 325 {%- if method.response_parameters == None %} |
304 _impl.{{method|name}}( | 326 _impl.{{method|name}}( |
305 {%- for parameter in method.parameters -%} | 327 {%- for parameter in method.parameters -%} |
306 params.{{parameter|name}}{% if not loop.last %}, {% endif %} | 328 params.{{parameter|name}}{% if not loop.last %}, {% endif %} |
307 {%- endfor -%} | 329 {%- endfor -%} |
308 ); | 330 ); |
309 {%- else %} | 331 {%- else %} |
310 {%- set response_struct = method.response_param_struct %} | 332 {%- set response_struct = method.response_param_struct %} |
311 var response = _impl.{{method|name}}( | 333 _impl.{{method|name}}( |
312 {%- for parameter in method.parameters -%} | 334 {%- for parameter in method.parameters -%} |
313 params.{{parameter|name}}, | 335 params.{{parameter|name}}, {% endfor -%} |
314 {%- endfor -%} | 336 _{{response_struct|name|lower_camel}}Responder(message.header.requestI
d)); |
315 _{{response_struct|name|lower_camel}}Factory); | |
316 if (response is Future) { | |
317 return response.then((response) { | |
318 if (response != null) { | |
319 return buildResponseWithId( | |
320 response, | |
321 _{{interface|name|lower_camel}}Method{{method|name|upper_camel
}}Name, | |
322 message.header.requestId, | |
323 bindings.MessageHeader.kMessageIsResponse); | |
324 } | |
325 }); | |
326 } else if (response != null) { | |
327 return buildResponseWithId( | |
328 response, | |
329 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Na
me, | |
330 message.header.requestId, | |
331 bindings.MessageHeader.kMessageIsResponse); | |
332 } | |
333 {%- endif %} | 337 {%- endif %} |
334 break; | 338 break; |
335 {%- endfor %} | 339 {%- endfor %} |
336 default: | 340 default: |
337 throw new bindings.MojoCodecError("Unexpected message name"); | 341 throw new bindings.MojoCodecError("Unexpected message name"); |
338 break; | 342 break; |
339 } | 343 } |
340 return null; | |
341 } | 344 } |
342 | 345 |
343 {{interface|name}} get impl => _impl; | 346 {{interface|name}} get impl => _impl; |
344 set impl({{interface|name}} d) { | 347 set impl({{interface|name}} d) { |
345 if (d == null) { | 348 if (d == null) { |
346 throw new core.MojoApiError("$this: Cannot set a null implementation"); | 349 throw new core.MojoApiError("$this: Cannot set a null implementation"); |
347 } | 350 } |
348 if (isBound && (_impl == null)) { | 351 if (isBound && (_impl == null)) { |
349 beginHandlingEvents(); | 352 beginHandlingEvents(); |
350 } | 353 } |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en
dif %} | 400 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en
dif %} |
398 {%- endfor -%} | 401 {%- endfor -%} |
399 ) { | 402 ) { |
400 return impl.{{method|name}}( | 403 return impl.{{method|name}}( |
401 {%- for parameter in method.parameters -%} | 404 {%- for parameter in method.parameters -%} |
402 {{parameter|name}}{% if not loop.last %}, {% endif %} | 405 {{parameter|name}}{% if not loop.last %}, {% endif %} |
403 {%- endfor -%} | 406 {%- endfor -%} |
404 ); | 407 ); |
405 } | 408 } |
406 {%- else %} | 409 {%- else %} |
407 dynamic {{method|name}}( | 410 void {{method|name}}( |
408 {%- for parameter in method.parameters -%} | 411 {%- for parameter in method.parameters -%} |
409 {{parameter.kind|dart_type}} {{parameter|name}}, | 412 {{parameter.kind|dart_type}} {{parameter|name}}, |
410 {%- endfor -%} | 413 {%- endfor -%} |
411 [Function responseFactory = null]) { | 414 void callback( |
| 415 {%- for param in method.response_parameters -%} |
| 416 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif
%} |
| 417 {%- endfor -%} |
| 418 )) { |
412 return impl.{{method|name}}( | 419 return impl.{{method|name}}( |
413 {%- for parameter in method.parameters -%} | 420 {%- for parameter in method.parameters -%} |
414 {{parameter|name}}, | 421 {{parameter|name}}, |
415 {%- endfor -%} | 422 {%- endfor -%} |
416 responseFactory); | 423 callback); |
417 } | 424 } |
418 {%- endif %} | 425 {%- endif %} |
419 {%- endfor %} | 426 {%- endfor %} |
420 } | 427 } |
OLD | NEW |