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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 {%- for method in interface.methods %} | 127 {%- for method in interface.methods %} |
119 {%- if method.response_parameters != None %} | 128 {%- if method.response_parameters != None %} |
120 {%- set response_struct = method.response_param_struct %} | 129 {%- set response_struct = method.response_param_struct %} |
121 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name: | 130 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name: |
122 var r = {{response_struct|name}}.deserialize( | 131 var r = {{response_struct|name}}.deserialize( |
123 message.payload); | 132 message.payload); |
124 if (!message.header.hasRequestId) { | 133 if (!message.header.hasRequestId) { |
125 proxyError("Expected a message with a valid request Id."); | 134 proxyError("Expected a message with a valid request Id."); |
126 return; | 135 return; |
127 } | 136 } |
128 Completer c = completerMap[message.header.requestId]; | 137 Function callback = callbackMap[message.header.requestId]; |
129 if (c == null) { | 138 if (callback == null) { |
130 proxyError( | 139 proxyError( |
131 "Message had unknown request Id: ${message.header.requestId}"); | 140 "Message had unknown request Id: ${message.header.requestId}"); |
132 return; | 141 return; |
133 } | 142 } |
134 completerMap.remove(message.header.requestId); | 143 callbackMap.remove(message.header.requestId); |
135 if (c.isCompleted) { | 144 callback( |
136 proxyError("Response completer already completed"); | 145 {%- for param in method.response_parameters -%} |
137 return; | 146 r.{{param|name}} {% if not loop.last %}, {% endif %} |
138 } | 147 {%- endfor -%} |
139 c.complete(r); | 148 ); |
140 break; | 149 break; |
141 {%- endif %} | 150 {%- endif %} |
142 {%- endfor %} | 151 {%- endfor %} |
143 default: | 152 default: |
144 proxyError("Unexpected message type: ${message.header.type}"); | 153 proxyError("Unexpected message type: ${message.header.type}"); |
145 close(immediate: true); | 154 close(immediate: true); |
146 break; | 155 break; |
147 } | 156 } |
148 } | 157 } |
149 | 158 |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 } | 203 } |
195 var params = new {{request_struct|name}}(); | 204 var params = new {{request_struct|name}}(); |
196 {%- for parameter in method.parameters %} | 205 {%- for parameter in method.parameters %} |
197 params.{{parameter|name}} = {{parameter|name}}; | 206 params.{{parameter|name}} = {{parameter|name}}; |
198 {%- endfor %} | 207 {%- endfor %} |
199 ctrl.sendMessage(params, | 208 ctrl.sendMessage(params, |
200 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name); | 209 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name); |
201 } | 210 } |
202 {%- else %} | 211 {%- else %} |
203 {%- set request_struct = method.param_struct %} | 212 {%- set request_struct = method.param_struct %} |
204 dynamic {{method|name}}( | 213 void {{method|name}}( |
205 {%- for parameter in method.parameters -%} | 214 {%- for parameter in method.parameters -%} |
206 {{parameter.kind|dart_type}} {{parameter|name}}, | 215 {{parameter.kind|dart_type}} {{parameter|name}}, |
207 {%- endfor -%} | 216 {%- endfor -%} |
208 [Function responseFactory = null]) { | 217 void callback( |
| 218 {%- for param in method.response_parameters -%} |
| 219 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif
%} |
| 220 {%- endfor -%} |
| 221 )) { |
209 var params = new {{request_struct|name}}(); | 222 var params = new {{request_struct|name}}(); |
210 {%- for parameter in method.parameters %} | 223 {%- for parameter in method.parameters %} |
211 params.{{parameter|name}} = {{parameter|name}}; | 224 params.{{parameter|name}} = {{parameter|name}}; |
212 {%- endfor %} | 225 {%- endfor %} |
213 return ctrl.sendMessageWithRequestId( | 226 ctrl.sendMessageWithRequestId( |
214 params, | 227 params, |
215 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name, | 228 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name, |
216 -1, | 229 -1, |
217 bindings.MessageHeader.kMessageExpectsResponse); | 230 bindings.MessageHeader.kMessageExpectsResponse, |
| 231 callback); |
218 } | 232 } |
219 {%- endif %} | 233 {%- endif %} |
220 {%- endfor %} | 234 {%- endfor %} |
221 } | 235 } |
222 | 236 |
223 class _{{interface|name}}StubControl | 237 class _{{interface|name}}StubControl |
224 extends bindings.StubMessageHandler | 238 extends bindings.StubMessageHandler |
225 implements bindings.StubControl<{{interface|name}}> { | 239 implements bindings.StubControl<{{interface|name}}> { |
226 {{interface|name}} _impl; | 240 {{interface|name}} _impl; |
227 | 241 |
228 _{{interface|name}}StubControl.fromEndpoint( | 242 _{{interface|name}}StubControl.fromEndpoint( |
229 core.MojoMessagePipeEndpoint endpoint, [{{interface|name}} impl]) | 243 core.MojoMessagePipeEndpoint endpoint, [{{interface|name}} impl]) |
230 : super.fromEndpoint(endpoint, autoBegin: impl != null) { | 244 : super.fromEndpoint(endpoint, autoBegin: impl != null) { |
231 _impl = impl; | 245 _impl = impl; |
232 } | 246 } |
233 | 247 |
234 _{{interface|name}}StubControl.fromHandle( | 248 _{{interface|name}}StubControl.fromHandle( |
235 core.MojoHandle handle, [{{interface|name}} impl]) | 249 core.MojoHandle handle, [{{interface|name}} impl]) |
236 : super.fromHandle(handle, autoBegin: impl != null) { | 250 : super.fromHandle(handle, autoBegin: impl != null) { |
237 _impl = impl; | 251 _impl = impl; |
238 } | 252 } |
239 | 253 |
240 _{{interface|name}}StubControl.unbound([this._impl]) : super.unbound(); | 254 _{{interface|name}}StubControl.unbound([this._impl]) : super.unbound(); |
241 | 255 |
242 String get serviceName => {{interface|name}}.serviceName; | 256 String get serviceName => {{interface|name}}.serviceName; |
243 | 257 |
244 {% for method in interface.methods %} | 258 {% for method in interface.methods %} |
245 {%- if method.response_parameters != None %} | 259 {%- if method.response_parameters != None %} |
246 {%- set response_struct = method.response_param_struct %} | 260 {%- set response_struct = method.response_param_struct %} |
247 {{response_struct|name}} _{{response_struct|name|lower_camel}}Factory( | 261 Function _{{response_struct|name|lower_camel}}Responder( |
248 {%- for param in method.response_parameters -%} | 262 int requestId) { |
249 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif %} | 263 return ( |
250 {%- endfor -%} | 264 {%- for param in method.response_parameters -%} |
251 ) { | 265 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif
%} |
252 var result = new {{response_struct|name}}(); | 266 {%- endfor -%} |
253 {%- for param in method.response_parameters %} | 267 ) { |
254 result.{{param|name}} = {{param|name}}; | 268 var result = new {{response_struct|name}}(); |
255 {%- endfor %} | 269 {%- for param in method.response_parameters %} |
256 return result; | 270 result.{{param|name}} = {{param|name}}; |
| 271 {%- endfor %} |
| 272 sendResponse(buildResponseWithId( |
| 273 result, |
| 274 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name, |
| 275 requestId, |
| 276 bindings.MessageHeader.kMessageIsResponse)); |
| 277 }; |
257 } | 278 } |
258 {%- endif %} | 279 {%- endif %} |
259 {%- endfor %} | 280 {%- endfor %} |
260 | 281 |
261 dynamic handleMessage(bindings.ServiceMessage message) { | 282 void handleMessage(bindings.ServiceMessage message) { |
262 if (bindings.ControlMessageHandler.isControlMessage(message)) { | 283 if (bindings.ControlMessageHandler.isControlMessage(message)) { |
263 return bindings.ControlMessageHandler.handleMessage(this, | 284 bindings.ControlMessageHandler.handleMessage( |
264 {{interface.version}}, | 285 this, {{interface.version}}, message); |
265 message); | 286 return; |
266 } | 287 } |
267 if (_impl == null) { | 288 if (_impl == null) { |
268 throw new core.MojoApiError("$this has no implementation set"); | 289 throw new core.MojoApiError("$this has no implementation set"); |
269 } | 290 } |
270 switch (message.header.type) { | 291 switch (message.header.type) { |
271 {%- for method in interface.methods %} | 292 {%- for method in interface.methods %} |
272 {%- set request_struct = method.param_struct %} | 293 {%- set request_struct = method.param_struct %} |
273 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name: | 294 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name: |
274 {%- if method.parameters %} | 295 {%- if method.parameters %} |
275 var params = {{request_struct|name}}.deserialize( | 296 var params = {{request_struct|name}}.deserialize( |
276 message.payload); | 297 message.payload); |
277 {%- endif %} | 298 {%- endif %} |
278 {%- if method.response_parameters == None %} | 299 {%- if method.response_parameters == None %} |
279 _impl.{{method|name}}( | 300 _impl.{{method|name}}( |
280 {%- for parameter in method.parameters -%} | 301 {%- for parameter in method.parameters -%} |
281 params.{{parameter|name}}{% if not loop.last %}, {% endif %} | 302 params.{{parameter|name}}{% if not loop.last %}, {% endif %} |
282 {%- endfor -%} | 303 {%- endfor -%} |
283 ); | 304 ); |
284 {%- else %} | 305 {%- else %} |
285 {%- set response_struct = method.response_param_struct %} | 306 {%- set response_struct = method.response_param_struct %} |
286 var response = _impl.{{method|name}}( | 307 _impl.{{method|name}}( |
287 {%- for parameter in method.parameters -%} | 308 {%- for parameter in method.parameters -%} |
288 params.{{parameter|name}}, | 309 params.{{parameter|name}}, {% endfor -%} |
289 {%- endfor -%} | 310 _{{response_struct|name|lower_camel}}Responder(message.header.requestI
d)); |
290 _{{response_struct|name|lower_camel}}Factory); | |
291 if (response is Future) { | |
292 return response.then((response) { | |
293 if (response != null) { | |
294 return buildResponseWithId( | |
295 response, | |
296 _{{interface|name|lower_camel}}Method{{method|name|upper_camel
}}Name, | |
297 message.header.requestId, | |
298 bindings.MessageHeader.kMessageIsResponse); | |
299 } | |
300 }); | |
301 } else if (response != null) { | |
302 return buildResponseWithId( | |
303 response, | |
304 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Na
me, | |
305 message.header.requestId, | |
306 bindings.MessageHeader.kMessageIsResponse); | |
307 } | |
308 {%- endif %} | 311 {%- endif %} |
309 break; | 312 break; |
310 {%- endfor %} | 313 {%- endfor %} |
311 default: | 314 default: |
312 throw new bindings.MojoCodecError("Unexpected message name"); | 315 throw new bindings.MojoCodecError("Unexpected message name"); |
313 break; | 316 break; |
314 } | 317 } |
315 return null; | |
316 } | 318 } |
317 | 319 |
318 {{interface|name}} get impl => _impl; | 320 {{interface|name}} get impl => _impl; |
319 set impl({{interface|name}} d) { | 321 set impl({{interface|name}} d) { |
320 if (d == null) { | 322 if (d == null) { |
321 throw new core.MojoApiError("$this: Cannot set a null implementation"); | 323 throw new core.MojoApiError("$this: Cannot set a null implementation"); |
322 } | 324 } |
323 if (isBound && (_impl == null)) { | 325 if (isBound && (_impl == null)) { |
324 beginHandlingEvents(); | 326 beginHandlingEvents(); |
325 } | 327 } |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
372 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en
dif %} | 374 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en
dif %} |
373 {%- endfor -%} | 375 {%- endfor -%} |
374 ) { | 376 ) { |
375 return impl.{{method|name}}( | 377 return impl.{{method|name}}( |
376 {%- for parameter in method.parameters -%} | 378 {%- for parameter in method.parameters -%} |
377 {{parameter|name}}{% if not loop.last %}, {% endif %} | 379 {{parameter|name}}{% if not loop.last %}, {% endif %} |
378 {%- endfor -%} | 380 {%- endfor -%} |
379 ); | 381 ); |
380 } | 382 } |
381 {%- else %} | 383 {%- else %} |
382 dynamic {{method|name}}( | 384 void {{method|name}}( |
383 {%- for parameter in method.parameters -%} | 385 {%- for parameter in method.parameters -%} |
384 {{parameter.kind|dart_type}} {{parameter|name}}, | 386 {{parameter.kind|dart_type}} {{parameter|name}}, |
385 {%- endfor -%} | 387 {%- endfor -%} |
386 [Function responseFactory = null]) { | 388 void callback( |
| 389 {%- for param in method.response_parameters -%} |
| 390 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif
%} |
| 391 {%- endfor -%} |
| 392 )) { |
387 return impl.{{method|name}}( | 393 return impl.{{method|name}}( |
388 {%- for parameter in method.parameters -%} | 394 {%- for parameter in method.parameters -%} |
389 {{parameter|name}}, | 395 {{parameter|name}}, |
390 {%- endfor -%} | 396 {%- endfor -%} |
391 responseFactory); | 397 callback); |
392 } | 398 } |
393 {%- endif %} | 399 {%- endif %} |
394 {%- endfor %} | 400 {%- endfor %} |
395 } | 401 } |
OLD | NEW |