Index: mojo/dart/test/interface_test.dart |
diff --git a/mojo/dart/test/interface_test.dart b/mojo/dart/test/interface_test.dart |
index bb16df4835fb7142754b7b1c461bdf2628b46644..50a420160f971d298dcbf2a1e17895c9bf2a9550 100644 |
--- a/mojo/dart/test/interface_test.dart |
+++ b/mojo/dart/test/interface_test.dart |
@@ -10,6 +10,8 @@ import 'dart:typed_data'; |
import 'package:mojo/dart/testing/expect.dart'; |
+const int kEchoesCount = 100; |
+ |
class EchoString { |
String a = null; |
@@ -44,22 +46,25 @@ const int kEchoStringResponse_name = 1; |
class EchoInterface extends bindings.Interface { |
EchoInterface(core.MojoMessagePipeEndpoint endpoint) : super(endpoint); |
- EchoStringResponse echoString(EchoString es) { |
+ Future<EchoStringResponse> echoString(EchoString es) { |
var response = new EchoStringResponse(); |
response.a = es.a; |
- return response; |
+ return new Future.value(response); |
} |
- bindings.Message handleMessage(bindings.MessageReader reader) { |
+ Future<bindings.Message> handleMessage(bindings.MessageReader reader) { |
switch (reader.name) { |
case kEchoString_name: |
var es = reader.decodeStruct(EchoString); |
- var response = echoString(es); |
- return buildResponseWithID(EchoStringResponse, |
- kEchoStringResponse_name, |
- reader.requestID, |
- bindings.kMessageIsResponse, |
- response); |
+ return echoString(es).then((response) { |
+ if (response != null) { |
+ return buildResponseWithID(EchoStringResponse, |
+ kEchoStringResponse_name, |
+ reader.requestID, |
+ bindings.kMessageIsResponse, |
+ response); |
+ } |
+ }); |
break; |
default: |
throw new Exception("Unexpected case"); |
@@ -79,7 +84,7 @@ class EchoClient extends bindings.Client { |
es.a = a; |
return enqueueMessageWithRequestID(EchoString, |
kEchoString_name, |
- 0, |
+ -1, |
bindings.kMessageExpectsResponse, |
es); |
} |
@@ -88,7 +93,8 @@ class EchoClient extends bindings.Client { |
switch (reader.name) { |
case kEchoStringResponse_name: |
var esr = reader.decodeStruct(EchoStringResponse); |
- Completer c = completerQueue.removeAt(0); |
+ Completer c = completerMap[reader.requestID]; |
+ completerMap[reader.requestID] = null; |
c.complete(esr); |
break; |
default: |
@@ -112,7 +118,7 @@ Future<bool> runTest() async { |
var client = new EchoClient(pipe.endpoints[0]); |
await Isolate.spawn(providerIsolate, pipe.endpoints[1]); |
- int n = 100; |
+ int n = kEchoesCount; |
int count = 0; |
client.open(); |
for (int i = 0; i < n; i++) { |
@@ -135,7 +141,7 @@ Future runAwaitTest() async { |
var client = new EchoClient(pipe.endpoints[0]); |
await Isolate.spawn(providerIsolate, pipe.endpoints[1]); |
- int n = 100; |
+ int n = kEchoesCount; |
client.open(); |
for (int i = 0; i < n; i++) { |
var response = await client.echoString("Hello"); |
@@ -146,6 +152,6 @@ Future runAwaitTest() async { |
main() async { |
- Expect.equals(100, await runTest()); |
+ Expect.equals(kEchoesCount, await runTest()); |
await runAwaitTest(); |
} |