| 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 a21eb432c074b8425d06dbe813d23b4c5309b656..ed666de0b7a14701e490273b1849c00cbc9a9134 100644
|
| --- a/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
|
| +++ b/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
|
| @@ -26,8 +26,9 @@ abstract class {{interface.name}}Calls {
|
| {% else %}
|
| 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 %}
|
| + {{parameter.kind|dart_decl_type}} {{parameter.name}},
|
| {%- endfor -%}
|
| + [int requestId = -1]
|
| ) {
|
| assert(isOpen);
|
| var params = new {{interface.name}}_{{method.name}}_Params();
|
| @@ -37,7 +38,7 @@ abstract class {{interface.name}}Calls {
|
| return enqueueMessageWithRequestID(
|
| {{interface.name}}_{{method.name}}_Params,
|
| k{{interface.name}}_{{method.name}}_name,
|
| - 0,
|
| + requestId,
|
| bindings.kMessageExpectsResponse,
|
| params);
|
| }
|
| @@ -48,13 +49,16 @@ abstract class {{interface.name}}Calls {
|
| class {{interface.name}}Client extends bindings.Client with {{interface.name}}Calls {
|
| {{interface.name}}Client(core.MojoMessagePipeEndpoint endpoint) : super(endpoint);
|
|
|
| + {{interface.name}}Client.fromHandle(int handle) : super.fromHandle(handle);
|
| +
|
| void handleResponse(bindings.MessageReader reader) {
|
| switch (reader.name) {
|
| {%- for method in interface.methods %}
|
| {%- if method.response_parameters != None %}
|
| case k{{interface.name}}_{{method.name}}_name:
|
| var r = reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseParams);
|
| - Completer c = completerQueue.removeAt(0);
|
| + Completer c = completerMap[reader.requestID];
|
| + completerMap[reader.requestID] = null;
|
| c.complete(r);
|
| break;
|
| {%- endif %}
|
| @@ -73,6 +77,10 @@ with {{imported_from[interface.client]}}{{interface.client}}Calls
|
| {% endif -%} {
|
| {{interface.name}}Interface(core.MojoMessagePipeEndpoint endpoint) : super(endpoint);
|
|
|
| + {{interface.name}}Interface.fromHandle(int handle) : super.fromHandle(handle);
|
| +
|
| + static const String name = '{{namespace|replace(".","::")}}::{{interface.name}}';
|
| +
|
| {% for method in interface.methods %}
|
| {%- if method.response_parameters == None %}
|
| void {{method.name|stylize_method}}(
|
| @@ -89,25 +97,32 @@ with {{imported_from[interface.client]}}{{interface.client}}Calls
|
| {%- endif %}
|
| {%- endfor %}
|
|
|
| - bindings.Message handleMessage(bindings.MessageReader reader) {
|
| + Future<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 %}
|
| - {{method.name|stylize_method}}(params);
|
| -{%- else %}
|
| - var response = {{method.name|stylize_method}}(
|
| + {{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);
|
| +{%- else %}
|
| + return {{method.name|stylize_method}}(
|
| + {%- for parameter in method.parameters -%}
|
| + params.{{parameter.name}}{% if not loop.last %}, {% endif %}
|
| + {%- endfor -%}
|
| + ).then((response) {
|
| + if (response != null) {
|
| + return buildResponseWithID(
|
| + {{interface.name}}_{{method.name}}_ResponseParams,
|
| + k{{interface.name}}_{{method.name}}_name,
|
| + reader.requestID,
|
| + bindings.kMessageIsResponse,
|
| + response);
|
| + }
|
| + });
|
| {%- endif %}
|
| break;
|
| {%- endfor %}
|
|
|