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

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

Issue 2250183003: Make the fuchsia mojo/public repo the source of truth. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 4 months 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 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name = {{method.ordinal}};
3 {%- endfor %}
4
5 {#--- Interface Enums #}
6 {%- from "enum_definition.tmpl" import enum_def -%}
7 {%- for enum in interface.enums %}
8 {{ enum_def(enum, typepkg, package) }}
9 {%- endfor %}
10
11 class _{{interface|name}}ServiceDescription implements {{descpkg}}ServiceDescrip tion {
12 {%- if should_gen_mojom_types and interface.service_name %}
13 void getTopLevelInterface(Function responder){
14 var interfaceTypeKey = getRuntimeTypeInfo().services["{{interface.service_na me}}"];
15 var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey];
16 responder(userDefinedType.interfaceType);
17 }
18
19 void getTypeDefinition(String typeKey, Function responder) {
20 responder(getAllMojomTypeDefinitions()[typeKey]);
21 }
22
23 void getAllTypeDefinitions(Function responder) {
24 responder(getAllMojomTypeDefinitions());
25 }
26 {%- else %}
27 void getTopLevelInterface(Function responder) {
28 responder(null);
29 }
30
31 void getTypeDefinition(String typeKey, Function responder) {
32 responder(null);
33 }
34
35 void getAllTypeDefinitions(Function responder) {
36 responder(null);
37 }
38 {%- endif %}
39 }
40
41 abstract class {{interface|name}} {
42 {%- if interface.service_name %}
43 static const String serviceName = "{{interface.service_name}}";
44 {%- else %}
45 static const String serviceName = null;
46 {%- endif %}
47
48 static {{descpkg}}ServiceDescription _cachedServiceDescription;
49 static {{descpkg}}ServiceDescription get serviceDescription {
50 if (_cachedServiceDescription == null) {
51 _cachedServiceDescription = new _{{interface|name}}ServiceDescription();
52 }
53 return _cachedServiceDescription;
54 }
55
56 static {{interface|name}}Proxy connectToService(
57 bindings.ServiceConnector s, String url, [String serviceName]) {
58 {{interface|name}}Proxy p = new {{interface|name}}Proxy.unbound();
59 String name = serviceName ?? {{interface|name}}.serviceName;
60 if ((name == null) || name.isEmpty) {
61 throw new core.MojoApiError(
62 "If an interface has no ServiceName, then one must be provided.");
63 }
64 s.connectToService(url, p, name);
65 return p;
66 }
67
68 {%- for method in interface.methods %}
69 {%- if method.response_parameters == None %}
70 void {{method|name}}(
71 {%- for parameter in method.parameters -%}
72 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% endif %}
73 {%- endfor -%}
74 );
75 {%- else %}
76 void {{method|name}}(
77 {%- for parameter in method.parameters -%}
78 {{parameter.kind|dart_type}} {{parameter|name}},
79 {%- endfor -%}
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 ));
85 {%- endif %}
86 {%- endfor %}
87
88 {#--- Interface Constants #}
89 {%- for constant in interface.constants %}
90 static const {{constant.kind|dart_type}} {{constant|name}} = {{constant.resolv ed_value}};
91 {%- endfor %}
92 }
93
94 abstract class {{interface|name}}Interface
95 implements bindings.MojoInterface<{{interface|name}}>,
96 {{interface|name}} {
97 factory {{interface|name}}Interface([{{interface|name}} impl]) =>
98 new {{interface|name}}Stub.unbound(impl);
99
100 factory {{interface|name}}Interface.fromEndpoint(
101 core.MojoMessagePipeEndpoint endpoint,
102 [{{interface|name}} impl]) =>
103 new {{interface|name}}Stub.fromEndpoint(endpoint, impl);
104
105 factory {{interface|name}}Interface.fromMock(
106 {{interface|name}} mock) =>
107 new {{interface|name}}Proxy.fromMock(mock);
108 }
109
110 abstract class {{interface|name}}InterfaceRequest
111 implements bindings.MojoInterface<{{interface|name}}>,
112 {{interface|name}} {
113 factory {{interface|name}}InterfaceRequest() =>
114 new {{interface|name}}Proxy.unbound();
115 }
116
117 class _{{interface|name}}ProxyControl
118 extends bindings.ProxyMessageHandler
119 implements bindings.ProxyControl<{{interface|name}}> {
120 {{interface|name}} impl;
121
122 _{{interface|name}}ProxyControl.fromEndpoint(
123 core.MojoMessagePipeEndpoint endpoint) : super.fromEndpoint(endpoint);
124
125 _{{interface|name}}ProxyControl.fromHandle(
126 core.MojoHandle handle) : super.fromHandle(handle);
127
128 _{{interface|name}}ProxyControl.unbound() : super.unbound();
129
130 String get serviceName => {{interface|name}}.serviceName;
131
132 void handleResponse(bindings.ServiceMessage message) {
133 switch (message.header.type) {
134 {%- for method in interface.methods %}
135 {%- if method.response_parameters != None %}
136 {%- set response_struct = method.response_param_struct %}
137 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name:
138 Function callback = getCallback(message);
139 if (callback != null) {
140 var r = {{response_struct|name}}.deserialize(
141 message.payload);
142 callback(
143 {%- for param in method.response_parameters -%}
144 r.{{param|name}} {% if not loop.last %}, {% endif %}
145 {%- endfor -%}
146 );
147 }
148 break;
149 {%- endif %}
150 {%- endfor %}
151 default:
152 proxyError("Unexpected message type: ${message.header.type}");
153 close(immediate: true);
154 break;
155 }
156 }
157
158 @override
159 String toString() {
160 var superString = super.toString();
161 return "_{{interface|name}}ProxyControl($superString)";
162 }
163 }
164
165 class {{interface|name}}Proxy
166 extends bindings.Proxy<{{interface|name}}>
167 implements {{interface|name}},
168 {{interface|name}}Interface,
169 {{interface|name}}InterfaceRequest {
170 {{interface|name}}Proxy.fromEndpoint(
171 core.MojoMessagePipeEndpoint endpoint)
172 : super(new _{{interface|name}}ProxyControl.fromEndpoint(endpoint));
173
174 {{interface|name}}Proxy.fromHandle(core.MojoHandle handle)
175 : super(new _{{interface|name}}ProxyControl.fromHandle(handle));
176
177 {{interface|name}}Proxy.unbound()
178 : super(new _{{interface|name}}ProxyControl.unbound());
179
180 factory {{interface|name}}Proxy.fromMock({{interface|name}} mock) {
181 {{interface|name}}Proxy newMockedProxy =
182 new {{interface|name}}Proxy.unbound();
183 newMockedProxy.impl = mock;
184 return newMockedProxy;
185 }
186
187 static {{interface|name}}Proxy newFromEndpoint(
188 core.MojoMessagePipeEndpoint endpoint) {
189 assert(endpoint.setDescription("For {{interface|name}}Proxy"));
190 return new {{interface|name}}Proxy.fromEndpoint(endpoint);
191 }
192
193 {% for method in interface.methods %}
194 {%- if method.response_parameters == None %}
195 void {{method|name}}(
196 {%- for parameter in method.parameters -%}
197 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en dif %}
198 {%- endfor -%}
199 {%- set request_struct = method.param_struct -%}
200 ) {
201 if (impl != null) {
202 impl.{{method|name}}(
203 {%- for parameter in method.parameters -%}
204 {{parameter|name}}{% if not loop.last %}, {% endif %}
205 {%- endfor -%}
206 );
207 return;
208 }
209 if (!ctrl.isBound) {
210 ctrl.proxyError("The Proxy is closed.");
211 return;
212 }
213 var params = new {{request_struct|name}}();
214 {%- for parameter in method.parameters %}
215 params.{{parameter|name}} = {{parameter|name}};
216 {%- endfor %}
217 ctrl.sendMessage(params,
218 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name);
219 }
220 {%- else %}
221 {%- set request_struct = method.param_struct %}
222 {%- set response_struct = method.response_param_struct %}
223 void {{method|name}}(
224 {%- for parameter in method.parameters -%}
225 {{parameter.kind|dart_type}} {{parameter|name}},
226 {%- endfor -%}
227 void callback(
228 {%- for param in method.response_parameters -%}
229 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif %}
230 {%- endfor -%}
231 )) {
232 if (impl != null) {
233 impl.{{method|name}}(
234 {%- for parameter in method.parameters -%}
235 {{parameter|name}},
236 {%- endfor -%}
237 callback ?? bindings.DoNothingFunction.fn);
238 return;
239 }
240 var params = new {{request_struct|name}}();
241 {%- for parameter in method.parameters %}
242 params.{{parameter|name}} = {{parameter|name}};
243 {%- endfor %}
244 Function zonedCallback;
245 if ((callback == null) || identical(Zone.current, Zone.ROOT)) {
246 zonedCallback = callback;
247 } else {
248 Zone z = Zone.current;
249 zonedCallback = ((
250 {%- for param in method.response_parameters -%}
251 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif %}
252 {%- endfor -%}
253 ) {
254 z.bindCallback(() {
255 callback(
256 {%- for param in method.response_parameters -%}
257 {{param|name}}{% if not loop.last %}, {% endif %}
258 {%- endfor -%}
259 );
260 })();
261 });
262 }
263 ctrl.sendMessageWithRequestId(
264 params,
265 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name,
266 -1,
267 bindings.MessageHeader.kMessageExpectsResponse,
268 zonedCallback);
269 }
270 {%- endif %}
271 {%- endfor %}
272 }
273
274 class _{{interface|name}}StubControl
275 extends bindings.StubMessageHandler
276 implements bindings.StubControl<{{interface|name}}> {
277 {{interface|name}} _impl;
278
279 _{{interface|name}}StubControl.fromEndpoint(
280 core.MojoMessagePipeEndpoint endpoint, [{{interface|name}} impl])
281 : super.fromEndpoint(endpoint, autoBegin: impl != null) {
282 _impl = impl;
283 }
284
285 _{{interface|name}}StubControl.fromHandle(
286 core.MojoHandle handle, [{{interface|name}} impl])
287 : super.fromHandle(handle, autoBegin: impl != null) {
288 _impl = impl;
289 }
290
291 _{{interface|name}}StubControl.unbound([this._impl]) : super.unbound();
292
293 String get serviceName => {{interface|name}}.serviceName;
294
295 {% for method in interface.methods %}
296 {%- if method.response_parameters != None %}
297 {%- set response_struct = method.response_param_struct %}
298 Function _{{response_struct|name|lower_camel}}Responder(
299 int requestId) {
300 return (
301 {%- for param in method.response_parameters -%}
302 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif %}
303 {%- endfor -%}
304 ) {
305 var result = new {{response_struct|name}}();
306 {%- for param in method.response_parameters %}
307 result.{{param|name}} = {{param|name}};
308 {%- endfor %}
309 sendResponse(buildResponseWithId(
310 result,
311 _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name,
312 requestId,
313 bindings.MessageHeader.kMessageIsResponse));
314 };
315 }
316 {%- endif %}
317 {%- endfor %}
318
319 void handleMessage(bindings.ServiceMessage message) {
320 if (bindings.ControlMessageHandler.isControlMessage(message)) {
321 bindings.ControlMessageHandler.handleMessage(
322 this, {{interface.version}}, message);
323 return;
324 }
325 if (_impl == null) {
326 throw new core.MojoApiError("$this has no implementation set");
327 }
328 switch (message.header.type) {
329 {%- for method in interface.methods %}
330 {%- set request_struct = method.param_struct %}
331 case _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name:
332 {%- if method.parameters %}
333 var params = {{request_struct|name}}.deserialize(
334 message.payload);
335 {%- endif %}
336 {%- if method.response_parameters == None %}
337 _impl.{{method|name}}(
338 {%- for parameter in method.parameters -%}
339 params.{{parameter|name}}{% if not loop.last %}, {% endif %}
340 {%- endfor -%}
341 );
342 {%- else %}
343 {%- set response_struct = method.response_param_struct %}
344 _impl.{{method|name}}(
345 {%- for parameter in method.parameters -%}
346 params.{{parameter|name}}, {% endfor -%}
347 _{{response_struct|name|lower_camel}}Responder(message.header.requestI d));
348 {%- endif %}
349 break;
350 {%- endfor %}
351 default:
352 throw new bindings.MojoCodecError("Unexpected message name");
353 break;
354 }
355 }
356
357 {{interface|name}} get impl => _impl;
358 set impl({{interface|name}} d) {
359 if (d == null) {
360 throw new core.MojoApiError("$this: Cannot set a null implementation");
361 }
362 if (isBound && (_impl == null)) {
363 beginHandlingEvents();
364 }
365 _impl = d;
366 }
367
368 @override
369 void bind(core.MojoMessagePipeEndpoint endpoint) {
370 super.bind(endpoint);
371 if (!isOpen && (_impl != null)) {
372 beginHandlingEvents();
373 }
374 }
375
376 @override
377 String toString() {
378 var superString = super.toString();
379 return "_{{interface|name}}StubControl($superString)";
380 }
381
382 int get version => {{interface.version}};
383 }
384
385 class {{interface|name}}Stub
386 extends bindings.Stub<{{interface|name}}>
387 implements {{interface|name}},
388 {{interface|name}}Interface,
389 {{interface|name}}InterfaceRequest {
390 {{interface|name}}Stub.unbound([{{interface|name}} impl])
391 : super(new _{{interface|name}}StubControl.unbound(impl));
392
393 {{interface|name}}Stub.fromEndpoint(
394 core.MojoMessagePipeEndpoint endpoint, [{{interface|name}} impl])
395 : super(new _{{interface|name}}StubControl.fromEndpoint(endpoint, impl));
396
397 {{interface|name}}Stub.fromHandle(
398 core.MojoHandle handle, [{{interface|name}} impl])
399 : super(new _{{interface|name}}StubControl.fromHandle(handle, impl));
400
401 static {{interface|name}}Stub newFromEndpoint(
402 core.MojoMessagePipeEndpoint endpoint) {
403 assert(endpoint.setDescription("For {{interface|name}}Stub"));
404 return new {{interface|name}}Stub.fromEndpoint(endpoint);
405 }
406
407 {% for method in interface.methods %}
408 {%- if method.response_parameters == None %}
409 void {{method|name}}(
410 {%- for parameter in method.parameters -%}
411 {{parameter.kind|dart_type}} {{parameter|name}}{% if not loop.last %}, {% en dif %}
412 {%- endfor -%}
413 ) {
414 return impl.{{method|name}}(
415 {%- for parameter in method.parameters -%}
416 {{parameter|name}}{% if not loop.last %}, {% endif %}
417 {%- endfor -%}
418 );
419 }
420 {%- else %}
421 void {{method|name}}(
422 {%- for parameter in method.parameters -%}
423 {{parameter.kind|dart_type}} {{parameter|name}},
424 {%- endfor -%}
425 void callback(
426 {%- for param in method.response_parameters -%}
427 {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif %}
428 {%- endfor -%}
429 )) {
430 return impl.{{method|name}}(
431 {%- for parameter in method.parameters -%}
432 {{parameter|name}},
433 {%- endfor -%}
434 callback);
435 }
436 {%- endif %}
437 {%- endfor %}
438 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698