| Index: mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
|
| diff --git a/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl b/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..706cdc8f72f9b740624121172fa65b856a7e1cb1
|
| --- /dev/null
|
| +++ b/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
|
| @@ -0,0 +1,105 @@
|
| +{%- for method in interface.methods %}
|
| +const int k{{interface.name}}_{{method.name}}_name = {{method.ordinal}};
|
| +{%- endfor %}
|
| +
|
| +
|
| +abstract class {{interface.name}}Calls {
|
| + List get send_queue;
|
| + core.MojoHandle get handle;
|
| +
|
| + Future enqueueMessage(Type t, int name, Object msg);
|
| +
|
| +{%- for method in interface.methods %}
|
| + Future {{method.name|stylize_method}}(
|
| +{%- for parameter in method.parameters -%}
|
| + {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %}, {% endif %}
|
| +{%- endfor -%}
|
| + ) {
|
| + var params = new {{interface.name}}_{{method.name}}_Params();
|
| +{%- for parameter in method.parameters %}
|
| + params.{{parameter.name}} = {{parameter.name}};
|
| +{%- endfor %}
|
| + return enqueueMessage({{interface.name}}_{{method.name}}_Params,
|
| + k{{interface.name}}_{{method.name}}_name,
|
| + params);
|
| + }
|
| +{%- endfor %}
|
| +}
|
| +
|
| +
|
| +class {{interface.name}}Client extends bindings.Client with {{interface.name}}Calls {
|
| + {{interface.name}}Client(core.MojoMessagePipeEndpoint endpoint) : super(endpoint);
|
| +
|
| + void handleResponse(bindings.MessageReader reader) {
|
| + switch (reader.name) {
|
| +{%- for method in interface.methods %}
|
| + case k{{interface.name}}_{{method.name}}_name:
|
| +{%- if method.response_parameters != None %}
|
| + var r = reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseParams);
|
| + Completer c = completer_queue.removeAt(0);
|
| + c.complete(r);
|
| + break;
|
| +{%- endif %}
|
| +{%- endfor %}
|
| + default:
|
| + throw new Exception("Unexpected message name");
|
| + break;
|
| + }
|
| + }
|
| +}
|
| +
|
| +
|
| +abstract class {{interface.name}}Interface extends bindings.Interface {
|
| + {{interface.name}}Interface(core.MojoMessagePipeEndpoint endpoint) : super(endpoint);
|
| +
|
| +{% for method in interface.methods %}
|
| +{%- if method.response_parameters == None %}
|
| + void {{method.name|stylize_method}}({{interface.name}}_{{method.name}}_Params params);
|
| +{%- else %}
|
| + Future<{{interface.name}}_{{method.name}}_ResponseParams> {{method.name|stylize_method}}({{interface.name}}_{{method.name}}_Params);
|
| +{%- endif %}
|
| +{%- endfor %}
|
| +
|
| + Future<bindings.Message> handleMessage(bindings.MessageReader reader) {
|
| + var result = null;
|
| + switch (reader.name) {
|
| +{%- for method in interface.methods %}
|
| + case k{{interface.name}}_{{method.name}}_name:
|
| + var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Params);
|
| +{%- if method.response_parameters == None %}
|
| + {{method.name|stylize_method}}(params);
|
| +{%- else %}
|
| + var response_message = new Completer();
|
| + {{method.name|stylize_method}}(params).then((response) {
|
| + buildResponse(response_message,
|
| + {{interface.name}}_{{method.name}}_ResponseParams,
|
| + k{{interface.name}}_{{method.name}}_name,
|
| + response);
|
| + });
|
| + result = response_message.future;
|
| +{%- endif %}
|
| + break;
|
| +{%- endfor %}
|
| + default:
|
| + throw new Exception("Unexpected message name");
|
| + break;
|
| + }
|
| + return result;
|
| + }
|
| +}
|
| +
|
| +
|
| +{#--- TODO(zra): Validation #}
|
| +
|
| +
|
| +{#--- Interface Constants #}
|
| +{%- for constant in interface.constants %}
|
| +final {{constant.name}} = {{constant.value|expression_to_text}},
|
| +{%- endfor %}
|
| +
|
| +
|
| +{#--- Interface Enums #}
|
| +{%- from "enum_definition.tmpl" import enum_def -%}
|
| +{%- for enum in interface.enums %}
|
| + {{ enum_def("", enum) }}
|
| +{%- endfor %}
|
|
|