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 |
index ddc1de801e1789f7f6e029f8d7967e9207c7d4dd..a21eb432c074b8425d06dbe813d23b4c5309b656 100644 |
--- a/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl |
+++ b/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl |
@@ -2,13 +2,14 @@ |
const int k{{interface.name}}_{{method.name}}_name = {{method.ordinal}}; |
{%- endfor %} |
- |
-class {{interface.name}}Client extends bindings.Client { |
- {{interface.name}}Client(core.MojoMessagePipeEndpoint endpoint) : super(endpoint); |
+abstract class {{interface.name}}Calls { |
+ void enqueueMessage(Type t, int name, Object msg); |
+ Future enqueueMessageWithRequestID(Type t, int name, int id, Object msg); |
+ bool get isOpen; |
{%- for method in interface.methods %} |
{%- if method.response_parameters == None %} |
- void {{method.name|stylize_method}}( |
+ void call{{method.name}}( |
{%- for parameter in method.parameters -%} |
{{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %}, {% endif %} |
{%- endfor -%} |
@@ -23,7 +24,7 @@ class {{interface.name}}Client extends bindings.Client { |
params); |
} |
{% else %} |
- Future<{{interface.name}}_{{method.name}}_ResponseParams> {{method.name|stylize_method}}( |
+ Future<{{interface.name}}_{{method.name}}_ResponseParams> call{{method.name}}( |
{%- for parameter in method.parameters -%} |
{{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %}, {% endif %} |
{%- endfor -%} |
@@ -36,11 +37,16 @@ class {{interface.name}}Client extends bindings.Client { |
return enqueueMessageWithRequestID( |
{{interface.name}}_{{method.name}}_Params, |
k{{interface.name}}_{{method.name}}_name, |
+ 0, |
bindings.kMessageExpectsResponse, |
params); |
} |
{%- endif %} |
{%- 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) { |
@@ -61,22 +67,45 @@ class {{interface.name}}Client extends bindings.Client { |
} |
-class {{interface.name}}Interface extends bindings.Interface { |
+abstract class {{interface.name}}Interface extends bindings.Interface |
+{% if interface.client != None -%} |
+with {{imported_from[interface.client]}}{{interface.client}}Calls |
+{% endif -%} { |
{{interface.name}}Interface(core.MojoMessagePipeEndpoint endpoint) : super(endpoint); |
- bindings.Message handleMessage(bindings.MessageReader reader, |
- Function messageHandler) { |
+{% for method in interface.methods %} |
+{%- if method.response_parameters == None %} |
+ void {{method.name|stylize_method}}( |
+ {%- for parameter in method.parameters -%} |
+ {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %}, {% endif %} |
+ {%- endfor -%} |
+ ); |
+{%- else %} |
+ {{interface.name}}_{{method.name}}_ResponseParams {{method.name|stylize_method}}( |
+ {%- for parameter in method.parameters -%} |
+ {{parameter.kind|dart_decl_type}} {{parameter.name}}{% if not loop.last %}, {% endif %} |
+ {%- endfor -%} |
+ ); |
+{%- endif %} |
+{%- endfor %} |
+ |
+ bindings.Message handleMessage(bindings.MessageReader reader) { |
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 %} |
- messageHandler(params); |
+ {{method.name|stylize_method}}(params); |
{%- else %} |
- var response = messageHandler(params); |
+ var response = {{method.name|stylize_method}}( |
+ {%- for parameter in method.parameters -%} |
+ params.{{parameter.name}}{% if not loop.last %}, {% endif %} |
+ {%- endfor -%} |
+ ); |
return buildResponseWithID( |
{{interface.name}}_{{method.name}}_ResponseParams, |
k{{interface.name}}_{{method.name}}_name, |
+ reader.requestID, |
bindings.kMessageIsResponse, |
response); |
{%- endif %} |