OLD | NEW |
1 {%- for method in interface.methods %} | 1 {%- for method in interface.methods %} |
2 const int k{{interface.name}}_{{method.name}}_name = {{method.ordinal}}; | 2 const int k{{interface.name}}_{{method.name}}_name = {{method.ordinal}}; |
3 {%- endfor %} | 3 {%- endfor %} |
4 | 4 |
5 abstract class {{interface.name}}Calls { | 5 abstract class {{interface.name}}Calls { |
6 void enqueueMessage(Type t, int name, Object msg); | 6 void enqueueMessage(Type t, int name, Object msg); |
7 Future enqueueMessageWithRequestID(Type t, int name, int id, Object msg); | 7 Future enqueueMessageWithRequestID(Type t, int name, int id, Object msg); |
8 bool get isOpen; | 8 bool get isOpen; |
9 | 9 |
10 {%- for method in interface.methods %} | 10 {%- for method in interface.methods %} |
11 {%- if method.response_parameters == None %} | 11 {%- if method.response_parameters == None %} |
12 void call{{method.name}}( | 12 void call{{method.name}}( |
13 {%- for parameter in method.parameters -%} | 13 {%- for parameter in method.parameters -%} |
14 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} | 14 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} |
15 {%- endfor -%} | 15 {%- endfor -%} |
16 ) { | 16 ) { |
17 assert(isOpen); | 17 assert(isOpen); |
18 var params = new {{interface.name}}_{{method.name}}_Params(); | 18 var params = new {{interface.name}}_{{method.name}}_Params(); |
19 {%- for parameter in method.parameters %} | 19 {%- for parameter in method.parameters %} |
20 params.{{parameter.name}} = {{parameter.name}}; | 20 params.{{parameter.name}} = {{parameter.name}}; |
21 {%- endfor %} | 21 {%- endfor %} |
22 enqueueMessage({{interface.name}}_{{method.name}}_Params, | 22 enqueueMessage({{interface.name}}_{{method.name}}_Params, |
23 k{{interface.name}}_{{method.name}}_name, | 23 k{{interface.name}}_{{method.name}}_name, |
24 params); | 24 params); |
25 } | 25 } |
26 {% else %} | 26 {% else %} |
27 Future<{{interface.name}}_{{method.name}}_ResponseParams> call{{method.name}}( | 27 Future<{{interface.name}}_{{method.name}}_ResponseParams> call{{method.name}}( |
28 {%- for parameter in method.parameters -%} | 28 {%- for parameter in method.parameters -%} |
29 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} | 29 {{parameter.kind|dart_decl_type}} {{parameter.name}}, |
30 {%- endfor -%} | 30 {%- endfor -%} |
| 31 [int requestId = -1] |
31 ) { | 32 ) { |
32 assert(isOpen); | 33 assert(isOpen); |
33 var params = new {{interface.name}}_{{method.name}}_Params(); | 34 var params = new {{interface.name}}_{{method.name}}_Params(); |
34 {%- for parameter in method.parameters %} | 35 {%- for parameter in method.parameters %} |
35 params.{{parameter.name}} = {{parameter.name}}; | 36 params.{{parameter.name}} = {{parameter.name}}; |
36 {%- endfor %} | 37 {%- endfor %} |
37 return enqueueMessageWithRequestID( | 38 return enqueueMessageWithRequestID( |
38 {{interface.name}}_{{method.name}}_Params, | 39 {{interface.name}}_{{method.name}}_Params, |
39 k{{interface.name}}_{{method.name}}_name, | 40 k{{interface.name}}_{{method.name}}_name, |
40 0, | 41 requestId, |
41 bindings.kMessageExpectsResponse, | 42 bindings.kMessageExpectsResponse, |
42 params); | 43 params); |
43 } | 44 } |
44 {%- endif %} | 45 {%- endif %} |
45 {%- endfor %} | 46 {%- endfor %} |
46 } | 47 } |
47 | 48 |
48 class {{interface.name}}Client extends bindings.Client with {{interface.name}}Ca
lls { | 49 class {{interface.name}}Client extends bindings.Client with {{interface.name}}Ca
lls { |
49 {{interface.name}}Client(core.MojoMessagePipeEndpoint endpoint) : super(endpoi
nt); | 50 {{interface.name}}Client(core.MojoMessagePipeEndpoint endpoint) : super(endpoi
nt); |
50 | 51 |
| 52 {{interface.name}}Client.fromHandle(int handle) : super.fromHandle(handle); |
| 53 |
51 void handleResponse(bindings.MessageReader reader) { | 54 void handleResponse(bindings.MessageReader reader) { |
52 switch (reader.name) { | 55 switch (reader.name) { |
53 {%- for method in interface.methods %} | 56 {%- for method in interface.methods %} |
54 {%- if method.response_parameters != None %} | 57 {%- if method.response_parameters != None %} |
55 case k{{interface.name}}_{{method.name}}_name: | 58 case k{{interface.name}}_{{method.name}}_name: |
56 var r = reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseP
arams); | 59 var r = reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseP
arams); |
57 Completer c = completerQueue.removeAt(0); | 60 Completer c = completerMap[reader.requestID]; |
| 61 completerMap[reader.requestID] = null; |
58 c.complete(r); | 62 c.complete(r); |
59 break; | 63 break; |
60 {%- endif %} | 64 {%- endif %} |
61 {%- endfor %} | 65 {%- endfor %} |
62 default: | 66 default: |
63 throw new Exception("Unexpected message name"); | 67 throw new Exception("Unexpected message name"); |
64 break; | 68 break; |
65 } | 69 } |
66 } | 70 } |
67 } | 71 } |
68 | 72 |
69 | 73 |
70 abstract class {{interface.name}}Interface extends bindings.Interface | 74 abstract class {{interface.name}}Interface extends bindings.Interface |
71 {% if interface.client != None -%} | 75 {% if interface.client != None -%} |
72 with {{imported_from[interface.client]}}{{interface.client}}Calls | 76 with {{imported_from[interface.client]}}{{interface.client}}Calls |
73 {% endif -%} { | 77 {% endif -%} { |
74 {{interface.name}}Interface(core.MojoMessagePipeEndpoint endpoint) : super(end
point); | 78 {{interface.name}}Interface(core.MojoMessagePipeEndpoint endpoint) : super(end
point); |
75 | 79 |
| 80 {{interface.name}}Interface.fromHandle(int handle) : super.fromHandle(handle); |
| 81 |
| 82 static const String name = '{{namespace|replace(".","::")}}::{{interface.name}
}'; |
| 83 |
76 {% for method in interface.methods %} | 84 {% for method in interface.methods %} |
77 {%- if method.response_parameters == None %} | 85 {%- if method.response_parameters == None %} |
78 void {{method.name|stylize_method}}( | 86 void {{method.name|stylize_method}}( |
79 {%- for parameter in method.parameters -%} | 87 {%- for parameter in method.parameters -%} |
80 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} | 88 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} |
81 {%- endfor -%} | 89 {%- endfor -%} |
82 ); | 90 ); |
83 {%- else %} | 91 {%- else %} |
84 {{interface.name}}_{{method.name}}_ResponseParams {{method.name|stylize_method
}}( | 92 {{interface.name}}_{{method.name}}_ResponseParams {{method.name|stylize_method
}}( |
85 {%- for parameter in method.parameters -%} | 93 {%- for parameter in method.parameters -%} |
86 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} | 94 {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %},
{% endif %} |
87 {%- endfor -%} | 95 {%- endfor -%} |
88 ); | 96 ); |
89 {%- endif %} | 97 {%- endif %} |
90 {%- endfor %} | 98 {%- endfor %} |
91 | 99 |
92 bindings.Message handleMessage(bindings.MessageReader reader) { | 100 Future<bindings.Message> handleMessage(bindings.MessageReader reader) { |
93 switch (reader.name) { | 101 switch (reader.name) { |
94 {%- for method in interface.methods %} | 102 {%- for method in interface.methods %} |
95 case k{{interface.name}}_{{method.name}}_name: | 103 case k{{interface.name}}_{{method.name}}_name: |
96 var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Para
ms); | 104 var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Para
ms); |
97 {%- if method.response_parameters == None %} | 105 {%- if method.response_parameters == None %} |
98 {{method.name|stylize_method}}(params); | 106 {{method.name|stylize_method}}( |
99 {%- else %} | |
100 var response = {{method.name|stylize_method}}( | |
101 {%- for parameter in method.parameters -%} | 107 {%- for parameter in method.parameters -%} |
102 params.{{parameter.name}}{% if not loop.last %}, {% endif %} | 108 params.{{parameter.name}}{% if not loop.last %}, {% endif %} |
103 {%- endfor -%} | 109 {%- endfor -%} |
104 ); | 110 ); |
105 return buildResponseWithID( | 111 {%- else %} |
106 {{interface.name}}_{{method.name}}_ResponseParams, | 112 return {{method.name|stylize_method}}( |
107 k{{interface.name}}_{{method.name}}_name, | 113 {%- for parameter in method.parameters -%} |
108 reader.requestID, | 114 params.{{parameter.name}}{% if not loop.last %}, {% endif %} |
109 bindings.kMessageIsResponse, | 115 {%- endfor -%} |
110 response); | 116 ).then((response) { |
| 117 if (response != null) { |
| 118 return buildResponseWithID( |
| 119 {{interface.name}}_{{method.name}}_ResponseParams, |
| 120 k{{interface.name}}_{{method.name}}_name, |
| 121 reader.requestID, |
| 122 bindings.kMessageIsResponse, |
| 123 response); |
| 124 } |
| 125 }); |
111 {%- endif %} | 126 {%- endif %} |
112 break; | 127 break; |
113 {%- endfor %} | 128 {%- endfor %} |
114 default: | 129 default: |
115 throw new Exception("Unexpected message name"); | 130 throw new Exception("Unexpected message name"); |
116 break; | 131 break; |
117 } | 132 } |
118 return null; | 133 return null; |
119 } | 134 } |
120 } | 135 } |
121 | 136 |
122 | 137 |
123 {#--- TODO(zra): Validation #} | 138 {#--- TODO(zra): Validation #} |
124 | 139 |
125 | 140 |
126 {#--- Interface Constants #} | 141 {#--- Interface Constants #} |
127 {% for constant in interface.constants %} | 142 {% for constant in interface.constants %} |
128 final {{constant.name}} = {{constant.value|expression_to_text}}; | 143 final {{constant.name}} = {{constant.value|expression_to_text}}; |
129 {%- endfor %} | 144 {%- endfor %} |
130 | 145 |
131 | 146 |
132 {#--- Interface Enums #} | 147 {#--- Interface Enums #} |
133 {%- from "enum_definition.tmpl" import enum_def -%} | 148 {%- from "enum_definition.tmpl" import enum_def -%} |
134 {%- for enum in interface.enums %} | 149 {%- for enum in interface.enums %} |
135 {{ enum_def("", enum) }} | 150 {{ enum_def("", enum) }} |
136 {%- endfor %} | 151 {%- endfor %} |
OLD | NEW |