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

Side by Side Diff: mojo/dart/test/ping_pong_test.dart

Issue 1414483010: Dart: Use a RawReceivePort to receive events for Mojo handles. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 1 month 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
« no previous file with comments | « mojo/dart/test/handle_watcher_test.dart ('k') | mojo/dart/test/simple_handle_watcher_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:isolate'; 6 import 'dart:isolate';
7 import 'dart:typed_data'; 7 import 'dart:typed_data';
8 8
9 import 'package:mojo/core.dart' as core; 9 import 'package:mojo/core.dart' as core;
10 10
(...skipping 18 matching lines...) Expand all
29 result = endpoint.read(bytes); 29 result = endpoint.read(bytes);
30 assert(result != null); 30 assert(result != null);
31 assert(size == result.bytesRead); 31 assert(size == result.bytesRead);
32 32
33 // Convert to a string and check. 33 // Convert to a string and check.
34 String msg = stringOfByteData(bytes); 34 String msg = stringOfByteData(bytes);
35 assert(expected == msg); 35 assert(expected == msg);
36 } 36 }
37 37
38 void pipeTestIsolate(core.MojoMessagePipeEndpoint endpoint) { 38 void pipeTestIsolate(core.MojoMessagePipeEndpoint endpoint) {
39 var eventStream = new core.MojoEventStream(endpoint.handle); 39 var eventSubscription = new core.MojoEventSubscription(endpoint.handle);
40 eventStream.listen((List<int> event) { 40 eventSubscription.subscribe((List<int> event) {
41 var mojoSignals = new core.MojoHandleSignals(event[1]); 41 var mojoSignals = new core.MojoHandleSignals(event[1]);
42 if (mojoSignals.isReadWrite) { 42 if (mojoSignals.isReadWrite) {
43 throw 'We should only be reading or writing, not both.'; 43 throw 'We should only be reading or writing, not both.';
44 } else if (mojoSignals.isReadable) { 44 } else if (mojoSignals.isReadable) {
45 expectStringFromEndpoint("Ping", endpoint); 45 expectStringFromEndpoint("Ping", endpoint);
46 eventStream.enableWriteEvents(); 46 eventSubscription.enableWriteEvents();
47 } else if (mojoSignals.isWritable) { 47 } else if (mojoSignals.isWritable) {
48 endpoint.write(byteDataOfString("Pong")); 48 endpoint.write(byteDataOfString("Pong"));
49 eventStream.enableReadEvents(); 49 eventSubscription.enableReadEvents();
50 } else if (mojoSignals.isPeerClosed) { 50 } else if (mojoSignals.isPeerClosed) {
51 eventStream.close(); 51 eventSubscription.close();
52 } else { 52 } else {
53 throw 'Unexpected event.'; 53 throw 'Unexpected event.';
54 } 54 }
55 }); 55 });
56 } 56 }
57 57
58 main() { 58 main() {
59 var pipe = new core.MojoMessagePipe(); 59 var pipe = new core.MojoMessagePipe();
60 var endpoint = pipe.endpoints[0]; 60 var endpoint = pipe.endpoints[0];
61 var eventStream = new core.MojoEventStream(endpoint.handle); 61 var eventSubscription = new core.MojoEventSubscription(endpoint.handle);
62 Isolate.spawn(pipeTestIsolate, pipe.endpoints[1]).then((_) { 62 Isolate.spawn(pipeTestIsolate, pipe.endpoints[1]).then((_) {
63 eventStream.listen((List<int> event) { 63 eventSubscription.subscribe((List<int> event) {
64 var mojoSignals = new core.MojoHandleSignals(event[1]); 64 var mojoSignals = new core.MojoHandleSignals(event[1]);
65 if (mojoSignals.isReadWrite) { 65 if (mojoSignals.isReadWrite) {
66 throw 'We should only be reading or writing, not both.'; 66 throw 'We should only be reading or writing, not both.';
67 } else if (mojoSignals.isReadable) { 67 } else if (mojoSignals.isReadable) {
68 expectStringFromEndpoint("Pong", endpoint); 68 expectStringFromEndpoint("Pong", endpoint);
69 eventStream.close(); 69 eventSubscription.close();
70 } else if (mojoSignals.isWritable) { 70 } else if (mojoSignals.isWritable) {
71 endpoint.write(byteDataOfString("Ping")); 71 endpoint.write(byteDataOfString("Ping"));
72 eventStream.enableReadEvents(); 72 eventSubscription.enableReadEvents();
73 } else if (mojoSignals.isPeerClosed) { 73 } else if (mojoSignals.isPeerClosed) {
74 throw 'This end should close first.'; 74 throw 'This end should close first.';
75 } else { 75 } else {
76 throw 'Unexpected event.'; 76 throw 'Unexpected event.';
77 } 77 }
78 }); 78 });
79 eventStream.enableWriteEvents(); 79 eventSubscription.enableWriteEvents();
80 }); 80 });
81 } 81 }
OLDNEW
« no previous file with comments | « mojo/dart/test/handle_watcher_test.dart ('k') | mojo/dart/test/simple_handle_watcher_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698