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

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

Issue 674383002: Initial work on Dart bindings for Mojo. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Merge. Work on templates. Created 6 years, 1 month 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
(Empty)
1 {%- for method in interface.methods %}
2 const int k{{interface.name}}_{{method.name}}_name = {{method.ordinal}};
3 {%- endfor %}
4
5
6 abstract class {{interface.name}}Calls {
7 List get send_queue;
8 core.MojoHandle get handle;
9
10 Future enqueueMessage(Type t, int name, Object msg);
11
12 {%- for method in interface.methods %}
13 Future {{method.name|stylize_method}}(
14 {%- for parameter in method.parameters -%}
15 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %}, {% endif %}
16 {%- endfor -%}
17 ) {
18 var params = new {{interface.name}}_{{method.name}}_Params();
19 {%- for parameter in method.parameters %}
20 params.{{parameter.name}} = {{parameter.name}};
21 {%- endfor %}
22 return enqueueMessage({{interface.name}}_{{method.name}}_Params,
23 k{{interface.name}}_{{method.name}}_name,
24 params);
25 }
26 {%- endfor %}
27 }
28
29
30 class {{interface.name}}Client extends bindings.Client with {{interface.name}}Ca lls {
31 {{interface.name}}Client(core.MojoMessagePipeEndpoint endpoint) : super(endpoi nt);
32
33 void handleResponse(bindings.MessageReader reader) {
34 switch (reader.name) {
35 {%- for method in interface.methods %}
36 case k{{interface.name}}_{{method.name}}_name:
37 {%- if method.response_parameters != None %}
38 var r = reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseP arams);
39 Completer c = completer_queue.removeAt(0);
40 c.complete(r);
41 break;
42 {%- endif %}
43 {%- endfor %}
44 default:
45 throw new Exception("Unexpected message name");
46 break;
47 }
48 }
49 }
50
51
52 abstract class {{interface.name}}Interface extends bindings.Interface {
53 {{interface.name}}Interface(core.MojoMessagePipeEndpoint endpoint) : super(end point);
54
55 {% for method in interface.methods %}
56 {%- if method.response_parameters == None %}
57 void {{method.name|stylize_method}}({{interface.name}}_{{method.name}}_Params params);
58 {%- else %}
59 Future<{{interface.name}}_{{method.name}}_ResponseParams> {{method.name|styliz e_method}}({{interface.name}}_{{method.name}}_Params);
60 {%- endif %}
61 {%- endfor %}
62
63 Future<bindings.Message> handleMessage(bindings.MessageReader reader) {
64 var result = null;
65 switch (reader.name) {
66 {%- for method in interface.methods %}
67 case k{{interface.name}}_{{method.name}}_name:
68 var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Para ms);
69 {%- if method.response_parameters == None %}
70 {{method.name|stylize_method}}(params);
71 {%- else %}
72 var response_message = new Completer();
73 {{method.name|stylize_method}}(params).then((response) {
74 buildResponse(response_message,
75 {{interface.name}}_{{method.name}}_ResponseParams,
76 k{{interface.name}}_{{method.name}}_name,
77 response);
78 });
79 result = response_message.future;
80 {%- endif %}
81 break;
82 {%- endfor %}
83 default:
84 throw new Exception("Unexpected message name");
85 break;
86 }
87 return result;
88 }
89 }
90
91
92 {#--- TODO(zra): Validation #}
93
94
95 {#--- Interface Constants #}
96 {%- for constant in interface.constants %}
97 final {{constant.name}} = {{constant.value|expression_to_text}},
98 {%- endfor %}
99
100
101 {#--- Interface Enums #}
102 {%- from "enum_definition.tmpl" import enum_def -%}
103 {%- for enum in interface.enums %}
104 {{ enum_def("", enum) }}
105 {%- endfor %}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698