OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 // | 4 // |
5 // VMOptions= | 5 // VMOptions= |
6 // VMOptions=--short_socket_read | 6 // VMOptions=--short_socket_read |
7 // VMOptions=--short_socket_write | 7 // VMOptions=--short_socket_write |
8 // VMOptions=--short_socket_read --short_socket_write | 8 // VMOptions=--short_socket_read --short_socket_write |
9 | 9 |
10 import "dart:async"; | 10 import "dart:async"; |
(...skipping 19 matching lines...) Expand all Loading... |
30 // Be sure to close as subscription.cancel may not be called, if | 30 // Be sure to close as subscription.cancel may not be called, if |
31 // backlog prevents acceptCount to grow to socketCount / 2. | 31 // backlog prevents acceptCount to grow to socketCount / 2. |
32 server.close(); | 32 server.close(); |
33 } | 33 } |
34 } | 34 } |
35 | 35 |
36 var subscription; | 36 var subscription; |
37 subscription = server.listen((client) { | 37 subscription = server.listen((client) { |
38 client.writeEventsEnabled = false; | 38 client.writeEventsEnabled = false; |
39 client.listen((event) { | 39 client.listen((event) { |
40 switch(event) { | 40 switch (event) { |
41 case RawSocketEvent.READ: | 41 case RawSocketEvent.READ: |
42 client.read(); | 42 client.read(); |
43 break; | 43 break; |
44 case RawSocketEvent.READ_CLOSED: | 44 case RawSocketEvent.READ_CLOSED: |
45 client.shutdown(SocketDirection.SEND); | 45 client.shutdown(SocketDirection.SEND); |
46 break; | 46 break; |
47 case RawSocketEvent.WRITE: | 47 case RawSocketEvent.WRITE: |
48 Expect.fail("No write event expected"); | 48 Expect.fail("No write event expected"); |
49 break; | 49 break; |
50 } | 50 } |
(...skipping 12 matching lines...) Expand all Loading... |
63 }); | 63 }); |
64 } | 64 } |
65 }); | 65 }); |
66 | 66 |
67 // Connect a number of sockets. | 67 // Connect a number of sockets. |
68 for (int i = 0; i < socketCount; i++) { | 68 for (int i = 0; i < socketCount; i++) { |
69 RawSocket.connect("127.0.0.1", server.port).then((socket) { | 69 RawSocket.connect("127.0.0.1", server.port).then((socket) { |
70 bool done = false; | 70 bool done = false; |
71 var subscription; | 71 var subscription; |
72 subscription = socket.listen((event) { | 72 subscription = socket.listen((event) { |
73 switch(event) { | 73 switch (event) { |
74 case RawSocketEvent.READ: | 74 case RawSocketEvent.READ: |
75 Expect.fail("No read event expected"); | 75 Expect.fail("No read event expected"); |
76 break; | 76 break; |
77 case RawSocketEvent.READ_CLOSED: | 77 case RawSocketEvent.READ_CLOSED: |
78 done = true; | 78 done = true; |
79 doneCount++; | 79 doneCount++; |
80 checkDone(); | 80 checkDone(); |
81 break; | 81 break; |
82 case RawSocketEvent.WRITE: | 82 case RawSocketEvent.WRITE: |
83 // We don't care if this write succeeds, so we don't check | 83 // We don't care if this write succeeds, so we don't check |
84 // the return value (number of bytes written). | 84 // the return value (number of bytes written). |
85 socket.write([1,2,3]); | 85 socket.write([1, 2, 3]); |
86 socket.shutdown(SocketDirection.SEND); | 86 socket.shutdown(SocketDirection.SEND); |
87 break; | 87 break; |
88 } | 88 } |
89 }, | 89 }, onDone: () { |
90 onDone: () { | |
91 if (!done) { | 90 if (!done) { |
92 doneCount++; | 91 doneCount++; |
93 checkDone(); | 92 checkDone(); |
94 } | 93 } |
95 }, | 94 }, onError: (e) { |
96 onError: (e) { | |
97 // "Connection reset by peer" errors are handled here. | 95 // "Connection reset by peer" errors are handled here. |
98 errorCount++; | 96 errorCount++; |
99 checkDone(); | 97 checkDone(); |
100 }, cancelOnError: true); | 98 }, cancelOnError: true); |
101 }).catchError((e) { | 99 }).catchError((e) { |
102 // "Connection actively refused by host" errors are handled here. | 100 // "Connection actively refused by host" errors are handled here. |
103 earlyErrorCount++; | 101 earlyErrorCount++; |
104 checkDone(); | 102 checkDone(); |
105 }); | 103 }); |
106 } | 104 } |
107 }); | 105 }); |
108 } | 106 } |
109 | 107 |
110 void main() { | 108 void main() { |
111 testCancelResubscribeServerSocket(10, 20); | 109 testCancelResubscribeServerSocket(10, 20); |
112 testCancelResubscribeServerSocket(20, 5); | 110 testCancelResubscribeServerSocket(20, 5); |
113 } | 111 } |
OLD | NEW |